Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes-如何了解受支持的最新API版本_Kubernetes_Kubectl - Fatal编程技术网

Kubernetes-如何了解受支持的最新API版本

Kubernetes-如何了解受支持的最新API版本,kubernetes,kubectl,Kubernetes,Kubectl,如果是k8s集群版本,是否有一个表可以告诉我应该使用哪套API版本?Kubernetes docs总是认为我总是有一个很好的、最新的集群(在撰写本文时为1.12),但平台提供商并不总是生活在这一前沿,因此很快就会令人沮丧 更好的是,我是否可以运行一个kubectl命令,让我集群告诉我每种资源类型及其最新支持的API版本?这将是kubectl explain命令。例如,对于吊舱: $ kubectl explain pod KIND: Pod VERSION: v1 <==

如果是k8s集群版本,是否有一个表可以告诉我应该使用哪套API版本?Kubernetes docs总是认为我总是有一个很好的、最新的集群(在撰写本文时为1.12),但平台提供商并不总是生活在这一前沿,因此很快就会令人沮丧


更好的是,我是否可以运行一个
kubectl
命令,让我集群告诉我每种资源类型及其最新支持的API版本?

这将是
kubectl explain
命令。例如,对于吊舱:

$ kubectl explain pod
KIND:     Pod
VERSION:  v1   <==  API version

DESCRIPTION:
     Pod is a collection of containers that can run on a host. This resource is
     created by clients and scheduled onto hosts.

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/api-conventions.md#resources

...
$kubectl解释pod
种类:豆荚

版本:v1要获取所有资源类型及其最新支持版本的列表,请运行以下命令:

for kind in `kubectl api-resources | tail +2 | awk '{ print $1 }'`; do kubectl explain $kind; done | grep -e "KIND:" -e "VERSION:"
它应该能产生像这样的产出

KIND:     Binding
VERSION:  v1
KIND:     ComponentStatus
VERSION:  v1
KIND:     ConfigMap
VERSION:  v1
KIND:     Endpoints
VERSION:  v1
KIND:     Event
VERSION:  v1
...
正如@Rico所提到的,它们的键在
kubectl explain
命令中。这可能有点脆弱,因为它取决于打印输出的格式,但它适用于kubernetes 1.9.6


此外,可以从这里找到的kubernetes API文档(每个版本都有链接)以较低的效率收集信息-

我认为
kubectl API版本
是一个更简单的选择:

kubectl api版本 许可注册.k8s.io/v1beta1 apiextensions.k8s.io/v1beta1 apiregistration.k8s.io/v1 apiregistration.k8s.io/v1beta1 应用程序/v1 应用程序/v1beta1 应用程序/v1beta2 authentication.k8s.io/v1 authentication.k8s.io/v1beta1 authorization.k8s.io/v1 authorization.k8s.io/v1beta1 自动缩放/v1 自动缩放/v2beta1 自动缩放/v2beta2 批次/v1 批次/v1beta1 证书.k8s.io/v1beta1 coordination.k8s.io/v1 coordination.k8s.io/v1beta1 events.k8s.io/v1beta1 扩展/v1beta1 networking.k8s.io/v1 networking.k8s.io/v1beta1 node.k8s.io/v1beta1 政策/v1beta1 rbac.authorization.k8s.io/v1 rbac.authorization.k8s.io/v1beta1 调度.k8s.io/v1 scheduling.k8s.io/v1beta1 storage.k8s.io/v1 storage.k8s.io/v1beta1 kubernetes-1.17.x的v1
(与上面发布的格式不同)


将显示每种类型的api

如果要将集群升级到该版本,您可以使用一个工具-kubepug作为升级前检查,以了解给定Kubernetes版本中发生了哪些更改。Link-

您可以在上下文中使用Kubernetes集群并执行
move2kube collect
,以获得集群支持的所有种类的版本。它以从最新到最旧的顺序给出了一个种类支持的所有版本的有序列表

它将为您提供以下信息:

apiVersion: move2kube.konveyor.io/v1alpha1
kind: ClusterMetadata
metadata:
  name: IBM-IKS
