Kubernetes - Как узнать последнюю поддерживаемую версию API - PullRequest
0 голосов
/ 09 октября 2018

Есть ли таблица, которая скажет мне, какой набор версий API я должен использовать, учитывая версию кластера k8s?Документы Kubernetes всегда предполагают, что у меня всегда есть хороший, современный кластер (1.12 на момент написания), но провайдеры платформ не всегда живут на этом передовом крае, поэтому он может разочароваться довольно быстро.

Лучшевсе же, есть ли команда kubectl, которую я могу запустить, которая позволит кластеру сообщать мне каждый тип ресурса и его последнюю поддерживаемую версию API?

Ответы [ 3 ]

0 голосов
/ 09 октября 2018

Чтобы получить список всех типов ресурсов и связанных с ними версий, выполните следующее:

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

Кроме того, информация может быть получена менее эффективным способом из документов API kubernetes (с помощьюссылки для каждой версии) можно найти здесь - https://kubernetes.io/docs/reference/#api-reference

0 голосов
/ 30 августа 2019

Я думаю kubectl api-versions - более простая альтернатива:

 kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
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
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
0 голосов
/ 09 октября 2018

Это будет команда kubectl explain <resource>.Например, для модулей:

$ 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 explain deploy
KIND:     Deployment
VERSION:  extensions/v1beta1 <== API Version

DESCRIPTION:
     DEPRECATED - This group version of Deployment is deprecated by
     apps/v1beta2/Deployment. See the release notes for more information.
     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/api-conventions.md#resources
...

Кроме того, вот, например, ссылка API v * 129 .

...