在初学Kubernetes的yaml文件时,很苦恼,到底怎么就找到哪个kind对应哪个apiVersion,曾在本站写过一篇Kubernetes的yaml文件使用语法及简单操作,然而仅仅打算靠着自己慢慢积累将apiVersion对应的kind一一记录下来,甚至也问过很多大佬,怎么才能知道,大佬告诉我用的多了就知道了。这样的回答也是很无奈。可能大佬也还没想过这种问题。

而且,随着版本的改变apiVersion所支持的kind也会改变,所以更得知道怎么样灵活的去查看。

工作之后,偶然在查找资料时,让我又想起了这个事,决定不信邪的再查一次,皇天不负有心人,还是让我找到了,咱也不清楚这是Kubernetes新加的功能,还是一直就有,反正以前没查到。不说废话了,直接看吧

api-versions

通过kubectl api-versions,可以看到一共有多少apiVersion可以使用

$ kubectl api-versions 
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/v1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
discovery.k8s.io/v1beta1
events.k8s.io/v1
events.k8s.io/v1beta1
extensions/v1beta1
flowcontrol.apiserver.k8s.io/v1beta1
kubeovn.io/v1
metrics.k8s.io/v1beta1
monitoring.coreos.com/v1
monitoring.coreos.com/v1alpha1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1
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

api-resources

可以通过查看api-resources来查看受支持的资源。

这里的资源包括Kubernetes自带的,和用户自建的CRD

第三列和第五列就可以看到title为APIVERSIONKIND,其实到此就已经可以明确如何对应使用资源了。

$ kubectl api-resources 
NAME                           SHORTNAMES   APIVERSION                           NAMESPACED   KIND
bindings                                    v1                                   true         Binding
componentstatuses              cs           v1                                   false        ComponentStatus
configmaps                     cm           v1                                   true         ConfigMap
endpoints                      ep           v1                                   true         Endpoints
events                         ev           v1                                   true         Event
limitranges                    limits       v1                                   true         LimitRange
namespaces                     ns           v1                                   false        Namespace
nodes                          no           v1                                   false        Node
persistentvolumeclaims         pvc          v1                                   true         PersistentVolumeClaim
persistentvolumes              pv           v1                                   false        PersistentVolume
pods                           po           v1                                   true         Pod
podtemplates                                v1                                   true         PodTemplate
replicationcontrollers         rc           v1                                   true         ReplicationController
resourcequotas                 quota        v1                                   true         ResourceQuota
secrets                                     v1                                   true         Secret
serviceaccounts                sa           v1                                   true         ServiceAccount
services                       svc          v1                                   true         Service
mutatingwebhookconfigurations               admissionregistration.k8s.io/v1      false        MutatingWebhookConfiguration
validatingwebhookconfigurations             admissionregistration.k8s.io/v1      false        ValidatingWebhookConfiguration
customresourcedefinitions      crd,crds     apiextensions.k8s.io/v1              false        CustomResourceDefinition
apiservices                                 apiregistration.k8s.io/v1            false        APIService
controllerrevisions                         apps/v1                              true         ControllerRevision
daemonsets                     ds           apps/v1                              true         DaemonSet
deployments                    deploy       apps/v1                              true         Deployment
replicasets                    rs           apps/v1                              true         ReplicaSet
statefulsets                   sts          apps/v1                              true         StatefulSet
tokenreviews                                authentication.k8s.io/v1             false        TokenReview
localsubjectaccessreviews                   authorization.k8s.io/v1              true         LocalSubjectAccessReview
selfsubjectaccessreviews                    authorization.k8s.io/v1              false        SelfSubjectAccessReview
selfsubjectrulesreviews                     authorization.k8s.io/v1              false        SelfSubjectRulesReview
subjectaccessreviews                        authorization.k8s.io/v1              false        SubjectAccessReview
horizontalpodautoscalers       hpa          autoscaling/v1                       true         HorizontalPodAutoscaler
cronjobs                       cj           batch/v1beta1                        true         CronJob
jobs                                        batch/v1                             true         Job
certificatesigningrequests     csr          certificates.k8s.io/v1               false        CertificateSigningRequest
leases                                      coordination.k8s.io/v1               true         Lease
endpointslices                              discovery.k8s.io/v1beta1             true         EndpointSlice
events                         ev           events.k8s.io/v1                     true         Event
ingresses                      ing          extensions/v1beta1                   true         Ingress
flowschemas                                 flowcontrol.apiserver.k8s.io/v1beta1 false        FlowSchema
prioritylevelconfigurations                 flowcontrol.apiserver.k8s.io/v1beta1 false        PriorityLevelConfiguration
ips                            ip           kubeovn.io/v1                        false        IP
subnets                        subnet       kubeovn.io/v1                        false        Subnet
vlans                          vlan         kubeovn.io/v1                        false        Vlan
vpcs                           vpc          kubeovn.io/v1                        false        Vpc
ingressclasses                              networking.k8s.io/v1                 false        IngressClass
ingresses                      ing          networking.k8s.io/v1                 true         Ingress
networkpolicies                netpol       networking.k8s.io/v1                 true         NetworkPolicy
runtimeclasses                              node.k8s.io/v1                       false        RuntimeClass
poddisruptionbudgets           pdb          policy/v1beta1                       true         PodDisruptionBudget
podsecuritypolicies            psp          policy/v1beta1                       false        PodSecurityPolicy
clusterrolebindings                         rbac.authorization.k8s.io/v1         false        ClusterRoleBinding
clusterroles                                rbac.authorization.k8s.io/v1         false        ClusterRole
rolebindings                                rbac.authorization.k8s.io/v1         true         RoleBinding
roles                                       rbac.authorization.k8s.io/v1         true         Role
priorityclasses                pc           scheduling.k8s.io/v1                 false        PriorityClass
csidrivers                                  storage.k8s.io/v1                    false        CSIDriver
csinodes                                    storage.k8s.io/v1                    false        CSINode
storageclasses                 sc           storage.k8s.io/v1                    false        StorageClass
volumeattachments                           storage.k8s.io/v1                    false        VolumeAttachment

kubectl explain

通过kubectl explain {kind_name}可以参考到某个kind资源拥有的字段以及对应的apiVersion

$ kubectl explain deployment
KIND:     Deployment
VERSION:  apps/v1

DESCRIPTION:
     Deployment enables declarative updates for Pods and ReplicaSets.

FIELDS:
   apiVersion    <string>
     APIVersion defines the versioned schema of this representation of an
     object. Servers should convert recognized schemas to the latest internal
     value, and may reject unrecognized values. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

   kind    <string>
     Kind is a string value representing the REST resource this object
     represents. Servers may infer this from the endpoint the client submits
     requests to. Cannot be updated. In CamelCase. More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

   metadata    <Object>
     Standard object metadata.

   spec    <Object>
     Specification of the desired behavior of the Deployment.

   status    <Object>
     Most recently observed status of the Deployment.

查看资源支持所有字段

kubectl explain { kind_name } --recursive

如:kubectl explain { kind_name } --recursive

因为太长这里就不列出来了。

查看具体字段里的子字段

kubectl explain { kind_name }.字段名1.字段名2

其中从左往右是父子关系,如:deployment.spec.selector

当在自己写yaml文件时,没有参考示例,可以使用这些命令来摸索

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0