Helm: Файлы инициализации Helm находятся в Kubernetes 1.16.0

Созданный на 6 сент. 2019  ·  83Комментарии  ·  Источник: helm/helm

Вывод helm version : v2.14.3
Вывод kubectl version : клиент: v1.15.3, сервер: v1.16.0-rc.1
Облачный провайдер / платформа (AKS, GKE, Minikube и т. Д.): IBM Cloud Kubernetes Service

$ helm init --service-account tiller
$HELM_HOME has been configured at /Users/xxxx/.helm.
Error: error installing: the server could not find the requested resource

$ helm init --debug --service-account tiller
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: helm
    name: tiller
  name: tiller-deploy
  namespace: kube-system
spec:
. 
.
.

Похоже, что helm пытается создать tiller Deployment с помощью: apiVersion: extensions/v1beta1
Согласно: https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16
это больше не поддерживается.

Самый полезный комментарий

Для меня работает следующий sed:

helm init --service-account tiller --output yaml | sed 's<strong i="6">@apiVersion</strong>: extensions/v1beta1<strong i="7">@apiVersion</strong>: apps/v1@' | sed 's@  replicas: 1@  replicas: 1\n  selector: {"matchLabels": {"app": "helm", "name": "tiller"}}@' | kubectl apply -f -

Проблема с решением @mattymo (с использованием kubectl patch --local) заключается в том, что оно, похоже, не работает, когда его входные данные содержат несколько ресурсов (здесь развертывание и служба).

Все 83 Комментарий

В прошлом мы избегали обновления tiller до apps / v1 из-за сложности с helm init --upgrade согласованием развертываний extensions/v1beta1 и apps/v1 tiller. Похоже, что как только мы начнем поддерживать Kubernetes 1.16.0, нам придется разобраться с этим случаем и перейти на более новую версию apiVersion.

Вот краткосрочный обходной путь:

helm init --output yaml | sed 's<strong i="6">@apiVersion</strong>: extensions/v1beta1<strong i="7">@apiVersion</strong>: apps/v1@' | kubectl apply -f -

На самом деле этого недостаточно. Я все еще получаю сообщение об ошибке:

error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec

Это можно исправить с помощью:

/usr/local/bin/kubectl patch --local -oyaml -f - -p '{"spec":{"selector": {"app":"helm","name":"tiller"}}}'

Хороший! Возможно, вы сможете добиться того же эффекта с помощью флага --override сумасшедшие взломы sed :)

Хороший! Возможно, вы сможете добиться того же эффекта с помощью флага --override сумасшедшие взломы sed :)

Да, но его сумасшедшие хаки sed я могу скопировать и вставить, тогда как этот helm init --override "apiVersion"="apps/v1" просто не работает. Хорошо, sed hack тоже не работает.

Текущий обходной путь выглядит примерно так:

helm init --output yaml> tiller.yaml
и обновите tiller.yaml:

  • изменить на apps / v1
  • добавить поле селектора
---
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: helm
    name: tiller
  name: tiller-deploy
  namespace: kube-system
spec:
  replicas: 1
  strategy: {}
  selector:
    matchLabels:
      app: helm
      name: tiller
....

Для меня работает следующий sed:

helm init --service-account tiller --output yaml | sed 's<strong i="6">@apiVersion</strong>: extensions/v1beta1<strong i="7">@apiVersion</strong>: apps/v1@' | sed 's@  replicas: 1@  replicas: 1\n  selector: {"matchLabels": {"app": "helm", "name": "tiller"}}@' | kubectl apply -f -

Проблема с решением @mattymo (с использованием kubectl patch --local) заключается в том, что оно, похоже, не работает, когда его входные данные содержат несколько ресурсов (здесь развертывание и служба).

Kubernetes 1.16.0 был выпущен вчера: 18.09.2018.
Helm не работает в этом последнем выпуске Kubernetes, если не используется вышеуказанный обходной путь.

Когда эта проблема будет исправлена ​​и когда выйдет Helm 2.15.0 ?

Если вы хотите использовать на один sed меньше :)
helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="6">@apiVersion</strong>: extensions/v1beta1<strong i="7">@apiVersion</strong>: apps/v1@' | kubectl apply -f -

Спасибо!

Сегодня столкнулся с такой же проблемой, сам поменял лейбл. Я меняю метку на apps/v1 и добавляю часть selector , на данный момент она отлично работает, ниже мой файл yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: helm
    name: tiller
  name: tiller-deploy
  namespace: kube-system
spec:
  replicas: 1
  strategy: {}
  selector:
    matchLabels:
      app: helm
      name: tiller
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: helm
        name: tiller
    spec:
      automountServiceAccountToken: true
      containers:
      - env:
        - name: TILLER_NAMESPACE
          value: kube-system
        - name: TILLER_HISTORY_MAX
          value: "0"
        image: gcr.io/kubernetes-helm/tiller:v2.14.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /liveness
            port: 44135
          initialDelaySeconds: 1
          timeoutSeconds: 1
        name: tiller
        ports:
        - containerPort: 44134
          name: tiller
        - containerPort: 44135
          name: http
        readinessProbe:
          httpGet:
            path: /readiness
            port: 44135
          initialDelaySeconds: 1
          timeoutSeconds: 1
        resources: {}
      serviceAccountName: tiller
status: {}

@jbrette ты мой герой! Я боролся со строфой selector .