spec:
  storageClasses:
    - default
    - ibmc-block-bronze
    - ibmc-block-custom
    - ibmc-block-gold
    - ibmc-block-retain-bronze
    - ibmc-block-retain-custom
    - ibmc-block-retain-gold
    - ibmc-block-retain-silver
    - ibmc-block-silver
    - ibmc-file-bronze
    - ibmc-file-bronze-gid
    - ibmc-file-custom
    - ibmc-file-gold
    - ibmc-file-gold-gid
    - ibmc-file-retain-bronze
    - ibmc-file-retain-custom
    - ibmc-file-retain-gold
    - ibmc-file-retain-silver
    - ibmc-file-silver
    - ibmc-file-silver-gid
  apiKindVersionMap:
    APIService:
      - apiregistration.k8s.io/v1
    BGPConfiguration:
      - crd.projectcalico.org/v1
    BGPPeer:
      - crd.projectcalico.org/v1
    Binding:
      - v1
    BlockAffinity:
      - crd.projectcalico.org/v1
    CSIDriver:
      - storage.k8s.io/v1
      - storage.k8s.io/v1beta1
    CSINode:
      - storage.k8s.io/v1
      - storage.k8s.io/v1beta1
    CatalogSource:
      - operators.coreos.com/v1alpha1
    CertificateSigningRequest:
      - certificates.k8s.io/v1beta1
    ClusterInformation:
      - crd.projectcalico.org/v1
    ClusterRole:
      - rbac.authorization.k8s.io/v1
      - rbac.authorization.k8s.io/v1beta1
    ClusterRoleBinding:
      - rbac.authorization.k8s.io/v1
      - rbac.authorization.k8s.io/v1beta1
    ClusterServiceVersion:
      - operators.coreos.com/v1alpha1
    ComponentStatus:
      - v1
    ConfigMap:
      - v1
    ControllerRevision:
      - apps/v1
    CronJob:
      - batch/v1beta1
      - batch/v2alpha1
    CustomResourceDefinition:
      - apiextensions.k8s.io/v1
    DaemonSet:
      - apps/v1
    Deployment:
      - apps/v1
    EndpointSlice:
      - discovery.k8s.io/v1beta1
    Endpoints:
      - v1
    Event:
      - events.k8s.io/v1beta1
      - v1
    FelixConfiguration:
      - crd.projectcalico.org/v1
    GlobalNetworkPolicy:
      - crd.projectcalico.org/v1
    GlobalNetworkSet:
      - crd.projectcalico.org/v1
    HorizontalPodAutoscaler:
      - autoscaling/v1
      - autoscaling/v2beta1
      - autoscaling/v2beta2
    HostEndpoint:
      - crd.projectcalico.org/v1
    IPAMBlock:
      - crd.projectcalico.org/v1
    IPAMConfig:
      - crd.projectcalico.org/v1
    IPAMHandle:
      - crd.projectcalico.org/v1
    IPPool:
      - crd.projectcalico.org/v1
    Ingress:
      - networking.k8s.io/v1
      - networking.k8s.io/v1beta1
      - extensions/v1beta1
    IngressClass:
      - networking.k8s.io/v1
      - networking.k8s.io/v1beta1
    InstallPlan:
      - operators.coreos.com/v1alpha1
    Job:
      - batch/v1
    KubeControllersConfiguration:
      - crd.projectcalico.org/v1
    Lease:
      - coordination.k8s.io/v1beta1
      - coordination.k8s.io/v1
    LimitRange:
      - v1
    LocalSubjectAccessReview:
      - authorization.k8s.io/v1
      - authorization.k8s.io/v1beta1
    MutatingWebhookConfiguration:
      - admissionregistration.k8s.io/v1beta1
      - admissionregistration.k8s.io/v1
    Namespace:
      - v1
    NetworkPolicy:
      - networking.k8s.io/v1
    NetworkSet:
      - crd.projectcalico.org/v1
    Node:
      - v1
    Operator:
      - operators.coreos.com/v1
    OperatorGroup:
      - operators.coreos.com/v1
    PersistentVolume:
      - v1
    PersistentVolumeClaim:
      - v1
    Pod:
      - v1
    PodDisruptionBudget:
      - policy/v1beta1
    PodSecurityPolicy:
      - policy/v1beta1
    PodTemplate:
      - v1
    PriorityClass:
      - scheduling.k8s.io/v1beta1
      - scheduling.k8s.io/v1
    RBACSync:
      - ibm.com/v1alpha1
    ReplicaSet:
      - apps/v1
    ReplicationController:
      - v1
    ResourceQuota:
      - v1
    Role:
      - rbac.authorization.k8s.io/v1
      - rbac.authorization.k8s.io/v1beta1
    RoleBinding:
      - rbac.authorization.k8s.io/v1
      - rbac.authorization.k8s.io/v1beta1
    Secret:
      - v1
    SelfSubjectAccessReview:
      - authorization.k8s.io/v1
      - authorization.k8s.io/v1beta1
    SelfSubjectRulesReview:
      - authorization.k8s.io/v1
      - authorization.k8s.io/v1beta1
    Service:
      - v1
    ServiceAccount:
      - v1
    StatefulSet:
      - apps/v1
    StorageClass:
      - storage.k8s.io/v1
      - storage.k8s.io/v1beta1
    SubjectAccessReview:
      - authorization.k8s.io/v1
      - authorization.k8s.io/v1beta1
    Subscription:
      - operators.coreos.com/v1alpha1
    TokenReview:
      - authentication.k8s.io/v1
      - authentication.k8s.io/v1beta1
    ValidatingWebhookConfiguration:
      - admissionregistration.k8s.io/v1beta1
      - admissionregistration.k8s.io/v1
    VolumeAttachment:
      - storage.k8s.io/v1
      - storage.k8s.io/v1beta1

