近期在看K8s的相关文档,看到通过YAML文件创建资源时,对不同资源应该怎么选择apiVersion不太理解,网上查找了一些相关的内容,记录如下:
首先,我们可以通过kubectl api-resources
命令获取到 当前K8s集群支持的所有 API 资源
kubectl api-resources -o wide
- NAME 资源名称
- SHORTNAMES 资源名称简写
- APIGROUP => apiVersion
- KIND 资源类型
- VERBS 可用的方法
我们可以通过制定api-group
参数来获取特定 API 组的 API 资源
kubectl api-resources --api-group apps -o wide
然后使用kubectl explain命令获取有关资源的详细信息
kubectl explain deploy
通过上图我们可以看到
Deployment
的apiVersion
对应的版本号为extensions/v1beta1
,因此我们通过上述两个命令就基本可以确定对于某个资源来说应该选择哪一个版本号了
需要注意的是 explain命令可能会显示旧的 group/version,我们可以通过 –api-version参数显示设置它
kubectl explain replicaset --api-version apps/v1
另外,我们可以使用kubectl api-versions
获取集群支持的所有API版本
kubectl api-versions
使用以下命令检查特定的 group/version是否可以用于某些资源,如果不可用会返回一个错误信息
kubectl get deployments.v1.apps -n kube-system