Сегодня столкнулся с такой же проблемой, сам поменял лейбл. Я меняю метку на apps/v1 и добавляю часть selector , на данный момент она отлично работает, ниже мой файл yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: helm
    name: tiller
  name: tiller-deploy
  namespace: kube-system
spec:
  replicas: 1
  strategy: {}
  selector:
    matchLabels:
      app: helm
      name: tiller
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: helm
        name: tiller
    spec:
      automountServiceAccountToken: true
      containers:
      - env:
        - name: TILLER_NAMESPACE
          value: kube-system
        - name: TILLER_HISTORY_MAX
          value: "0"
        image: gcr.io/kubernetes-helm/tiller:v2.14.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /liveness
            port: 44135
          initialDelaySeconds: 1
          timeoutSeconds: 1
        name: tiller
        ports:
        - containerPort: 44134
          name: tiller
        - containerPort: 44135
          name: http
        readinessProbe:
          httpGet:
            path: /readiness
            port: 44135
          initialDelaySeconds: 1
          timeoutSeconds: 1
        resources: {}
      serviceAccountName: tiller
status: {}

как изменить ? можешь описать подробнее?

Сегодня столкнулся с такой же проблемой, сам поменял лейбл. Я меняю метку на apps/v1 и добавляю часть selector , на данный момент она отлично работает, ниже мой файл yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: helm
    name: tiller
  name: tiller-deploy
  namespace: kube-system
spec:
  replicas: 1
  strategy: {}
  selector:
    matchLabels:
      app: helm
      name: tiller
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: helm
        name: tiller
    spec:
      automountServiceAccountToken: true
      containers:
      - env:
        - name: TILLER_NAMESPACE
          value: kube-system
        - name: TILLER_HISTORY_MAX
          value: "0"
        image: gcr.io/kubernetes-helm/tiller:v2.14.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /liveness
            port: 44135
          initialDelaySeconds: 1
          timeoutSeconds: 1
        name: tiller
        ports:
        - containerPort: 44134
          name: tiller
        - containerPort: 44135
          name: http
        readinessProbe:
          httpGet:
            path: /readiness
            port: 44135
          initialDelaySeconds: 1
          timeoutSeconds: 1
        resources: {}
      serviceAccountName: tiller
status: {}

@ gm12367 как поменять и можно

Сегодня столкнулся с такой же проблемой, сам поменял лейбл. Я меняю метку на apps/v1 и добавляю часть selector , на данный момент она отлично работает, ниже мой файл yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: helm
    name: tiller
  name: tiller-deploy
  namespace: kube-system
spec:
  replicas: 1
  strategy: {}
  selector:
    matchLabels:
      app: helm
      name: tiller
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: helm
        name: tiller
    spec:
      automountServiceAccountToken: true
      containers:
      - env:
        - name: TILLER_NAMESPACE
          value: kube-system
        - name: TILLER_HISTORY_MAX
          value: "0"
        image: gcr.io/kubernetes-helm/tiller:v2.14.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /liveness
            port: 44135
          initialDelaySeconds: 1
          timeoutSeconds: 1
        name: tiller
        ports:
        - containerPort: 44134
          name: tiller
        - containerPort: 44135
          name: http
        readinessProbe:
          httpGet:
            path: /readiness
            port: 44135
          initialDelaySeconds: 1
          timeoutSeconds: 1
        resources: {}
      serviceAccountName: tiller
status: {}

@ gm12367 как поменять и можно

Например, вы можете использовать helm init --service-account tiller --tiller-namespace kube-system --debug для печати манифестов в формате YAML, опция --debug сделает это.

@ gm12367 Да, я могу видеть распечатку, но только вывод. Итак, какой командой я могу изменить вывод?

@ gm12367 Я хочу изменить apps / v1 и добавить часть селектора

@ puww1010 Я просто перенаправил вывод в файл, а затем использовал VIM, чтобы изменить его. Ниже приведены команды для справки.

# helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml
# vim helm-init.yaml
# kubectl apply -f helm-init.yaml

если ваша среда go настроена и вы не можете дождаться следующего PR, который исправит эту проблему [Helm init, совместимый с Kubernetes 1.16] # 6462, вы всегда можете сделать следующее:

Строить

mkdir p ${GOPATH}/src/k8s.io
cd ${GOPATH}/src/k8s.io 
git clone -b kube16 https://github.com/keleustes/helm.git
cd helm
make bootstrap build

Контрольная работа:

kubectl version

Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:36:53Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:27:17Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
/bin/helm init --wait --tiller-image gcr.io/kubernetes-helm/tiller:v2.14.3
Creating /home/xxx/.helm
Creating /home/xxx/.helm/repository
Creating /home/xxx/.helm/repository/cache
Creating /home/xxx/.helm/repository/local
Creating /home/xxx/.helm/plugins
Creating /home/xxx/.helm/starters
Creating /home/xxx/.helm/cache/archive
Creating /home/xxx/.helm/repository/repositories.yaml
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
Adding local repo with URL: http://127.0.0.1:8879/charts
$HELM_HOME has been configured at /home/xxx/.helm.

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.

Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
To prevent this, run `helm init` with the --tiller-tls-verify flag.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation

