Kubectl GKE PersistentVolumeClaim - PullRequest
       6

Kubectl GKE PersistentVolumeClaim

2 голосов
/ 27 апреля 2020

Народ, при запуске следующей команды kubectl:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: openvpn-data-claim
  namespace: openvpn
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
error: SchemaError(io.k8s.api.autoscaling.v1.Scale): invalid object doesn't have additional properties

версия kubectl

Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:38:32Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"15+", GitVersion:"v1.15.9-gke.24", GitCommit:"39e41a8d6b7221b901a95d3af358dea6994b4a40", GitTreeState:"clean", BuildDate:"2020-02-29T01:24:35Z", GoVersion:"go1.12.12b4", Compiler:"gc", Platform:"linux/amd64"}

Ответы [ 2 ]

2 голосов
/ 27 апреля 2020
  • Этот ответ является дополнением к ответу @Cmag, и я намерен предоставить больше информации об этой проблеме, чтобы помочь сообществу.

Согласно Kubernetes Политика перегиба версии :

kubectl поддерживается в одной вспомогательной версии (старой или более новой) из kube-apiserver.

IF kube-apiserver в 1.15 : kubectl поддерживается в 1.16 , 1.15 и 1.14 .

Примечание: Если между экземплярами kube-apiserver в кластере HA существует перекос версии, например, kube-apiserver экземпляры имеют значения 1.15 и 1.14 , kubectl будет поддерживать только 1.15 и 1.14 , поскольку любые другие версии будут иметь более одной перекошенной версии.

  • Каждое обновление kubernetes имеет много компонентов которые добавлены, изменены, перемещены, устарели или удалены. Вот Kubernetes Changelog версии 1.15 .

Даже запуск гораздо более новых версий клиента может вызвать некоторые проблемы

  • В K8s 1.10 kubectl run имел стандартное поведение при создании развертываний:
❯ ./kubectl-110 run ubuntu --image=ubuntu          
deployment.apps "ubuntu" created
  • Начиная с 1.12 kubectl run было устарело для всех генераторов, кроме pods, вот пример с kubectl 1.16 :
❯ ./kubectl-116 run ubuntu --image=ubuntu --dry-run
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/ubuntu created (dry run)
  • Помимо предупреждения, оно все еще работает как задумано, но оно изменилось в клиенте K8s 1.18:
❯ ./kubectl-118 version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.2", GitCommit:"52c56ce7a8272c798dbc29846288d7cd9fbae032", GitTreeState:"clean", BuildDate:"2020-04-16T11:56:40Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15+", GitVersion:"v1.15.9-gke.24", GitCommit:"39e41a8d6b7221b901a95d3af358dea6994b4a40", GitTreeState:"clean", BuildDate:"2020-02-29T01:24:35Z", GoVersion:"go1.12.12b4", Compiler:"gc", Platform:"linux/amd64"}

$ kubectl run --generator=deployment/apps.v1 ubuntu --image=ubuntu --dry-run=client
Flag --generator has been deprecated, has no effect and will be removed in the future.
pod/ubuntu created (dry run)

Он игнорировал флаг и создавал только модуль. Этот флаг поддерживается в kubernetes 1.15, как мы видели в тесте, но kubectl 1.18 претерпел значительные изменения, которые не позволили его запустить.

  • Это простой пример, иллюстрирующий важность соблюдения перекоса. политика в Kubernetes, это может сэкономить много времени на устранение неполадок в будущем!
1 голос
/ 27 апреля 2020

Легко исправляется путем обновления локального kubectl с помощью asdf.

asdf install kubectl 1.15.9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...