目录
K8s的apiVersion由group和version组成,不同的kind有对应的不同group,不同的group再根据不同的k8s版本有不同的version。因此在编写不同类型的yaml,如何选择apiVersion,需要以下几个步骤:
1、确定kind:
确定kind就比较方便了,自己需要编写什么类型的yaml就可以确定。比如:namespace、deployment、service、pod等。
2、寻找group:
通过在当前使用的k8s服务器上,执行命令查看所有kind与group的关系,然后选择出自己需要的kind对应的group:
执行命令:
kubectl api-resources -o wide
然后查看结果的KIIND、APIGROUP两列。说明:如果group为空表示没有group。
例如:1.17.0版本的k8s的查询结果:
Kind | group |
Binding |
|
ComponentStatus |
|
ConfigMap |
|
Endpoints |
|
Event |
|
LimitRange |
|
Namespace |
|
Node |
|
PersistentVolumeClaim |
|
PersistentVolume |
|
Pod |
|
PodTemplate |
|
ReplicationController |
|
ResourceQuota |
|
Secret |
|
ServiceAccount |
|
Service |
|
MutatingWebhookConfiguration | admissionregistration.k8s.io |
ValidatingWebhookConfiguration | admissionregistration.k8s.io |
CustomResourceDefinition | apiextensions.k8s.io |
APIService | apiregistration.k8s.io |
ControllerRevision | apps |
DaemonSet | apps |
Deployment | apps |
ReplicaSet | apps |
StatefulSet | apps |
TokenReview | authentication.k8s.io |
LocalSubjectAccessReview | authorization.k8s.io |
SelfSubjectAccessReview | authorization.k8s.io |
SelfSubjectRulesReview | authorization.k8s.io |
SubjectAccessReview | authorization.k8s.io |
HorizontalPodAutoscaler | autoscaling |
CronJob | batch |
Job | batch |
CertificateSigningRequest | certificates.k8s.io |
Lease | coordination.k8s.io |
EndpointSlice | discovery.k8s.io |
Event | events.k8s.io |
Ingress | extensions |
Ingress | networking.k8s.io |
NetworkPolicy | networking.k8s.io |
RuntimeClass | node.k8s.io |
PodDisruptionBudget | policy |
PodSecurityPolicy | policy |
ClusterRoleBinding | rbac.authorization.k8s.io |
ClusterRole | rbac.authorization.k8s.io |
RoleBinding | rbac.authorization.k8s.io |
Role | rbac.authorization.k8s.io |
PriorityClass | scheduling.k8s.io |
CSIDriver | storage.k8s.io |
CSINode | storage.k8s.io |
StorageClass | storage.k8s.io |
VolumeAttachment | storage.k8s.io |
3、确定apiVersion:
通过在当前使用的k8s服务器上,执行命令查看所有group对应的apiVersion,然后根据自己需要的group,得到最终需要的apiVersion。
执行命令:
kubectl api-versions
说明:查询结果中斜线前面为group,斜线后面为version,如果没有斜线,那么就是group为空,只有version。
例如:1.17.0版本的k8s的查询结果:
apiVersion |
admissionregistration.k8s.io/v1 |
admissionregistration.k8s.io/v1beta1 |
apiextensions.k8s.io/v1 |
apiextensions.k8s.io/v1beta1 |
apiregistration.k8s.io/v1 |
apiregistration.k8s.io/v1beta1 |
apps/v1 |
authentication.k8s.io/v1 |
authentication.k8s.io/v1beta1 |
authorization.k8s.io/v1 |
authorization.k8s.io/v1beta1 |
autoscaling/v1 |
autoscaling/v2beta1 |
autoscaling/v2beta2 |
batch/v1 |
batch/v1beta1 |
certificates.k8s.io/v1beta1 |
coordination.k8s.io/v1 |
coordination.k8s.io/v1beta1 |
discovery.k8s.io/v1beta1 |
events.k8s.io/v1beta1 |
extensions/v1beta1 |
networking.k8s.io/v1 |
networking.k8s.io/v1beta1 |
node.k8s.io/v1beta1 |
policy/v1beta1 |
rbac.authorization.k8s.io/v1 |
rbac.authorization.k8s.io/v1beta1 |
scheduling.k8s.io/v1 |
scheduling.k8s.io/v1beta1 |
storage.k8s.io/v1 |
storage.k8s.io/v1beta1 |
v1 |
k8s官方将apiversion分成了三个大类型,alpha、beta、stable。
Alpha: 未经充分测试,可能存在bug,功能可能随时调整或删除。
Beta: 经过充分测试,功能细节可能会在未来进行修改。
Stable: 稳定版本,将会得到持续支持。
因此,根据最终自己需要的apiVersion,有限选择稳定版本的,其次是选择带有beta版本的。