Баш
kubectl получить развертывание.apps / tiller-deploy -n kube-system -o yaml

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  creationTimestamp: "2019-09-22T01:01:11Z"
  generation: 1
  labels:
    app: helm
    name: tiller
  name: tiller-deploy
  namespace: kube-system
  resourceVersion: "553"
  selfLink: /apis/apps/v1/namespaces/kube-system/deployments/tiller-deploy
  uid: 124001ca-6f31-417e-950b-2452ce70f522
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: helm
      name: tiller
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: helm
        name: tiller
    spec:
      automountServiceAccountToken: true
      containers:
      - env:
        - name: TILLER_NAMESPACE
          value: kube-system
        - name: TILLER_HISTORY_MAX
          value: "0"
        image: gcr.io/kubernetes-helm/tiller:v2.14.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /liveness
            port: 44135
            scheme: HTTP
          initialDelaySeconds: 1
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        name: tiller
        ports:
        - containerPort: 44134
          name: tiller
          protocol: TCP
        - containerPort: 44135
          name: http
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /readiness
            port: 44135
            scheme: HTTP
          initialDelaySeconds: 1
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
status:
  availableReplicas: 1
  conditions:
  - lastTransitionTime: "2019-09-22T01:01:23Z"
    lastUpdateTime: "2019-09-22T01:01:23Z"
    message: Deployment has minimum availability.
    reason: MinimumReplicasAvailable
    status: "True"
    type: Available
  - lastTransitionTime: "2019-09-22T01:01:11Z"
    lastUpdateTime: "2019-09-22T01:01:23Z"
    message: ReplicaSet "tiller-deploy-568db6b69f" has successfully progressed.
    reason: NewReplicaSetAvailable
    status: "True"
    type: Progressing
  observedGeneration: 1
  readyReplicas: 1
  replicas: 1
  updatedReplicas: 1

@jbrette По-прежнему имеет ту же проблему после выполнения вашей инструкции

@jbrette По-прежнему имеет ту же проблему после выполнения вашей инструкции

Похоже, вы набрали «helm» вместо «./bin/helm"....», значит, вы используете старую версию двоичного файла.

После успешной инициализации вы не сможете установить пакет диаграммы из репозитория, пока в нем также не замените extension / v1beta1.
Вот как адаптировать любую диаграмму из репозитория для k8s v1.16.0
Пример основан на диаграмме Прометея.

git clone https://github.com/helm/charts
cd charts/stable

Замените extension / v1beta1 на policy / v1beta1 PodSecurityPolicy:

sed -i 's<strong i="11">@apiVersion</strong>: extensions/v1beta1<strong i="12">@apiVersion</strong>: policy/v1beta1@' `find . -iregex ".*yaml\|.*yml" -exec awk '/kind:\s+PodSecurityPolicy/ {print FILENAME}' {} +`

NetworkPolicy apiVersion хорошо обрабатывается _helpers.tpl для тех диаграмм, где он используется.

Замените extension / v1beta1 на apps / v1 в Deployment, StatefulSet, ReplicaSet, DaemonSet.

sed -i 's<strong i="17">@apiVersion</strong>: extensions/v1beta1<strong i="18">@apiVersion</strong>: apps/v1@' `find . -iregex ".*yaml\|.*yml" -exec awk '/kind:\s+(Deployment|StatefulSet|ReplicaSet|DaemonSet)/ {print FILENAME}' {} +`
sed -i 's<strong i="19">@apiVersion</strong>: apps/v1beta2<strong i="20">@apiVersion</strong>: apps/v1@' `find . -iregex ".*yaml\|.*yml" -exec awk '/kind:\s+(Deployment|StatefulSet|ReplicaSet|DaemonSet)/ {print FILENAME}' {} +`

Создайте новый пакет:

helm package ./prometheus
Successfully packaged chart and saved it to: /home/vagrant/charts/stable/prometheus-9.1.1.tgz

Установите его:
helm install /home/vagrant/charts/stable/prometheus-9.1.1.tgz

На основе https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/

PS Для некоторых диаграмм с зависимостями вам может потребоваться использовать helm dependency update и заменить зависимые tgz на исправленные, если это применимо.

Та же ошибка при запуске helm init --history-max 200

выход

$HELM_HOME has been configured at /Users/neil/.helm.
Error: error installing: the server could not find the requested resource
$ helm version
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
Error: could not find tiller

Эта ветка работает https://github.com/keleustes/helm/tree/kube16. Вы можете построить ветку самостоятельно. Я также загрузил двоичный файл сюда для вашего удобства https://s3-us-west-2.amazonaws.com/bin.cryptexlabs.com/github.com/keleustes/helm/kube16/darwin/helm. Одно предостережение: вы должны использовать флаг канареечного изображения helm init --canary-image поскольку сборка еще не выпущена.

Вам не понадобится изображение канарейки для этой работы. Я бы посоветовал использовать helm init --tiller-image gcr.io/kubernetes-helm/tiller:v2.14.3 в качестве упомянутого ранее @jbrette, если вы хотите попробовать # 6462.

Я бы порекомендовал пользователям сначала попробовать один из предложенных ранее

Когда я выполняю команду, он развертывает его, но после этого может видеть его в модулях и сообщает Ошибка с сервера (NotFound): модули "tiller-deploy" не найдены.

helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -

Deployment.apps / tiller-deploy создано
сервис / tiller-deploy создан