您还可以启动
kubectl proxy
并在swagger中检查api版本。当使用的名称很明显时,这很方便,但是您如何从输出中知道部署应该使用extensions/v1beta1,这在公认的答案中非常清楚。是的,我同意ken,这并不是一个很好的解决问题的方法,但是要小心。有时,同一对象在两个不同的API中可用(例如,当前
extensions
中的
ingres
networking.k8s.io
),它可能默认为较旧的(例如,ingres显示
extensions/v1beta1
,但
networking.k8s.io/v1beta1
更合适)..此外,文档仅显示了1.18版本中的
入口
联网.k8s.io/v1beta1
,但该规范显然自1.14以来有效。要查找所有不推荐的api版本,脚本:
for i in `kubectl api-resources | grep -v KIND | awk '{print $NF}'`;do kubectl explain ${i} | grep -e "KIND:" -e "VERSION:"; echo '----'; done
apiVersion: move2kube.konveyor.io/v1alpha1
kind: ClusterMetadata
metadata:
  name: IBM-IKS
spec:
  storageClasses:
    - default
    - ibmc-block-bronze
    - ibmc-block-custom
    - ibmc-block-gold
    - ibmc-block-retain-bronze
    - ibmc-block-retain-custom
    - ibmc-block-retain-gold
    - ibmc-block-retain-silver
    - ibmc-block-silver
    - ibmc-file-bronze
    - ibmc-file-bronze-gid
    - ibmc-file-custom
    - ibmc-file-gold
    - ibmc-file-gold-gid
    - ibmc-file-retain-bronze
    - ibmc-file-retain-custom
    - ibmc-file-retain-gold
    - ibmc-file-retain-silver
    - ibmc-file-silver
    - ibmc-file-silver-gid
  apiKindVersionMap:
    APIService:
      - apiregistration.k8s.io/v1
    BGPConfiguration:
      - crd.projectcalico.org/v1
    BGPPeer:
      - crd.projectcalico.org/v1
    Binding:
      - v1
    BlockAffinity:
      - crd.projectcalico.org/v1
    CSIDriver:
      - storage.k8s.io/v1
      - storage.k8s.io/v1beta1
    CSINode:
      - storage.k8s.io/v1
      - storage.k8s.io/v1beta1
    CatalogSource:
      - operators.coreos.com/v1alpha1
    CertificateSigningRequest:
      - certificates.k8s.io/v1beta1
    ClusterInformation:
      - crd.projectcalico.org/v1
    ClusterRole:
      - rbac.authorization.k8s.io/v1
      - rbac.authorization.k8s.io/v1beta1
    ClusterRoleBinding:
      - rbac.authorization.k8s.io/v1
      - rbac.authorization.k8s.io/v1beta1
    ClusterServiceVersion:
      - operators.coreos.com/v1alpha1
    ComponentStatus:
      - v1
    ConfigMap:
      - v1
    ControllerRevision:
      - apps/v1
    CronJob:
      - batch/v1beta1
      - batch/v2alpha1
    CustomResourceDefinition:
      - apiextensions.k8s.io/v1
    DaemonSet:
      - apps/v1
    Deployment:
      - apps/v1
    EndpointSlice:
      - discovery.k8s.io/v1beta1
    Endpoints:
      - v1
    Event:
      - events.k8s.io/v1beta1
      - v1
    FelixConfiguration:
      - crd.projectcalico.org/v1
    GlobalNetworkPolicy:
      - crd.projectcalico.org/v1
    GlobalNetworkSet:
      - crd.projectcalico.org/v1
    HorizontalPodAutoscaler:
      - autoscaling/v1
      - autoscaling/v2beta1
      - autoscaling/v2beta2
    HostEndpoint:
      - crd.projectcalico.org/v1
    IPAMBlock:
      - crd.projectcalico.org/v1
    IPAMConfig:
      - crd.projectcalico.org/v1
    IPAMHandle:
      - crd.projectcalico.org/v1
    IPPool:
      - crd.projectcalico.org/v1
    Ingress:
      - networking.k8s.io/v1
      - networking.k8s.io/v1beta1
      - extensions/v1beta1
    IngressClass:
      - networking.k8s.io/v1
      - networking.k8s.io/v1beta1
    InstallPlan:
      - operators.coreos.com/v1alpha1
    Job:
      - batch/v1
    KubeControllersConfiguration:
      - crd.projectcalico.org/v1
    Lease:
      - coordination.k8s.io/v1beta1
      - coordination.k8s.io/v1
    LimitRange:
      - v1
    LocalSubjectAccessReview:
      - authorization.k8s.io/v1
      - authorization.k8s.io/v1beta1
    MutatingWebhookConfiguration:
      - admissionregistration.k8s.io/v1beta1
      - admissionregistration.k8s.io/v1
    Namespace:
      - v1
    NetworkPolicy:
      - networking.k8s.io/v1
    NetworkSet:
      - crd.projectcalico.org/v1
    Node:
      - v1
    Operator:
      - operators.coreos.com/v1
    OperatorGroup:
      - operators.coreos.com/v1
    PersistentVolume:
      - v1
    PersistentVolumeClaim:
      - v1
    Pod:
      - v1
    PodDisruptionBudget:
      - policy/v1beta1
    PodSecurityPolicy:
      - policy/v1beta1
    PodTemplate:
      - v1
    PriorityClass:
      - scheduling.k8s.io/v1beta1
      - scheduling.k8s.io/v1
    RBACSync:
      - ibm.com/v1alpha1
    ReplicaSet:
      - apps/v1
    ReplicationController:
      - v1
    ResourceQuota:
      - v1
    Role:
      - rbac.authorization.k8s.io/v1
      - rbac.authorization.k8s.io/v1beta1
    RoleBinding:
      - rbac.authorization.k8s.io/v1
      - rbac.authorization.k8s.io/v1beta1
    Secret:
      - v1
    SelfSubjectAccessReview:
      - authorization.k8s.io/v1
      - authorization.k8s.io/v1beta1
    SelfSubjectRulesReview:
      - authorization.k8s.io/v1
      - authorization.k8s.io/v1beta1
    Service:
      - v1
    ServiceAccount:
      - v1
    StatefulSet:
      - apps/v1
    StorageClass:
      - storage.k8s.io/v1
      - storage.k8s.io/v1beta1
    SubjectAccessReview:
      - authorization.k8s.io/v1
      - authorization.k8s.io/v1beta1
    Subscription:
      - operators.coreos.com/v1alpha1
    TokenReview:
      - authentication.k8s.io/v1
      - authentication.k8s.io/v1beta1
    ValidatingWebhookConfiguration:
      - admissionregistration.k8s.io/v1beta1
      - admissionregistration.k8s.io/v1
    VolumeAttachment:
      - storage.k8s.io/v1
      - storage.k8s.io/v1beta1