Но когда я делаю kubectl get pods --all-namespaces не может видеть модули
NAMESPACE ИМЯ СОСТОЯНИЕ ГОТОВНОСТЬ ВОЗВРАЩАЕТСЯ ВОЗРАСТ
kube-system coredns-5644d7b6d9-559hw 1/1 Бег 0 23ч
kube-system coredns-5644d7b6d9-xcmjd 1/1 Бег 0 23ч
kube-system etcd-fmp 1/1 Работает 0 24ч
kube-system kube-apiserver-fmp 1/1 Работает 0 24 часа
kube-system kube-controller-manager-fmp 1/1 Работает 1 24 часа
kube-system kube-flannel-ds-amd64-ffx2g 1/1 Запуск 0 23ч
kube-system kube-proxy-lfvrz 1/1 Работает 0 24 часа
kube-system kube-scheduler-fmp 1/1 Работает 0 24 часа

kubectl получить все --all-namespaces | grep tiller
служба kube-system / tiller-deploy ClusterIP xxx44134 / TCP 2 мин. 52 сек.
kube-system deployment.apps / tiller-deploy 0/1 0 0 2 мин. 54 сек.
kube-system replicaset.apps / tiller-deploy-77855d9dcf 1 0 0 2 м54 с

@DanielIvaylov Я думаю, у вас нет учетной записи службы румпеля. Пожалуйста, создайте его, и тогда при развертывании также будет создан румпель.

Спасибо!

@DanielIvaylov Я думаю, у вас нет учетной записи службы румпеля. Пожалуйста, создайте его, и тогда при развертывании также будет создан румпель.

Спасибо!

Извините, я новенький, я подумал, что с этого все начнется. Как мне запустить учетную запись службы румпеля?

@DanielIvaylov

kubectl --namespace kube-system create sa tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

Ниже добавлен флаг для сервера api (/etc/kubernetes/manifests/kube-apiserver.yaml), который временно повторно включил этот устаревший API.

--runtime-config = apps / v1beta1 = true, apps / v1beta2 = true, extensions / v1beta1 / daemonsets = true, extensions / v1beta1 / deployments = true, extensions / v1beta1 / replicasets = true, extensions / v1beta1 / networkpolicies = true, расширения / v1beta1 / podsecuritypolicies = true

Это исправило шлем v2

Для пользователей Windows мы смогли установить / обновить tiller через PowerShell следующим образом:

$(helm init --output yaml) -replace "extensions/v1beta1","apps/v1"

Вот краткосрочный обходной путь:

helm init --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -

На самом деле этого недостаточно. Я все еще получаю сообщение об ошибке:

error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec

Это можно исправить с помощью:

/usr/local/bin/kubectl patch --local -oyaml -f - -p '{"spec":{"selector": {"app":"helm","name":"tiller"}}}'

у меня висит патч kubectl
нет сообщений в файле / var / log / syslog

сервисные аккаунты уже существуют

kubeflow @ masternode : ~ $ kubectl --namespace kube-system create sa tiller
Ошибка сервера (уже существует): serviceaccounts "tiller" уже существует
kubeflow @ masternode : ~ $ kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount = kube- system: tiller
Ошибка сервера (уже существует): clusterrolebindings.rbac.authorization.k8s.io "tiller" уже существует

Вы могли бы посоветовать

выполнение нижеприведенного

экспорт ПУТЬ = $ ПУТЬ: / usr / local / bin
какой руль
какой культиватор
helm install \
--name nfs-client-provisioner \
--set nfs.server = 10.0.0.4 \
--set nfs.path = / nfsroot \
--set storageClass.name = nfs \
--set storageClass.defaultClass = true \
стабильный / nfs-client-provisioner

возвращается с

/ USR / местные / бен / шлем
/ USR / местные / бен / культиватор
Ошибка: не удалось найти румпель

ценю любую помощь, так как теперь это ограничитель шоу

@cyrilthank Похоже, ошибка румпеля
helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -

helm version -s должен вернуть версию сервера (тиллера), если он запущен и работает правильно

Спасибо, сэр.
Вы помогли нам перейти с kubeflow к следующему этапу

хорошо, теперь я думаю, что у меня эта проблема
https://github.com/kubeflow/kubeflow/issues/4184
назад как блокирующий

Большое спасибо, если бы вы могли помочь советом о том, как я могу получить помощь на https://github.com/kubeflow/kubeflow/issues/4184

@cyrilthank, попробуйте шаги, указанные выше: https://github.com/helm/helm/issues/6374#issuecomment -533853888
Вам необходимо заменить устаревшие версии API на новые.

kubeflow_workaround_and_error_traces.txt

Спасибо, сэр, за ваши терпеливые ответы, особенно за то, что этот вопрос остается открытым.

Приносим извинения, но похоже, что я что-то делаю не так

Буду признателен, если вы можете просмотреть шаги в прилагаемых трассировках и сообщить мне, что я делаю неправильно.

@cyrilthank, вам просто нужно запустить команды sed против ваших yamls kubeflow, чтобы заменить старое расширение api новым (нет необходимости развертывать prometheus вообще 😆). Извините, если я недостаточно хорошо выразился.
Исправление в основном заменяет extensions/v1beta1 на apps/v1 в вашем kubeflow dpl yamls

ах так я сделал тупую копию :(

мой KFAPP = / nfsroot / kf-poc

Кажется, я все еще получаю несколько сообщений и последнюю ошибку

не могли бы вы помочь, поскольку теперь я полагаюсь на вас, чтобы перейти к следующему шагу в kubeflow

kubeflow_workaround_sed_and_error_traces.txt

@cyrilthank, вам просто нужно запустить команды sed против ваших yamls kubeflow, чтобы заменить старое расширение api новым (не нужно развертывать prometheus, вообще смеясь). Извините, если я недостаточно хорошо выразился.
Исправление в основном заменяет extensions/v1beta1 на apps/v1 в вашем kubeflow dpl yamls

apps/v1beta2 также с apps/v1

https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/

Большое спасибо @uniuuu за вашу помощь
Не могли бы вы посоветовать, где / как получить файлы yaml, указанные в https://github.com/helm/helm/files/3662328/kubeflow_workaround_sed_and_error_traces.txt

https://github.com/helm/helm/issues/6374#issuecomment -533840097
https://github.com/helm/helm/issues/6374#issuecomment -533185074

запрос, поскольку после внесения изменений в sed мы все еще сталкивались с ошибками, указанными в

не могли бы вы посоветовать, если шаг

kubectl convert -f--output-version/

необходимо выполнить для каждогокаждый файл yaml в расположении KFAPP, включая .kache

Если вы применили упомянутый выше обходной путь при работе с helm init , но по-прежнему получаете следующую ошибку, пытаясь что-то вроде helm version , это потому, что helm deployment Не может быть найдено.

Error: could not find tiller

Вам нужно запустить kubectl get events --all-namespaces | grep -i tiller чтобы узнать, почему он не готов.

Например, моя проблема такая, как показано ниже, потому что мне не нужно serviceaccount "tiller" с microk8s .

microk8s.kubectl get events --all-namespaces | grep -i tiller
kube-system    23m         Warning   FailedCreate                   replicaset/tiller-deploy-77855d9dcf            Error creating: pods "tiller-deploy-77855d9dcf-" is forbidden: error looking up service account kube-system/tiller: serviceaccount "tiller" not found

Итак, я сделал рабочий день без учетной записи службы

- helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="20">@apiVersion</strong>: extensions/v1beta1<strong i="21">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
+ helm init spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="22">@apiVersion</strong>: extensions/v1beta1<strong i="23">@apiVersion</strong>: apps/v1@' | kubectl apply -f -

@cyrilthank Я удалил ваш комментарий, потому что он не имеет отношения к обсуждаемому здесь обсуждению. Продолжайте следить в kubeflow / kubeflow # 4184. Спасибо!

helm init spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="6">@apiVersion</strong>: extensions/v1beta1<strong i="7">@apiVersion</strong>: apps/v1@' | kubectl apply -f -

Небольшая коррекция

helm init --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="11">@apiVersion</strong>: extensions/v1beta1<strong i="12">@apiVersion</strong>: apps/v1@' | kubectl apply -f -

+1

@ puww1010 Я просто перенаправил вывод в файл, а затем использовал VIM, чтобы изменить его. Ниже приведены команды для справки.

# helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml
# vim helm-init.yaml
# kubectl apply -f helm-init.yaml

Я пробовал это делать. После редактирования файла в VIM я использую команду kubectl apply , но, похоже, она ничего не делает. Когда я снова запускаю helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml или helm init --output yaml изменения не применяются. Кто-нибудь еще испытывает это?

Если вы хотите использовать на один sed меньше :)
helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -

Спасибо!

Я только что обновил наши k8s, столкнулся с этой проблемой и использовал вышеуказанное решение. Он создает развертывание, но набор реплик не работает, и вот что я получаю от kubectl describe -n kube-system replicasets.apps tiller-deploy-77855d9dcf :

Events:
  Type     Reason        Age                 From                   Message
  ----     ------        ----                ----                   -------
  Warning  FailedCreate  41s (x14 over 82s)  replicaset-controller  Error creating: pods "tiller-deploy-77855d9dcf-" is forbidden: error looking up service account kube-system/tiller: serviceaccount "tiller" not found

Где я могу найти файл yaml для создания этой учетной записи службы?

@DanielIvaylov

kubectl --namespace kube-system create sa tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

Это решило мою проблему!

6462 объединен и будет доступен в следующем выпуске (2.15.0). А пока не стесняйтесь использовать описанные выше обходные пути или использовать canary release .

Спасибо всем!

Изображение Canary по-прежнему выдает ту же ошибку, если еще не выполнено слияние,

@ puww1010 Я просто перенаправил вывод в файл, а затем использовал VIM, чтобы изменить его. Ниже приведены команды для справки.

# helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml
# vim helm-init.yaml
# kubectl apply -f helm-init.yaml

Я пробовал это делать. После редактирования файла в VIM я использую команду kubectl apply , но, похоже, она ничего не делает. Когда я снова запускаю helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml или helm init --output yaml изменения не применяются. Кто-нибудь еще испытывает это?

Да, это тоже происходит со мной.

Возможно, вам потребуется изменить расположение изображения на gcr.azk8s.cn/kubernetes-helm/tiller:v2.14.3 расположение gcr.io кажется заблокированным.

Возможно, вам потребуется изменить расположение образа на gcr.azk8s.cn/kubernetes-helm/ tiller : v2.14.3 расположение gcr.io кажется заблокированным.

Несмотря на то, что проблема является полностью допустимой, она немного ортогональна проблеме, присутствующей в этом выпуске, к сожалению, gcr.io заблокирован в Китае. См. Https://github.com/helm/charts/issues/14607 для получения дополнительной информации.

мы смогли решить эту проблему, откатив версию Kubernetes до 1.15.4.

Спасибо @UmamaheshMaxwell за то, что поделился этим.

Не могли бы вы поделиться шагами, которые вы использовали для отката версии kubernetes?

@cyrilt спасибо, если это minikube, minikube config set kubernetes-version v1.15.4

Спасибо @UmamaheshMaxwell за то, что поделился этим.

Не могли бы вы поделиться шагами, которые вы использовали для отката версии kubernetes?

@cyrilthank, мы использовали наши собственные виртуальные 1.15.4

  1. kubeadm сбросить
  2. sudo apt-get install kubelet = 1.15.4-00 kubectl = 1.15.4-00 kubeadm = 1.15.4-00
  3. sudo kubeadm init --pod-network-cidr = 10.244.10.0 / 16 --apiserver-Advertise-address = xxxx --apiserver-cert-extra-sans = xxxx --kubernetes-version "1.15.4"

--pod-network-cidr=10.244.10.0/16 - фланель
--apiserver-advertise-address=x.x.x.x - частный IP вашей ВМ (Мастер)
--apiserver-cert-extra-sans=x.x.x.x - общедоступный IP-адрес вашей виртуальной машины (мастер) (требуется, если вы пытаетесь получить доступ к своему мастеру с локального компьютера.

Примечание. Перейдите по ссылке ниже, чтобы настроить файл kubeconfig для автономного кластера Kubernetes (http://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/)

Дайте мне знать, если у вас останутся вопросы.

@cyrilt спасибо, если это minikube, конфигурация minikube установлена ​​kubernetes-version v1.15.4

Спасибо, @MrSimonEmms, мой не мини, я думаю, мне придется пойти по шагам @UmamaheshMaxwell

Спасибо @UmamaheshMaxwell за то, что поделился этим.
Не могли бы вы поделиться шагами, которые вы использовали для отката версии kubernetes?

@cyrilthank, мы использовали наши собственные виртуальные

kubeadm сбросить
sudo apt-get install kubelet = 1.15.4-00 kubectl = 1.15.4-00 kubeadm = 1.15.4-00
sudo kubeadm init --pod-network-cidr = 10.244.10.0 / 16 --apiserver-Advertise-address = xxxx --apiserver-cert-extra-sans = xxxx --kubernetes-version "1.15.4"

--pod-network-cidr = 10.244.10.0 / 16 - фланель
--apiserver-Advertise-address = xxxx - частный IP-адрес вашей виртуальной машины (Master)
--apiserver-cert-extra-sans = xxxx - общедоступный IP-адрес вашей виртуальной машины (мастер) (это необходимо, если вы пытаетесь получить доступ к своему мастеру с локального компьютера.
Примечание. Перейдите по ссылке ниже, чтобы настроить файл kubeconfig для автономного кластера Kubernetes (http://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/)
Дайте мне знать, если у вас останутся вопросы.

Спасибо @UmamaheshMaxwell за ваш терпеливый ответ

У меня уже есть установка Kubernetes 1.16. Не могли бы вы подтвердить, могу ли я попробовать выполнить эти шаги?

Спасибо @UmamaheshMaxwell за то, что поделился этим.
Не могли бы вы поделиться шагами, которые вы использовали для отката версии kubernetes?
@cyrilthank, мы использовали наши собственные виртуальные
kubeadm сбросить
sudo apt-get install kubelet = 1.15.4-00 kubectl = 1.15.4-00 kubeadm = 1.15.4-00
sudo kubeadm init --pod-network-cidr = 10.244.10.0 / 16 --apiserver-Advertise-address = xxxx --apiserver-cert-extra-sans = xxxx --kubernetes-version "1.15.4"
--pod-network-cidr = 10.244.10.0 / 16 - фланель
--apiserver-Advertise-address = xxxx - частный IP-адрес вашей виртуальной машины (Master)
--apiserver-cert-extra-sans = xxxx - общедоступный IP-адрес вашей виртуальной машины (мастер) (это необходимо, если вы пытаетесь получить доступ к своему мастеру с локального компьютера.
Примечание. Перейдите по ссылке ниже, чтобы настроить файл kubeconfig для автономного кластера Kubernetes (http://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/)
Дайте мне знать, если у вас останутся вопросы.

Спасибо @UmamaheshMaxwell за ваш терпеливый ответ

У меня уже есть установка Kubernetes 1.16. Не могли бы вы подтвердить, могу ли я попробовать выполнить эти шаги?

Да @cyrilthank , даже у нас был kubernetes 1.16.1, но нам пришлось откатить его до 1.15.4 , ниже ссылка, если вы хотите настроить его с нуля.

Версия ОС ВМ

Distributor ID: Ubuntu
Description:    Ubuntu 18.04.3 LTS
Release:    18.04
Codename:   bionic

Очистить куберенетес

kubeadm reset
sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube*   
sudo apt-get autoremove  
sudo rm -rf ~/.kube

Настройка Kubernetes (как мастер, так и узел)
https://www.howtoforge.com/tutorial/how-to-install-kubernetes-on-ubuntu/
(вам лучше автоматизировать шаги, предложенные в приведенной выше ссылке, насколько это возможно, чтобы сэкономить ваше время)

Дайте мне знать, если вам все еще понадобится помощь. Счастливого пути с откатом :), надеюсь, у вас все пройдет гладко.

Возможно, вам потребуется изменить расположение образа на gcr.azk8s.cn/kubernetes-helm/ tiller : v2.14.3 расположение gcr.io кажется заблокированным.

Несмотря на то, что проблема является полностью допустимой, она немного ортогональна проблеме, присутствующей в этом выпуске, к сожалению, gcr.io заблокирован в Китае. См. Helm / charts # 14607 для получения дополнительной информации.

Я не в Китае, а в США. Но я думаю, что мой VPN заблокировал этот сайт. В любом случае, я выполнил все шаги, описанные в этой теме, и не мог заставить его работать, пока не попытался получить изображение вручную и не увидел, что он не отвечает - просто что-то еще, чтобы попробовать, если кто-то застрянет в том же месте, что и меня.

Я тоже получаю сообщение об ошибке:

$ helm init
$HELM_HOME has been configured at C:\Users\user\.helm.
Error: error installing: the server could not find the requested resource

Я пробую решение, предложенное в этой проблеме, особенно в этом . Однако после соответствующего изменения файла tiller.yaml я не могу обновить конфигурацию. Я пытаюсь выполнить следующую команду, чтобы применить изменения / обновить конфигурацию:

$ kubectl apply -f tiller.yaml
deployment.apps/tiller-deploy configured
service/tiller-deploy configured

Но тогда, если я побегу:

$ helm init --output yaml > tiller2.yaml

Файл tiller2.yaml показывает:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: helm
    name: tiller
  name: tiller-deploy
  namespace: kube-system
spec:
  replicas: 1
  strategy: {}
  template:

В основном изменения не отражаются. Поэтому я предполагаю, что я неправильно обновляю конфигурацию. Как правильно это сделать?


РЕДАКТИРОВАТЬ : мне удалось запустить его. Я использую Minikube, и, чтобы запустить его, сначала я понизил версию Kubernetes до 1.15.4.

minikube delete
minikube start --kubernetes-version=1.15.4

Затем я использовал прокси, поэтому мне пришлось добавить IP Minikube в список NO_PROXY: в моем случае 192.168.99.101 . См .: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/

Примечание: после некоторого дальнейшего тестирования, возможно, в переходе на более раннюю версию нет необходимости, и, возможно, все, что мне не хватало, это шаг NO_PROXY. Я добавил все 192.168.99.0/24 , 192.168.39.0/24 и 10.96.0.0/12 в настройку NO_PROXY, и теперь, похоже, все работает нормально.

helm init --service-account tiller --override spec.selector.matchLabels.'name '=' tiller ', spec.selector.matchLabels.'app' = 'helm' --output yaml | @ apiVersion sed : расширения / v1beta1 @ apiVersion : apps / v1 @ '| kubectl apply -f -

Это сработало для меня, большое спасибо

По мере развития Kubernetes API периодически реорганизуется или обновляется. По мере развития API старый API устаревает и в конечном итоге удаляется.

Выпуск v1.16 перестанет обслуживать следующие устаревшие версии API в пользу более новых и более стабильных версий API:

NetworkPolicy (in the extensions/v1beta1 API group)
    Migrate to use the networking.k8s.io/v1 API, available since v1.8. Existing persisted data can be retrieved/updated via the networking.k8s.io/v1 API.
PodSecurityPolicy (in the extensions/v1beta1 API group)
    Migrate to use the policy/v1beta1 API, available since v1.10. Existing persisted data can be retrieved/updated via the policy/v1beta1 API.
DaemonSet, Deployment, StatefulSet, and ReplicaSet (in the extensions/v1beta1 and apps/v1beta2 API groups)
    Migrate to use the apps/v1 API, available since v1.9. Existing persisted data can be retrieved/updated via the apps/v1 API.

Выпуск v1.20 перестанет обслуживать следующие устаревшие версии API в пользу более новых и более стабильных версий API:

Ingress (in the extensions/v1beta1 API group)
    Migrate to use the networking.k8s.io/v1beta1 API, serving Ingress since v1.14. Existing persisted data can be retrieved/updated via the networking.k8s.io/v1beta1 API.

Что делать

  • Измените файлы YAML, чтобы они ссылались на новые API
  • Обновите пользовательские интеграции и контроллеры для вызова новых API
  • Обновите сторонние инструменты (контроллеры входа, системы непрерывной доставки) для вызова новых API

Ссылаться на :

Как рулевой n00b, использующий minikube, я смог обойти эту проблему, установив версию kubernetes следующим образом:

$ minikube delete
$ minikube start --kubernetes-version=1.15.4

Надеюсь, поможет!

@PierreF Я использовал ваше решение (https://github.com/helm/helm/issues/6374#issuecomment-533186177) с k8s v1.16.1 и helm v2.15.0, и румпель не работает.

Readiness probe failed: Get http://10.238.128.95:44135/readiness: dial tcp 10.238.128.95:44135: connect: connection refused

@ joshprzybyszewski-wf Я использовал следующую команду

minikube start --memory=16384 --cpus=4 --kubernetes-version=1.15.4
kubectl create -f istio-1.3.3/install/kubernetes/helm/helm-service-account.yaml
helm init --service-account tiller
helm install istio-1.3.3/install/kubernetes/helm/istio-init --name istio-init --namespace istio-system
helm install istio-1.3.3/install/kubernetes/helm/istio --name istio --namespace istio-system

А теперь получи,

Error: validation failed: [unable to recognize "": no matches for kind "DestinationRule" in version "networking.istio.io/v1alpha3", unable to recognize "": no matches for kind "DestinationRule" in version "networking.istio.io/v1alpha3", unable to recognize "": no matches for kind "attributemanifest" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "attributemanifest" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "handler" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "handler" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "instance" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2", unable to recognize "": no matches for kind "rule" in version "config.istio.io/v1alpha2"]

Вот краткосрочный обходной путь:

helm init --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -

На самом деле этого недостаточно. Я все еще получаю сообщение об ошибке:

error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec

Это можно исправить с помощью:

/usr/local/bin/kubectl patch --local -oyaml -f - -p '{"spec":{"selector": {"app":"helm","name":"tiller"}}}'

вы пропустили добавление селектора публикации macthLabels .

Меня перенаправили на решение @jbrette . Это то, что я получил, когда запустил его

error: error parsing STDIN: error converting YAML to JSON: yaml: line 11: mapping values are not allowed in this context

Это было исправлено в Helm 2.16.0 .

Меня перенаправили на решение @jbrette . Это то, что я получил, когда запустил его

error: error parsing STDIN: error converting YAML to JSON: yaml: line 11: mapping values are not allowed in this context

Проверьте файлы yaml, в большинстве случаев в указанной строке есть {} или [], но в ней все еще определены другие элементы, вызывающие ошибку. В большинстве случаев проблема заключается в файле values.yaml, в противном случае проверьте раздел шаблонов диаграммы.

Просто примечание к решению @PierreF и @mihivagyok . Это не сработало для меня, когда я использовал частные репозитории Helm.

$ helm repo add companyrepo https://companyrepo
Error: Couldn't load repositories file (/home/username/.helm/repository/repositories.yaml).

Я предполагаю, что это происходит из-за того, что helm init не запускается, а просто генерирует файл yaml. Я исправил это, запустив helm init -c в качестве дополнения.

в k8s v1.16.6 для команды helm init otput требуется spec.selector fyi.

Текущий обходной путь выглядит примерно так:

helm init --output yaml> tiller.yaml
и обновите tiller.yaml:

  • изменить на apps / v1
  • добавить поле селектора
---
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: helm
    name: tiller
  name: tiller-deploy
  namespace: kube-system
spec:
  replicas: 1
  strategy: {}
  selector:
    matchLabels:
      app: helm
      name: tiller
....

Это работает, поскольку кубернеты меняют apiVersion apps / v1 на для развертывания, нужно изменить одну вещь: нам нужно добавить селектор matchLabels для спецификации

Другой обходной путь может заключаться в использовании Helm 3, в котором не используется румпель.

helm init --output yaml | @ apiVersion sed : расширения / v1beta1 @ apiVersion : apps / v1 @ '| kubectl apply -f -

Привет, пока я пытаюсь это сделать, я получаю следующее:

jenkins @ jenkin : ~ / .kube $ helm init --output yaml | @ apiVersion sed : расширения / v1beta1 @ apiVersion : apps / v1 @ '| kubectl apply -f -

Команда kubectl не найдена, но ее можно установить с помощью:

оснастить kubectl
Обратитесь к своему администратору.

jenkins @ jenkin : ~ / .kube $

Вывод helm version : v2.14.3
Вывод kubectl version : клиент: v1.15.3, сервер: v1.16.0-rc.1
Облачный провайдер / платформа (AKS, GKE, Minikube и т. Д.): IBM Cloud Kubernetes Service

$ helm init --service-account tiller
$HELM_HOME has been configured at /Users/xxxx/.helm.
Error: error installing: the server could not find the requested resource

$ helm init --debug --service-account tiller
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: helm
    name: tiller
  name: tiller-deploy
  namespace: kube-system
spec:
. 
.
.

Похоже, что helm пытается создать tiller Deployment с помощью: apiVersion: extensions/v1beta1
Согласно: https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16
это больше не поддерживается.

получаю эту ошибку: как я могу ее решить ???

root @ jenkin : ~ # helm init - сервис-аккаунт tiller
$ HELM_HOME настроен в /root/.helm.
Ошибка: ошибка при установке: неизвестно (post deployments.extensions)
корень @ jenkin : ~ #

Вот краткосрочный обходной путь:

helm init --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -

На самом деле этого недостаточно. Я все еще получаю сообщение об ошибке:

error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec

Это можно исправить с помощью:

/usr/local/bin/kubectl patch --local -oyaml -f - -p '{"spec":{"selector": {"app":"helm","name":"tiller"}}}'

Я получаю эту ошибку:

jenkins @ jenkin : ~ / .helm $ helm init --output yaml | @ apiVersion sed : расширения / v1beta1 @ apiVersion : apps / v1 @ '| kubectl apply -f -

Команда kubectl не найдена, но ее можно установить с помощью:

оснастить kubectl
Обратитесь к своему администратору.

jenkins @ jenkin : ~ / .helm $

Обходной путь с использованием jq :

helm init -o json | jq '(select(.apiVersion == "extensions/v1beta1") .apiVersion = "apps/v1")' | jq '(select(.kind == "Deployment") .spec.selector.matchLabels.app = "helm")' | jq '(select(.kind == "Deployment") .spec.selector.matchLabels.name = "tiller")' | kubectl create -f -

Обходной путь с использованием jq :

helm init -o json | jq '(select(.apiVersion == "extensions/v1beta1") .apiVersion = "apps/v1")' | jq '(select(.kind == "Deployment") .spec.selector.matchLabels.app = "helm")' | jq '(select(.kind == "Deployment") .spec.selector.matchLabels.name = "tiller")' | kubectl create -f -

Вы не можете обновить ресурс с помощью kubectl create

@ikarlashov достаточно просто заменить «создать» на «применить». Приведенный выше однострочный текст предполагает, что вы еще не пробовали создавать ресурсы.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги