Helm: File Helm init ada di Kubernetes 1.16.0

Dibuat pada 6 Sep 2019  ·  83Komentar  ·  Sumber: helm/helm

Output dari helm version : v2.14.3
Keluaran kubectl version : client: v1.15.3, server: v1.16.0-rc.1
Penyedia / Platform Cloud (AKS, GKE, Minikube, dll.): Layanan IBM Cloud Kubernetes

$ 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:
. 
.
.

Sepertinya helm mencoba membuat tiller Deployment dengan: apiVersion: extensions/v1beta1
Menurut: https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16
yang tidak lagi didukung.

bug

Komentar yang paling membantu

Sed berikut berfungsi untuk saya:

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 -

Masalah dengan solusi @mattymo (menggunakan kubectl patch --local) adalah sepertinya tidak berfungsi ketika inputnya berisi banyak resource (di sini ada Deployment dan Service).

Semua 83 komentar

Kami telah menghindari pembaruan tiller ke apps / v1 di masa lalu karena kerumitan karena memiliki helm init --upgrade merekonsiliasi Deployment tiller extensions/v1beta1 dan apps/v1 . Sepertinya begitu kami mulai mendukung Kubernetes 1.16.0, kami harus menangani kasus tersebut ke depannya dan bermigrasi ke apiVersion yang lebih baru.

Berikut solusi jangka pendek:

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

Sebenarnya itu belum cukup. Saya masih mendapatkan kesalahan:

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

Ini dapat ditambal dengan:

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

Bagus! Anda mungkin bisa mendapatkan efek yang sama dengan bendera --override daripada hacks gila :)

Bagus! Anda mungkin bisa mendapatkan efek yang sama dengan bendera --override daripada hacks gila :)

Ya, tapi hacks gila nya saya bisa copy & paste, sedangkan helm init --override "apiVersion"="apps/v1" ini tidak berfungsi. Ok, peretasan sed juga tidak berfungsi.

solusi saat ini tampaknya seperti ini:

helm init --output yaml> tiller.yaml
dan perbarui tiller.yaml:

  • ubah ke apps / v1
  • tambahkan bidang pemilih
---
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 berikut berfungsi untuk saya:

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 -

Masalah dengan solusi @mattymo (menggunakan kubectl patch --local) adalah sepertinya tidak berfungsi ketika inputnya berisi banyak resource (di sini ada Deployment dan Service).

Kubernetes 1.16.0 dirilis kemarin: 18/9/2018.
Helm rusak pada rilis Kubernetes terbaru ini kecuali jika solusi di atas digunakan.

Kapan masalah ini akan diperbaiki dan kapan Helm 2.15.0 dirilis?

Jika Anda ingin menggunakan satu 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 -

Terima kasih!

Hari ini saya menemui masalah yang sama, saya mengganti labelnya sendiri. Saya mengubah label menjadi apps/v1 dan menambahkan selector bagian, sekarang kinerjanya bagus, di bawah ini adalah file yaml saya:

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 Anda adalah pahlawan saya! Saya bergumul dengan bait selector .

Hari ini saya menemui masalah yang sama, saya mengganti labelnya sendiri. Saya mengubah label menjadi apps/v1 dan menambahkan selector bagian, sekarang kinerjanya bagus, di bawah ini adalah file yaml saya:

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: {}

bagaimana cara mengubahnya? dapatkah Anda menjelaskan lebih detail?

Hari ini saya menemui masalah yang sama, saya mengganti labelnya sendiri. Saya mengubah label menjadi apps/v1 dan menambahkan selector bagian, sekarang kinerjanya bagus, di bawah ini adalah file yaml saya:

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 bagaimana cara mengubah dan dapatkah Anda menjelaskan lebih detail?

Hari ini saya menemui masalah yang sama, saya mengganti labelnya sendiri. Saya mengubah label menjadi apps/v1 dan menambahkan selector bagian, sekarang kinerjanya bagus, di bawah ini adalah file yaml saya:

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 bagaimana cara mengubah dan dapatkah Anda menjelaskan lebih detail?

Misalnya, Anda dapat menggunakan helm init --service-account tiller --tiller-namespace kube-system --debug untuk mencetak manifes format YAML, opsi --debug akan melakukan ini

@ gm12367 Ya, saya dapat melihat hasil cetak tetapi hanya keluaran. Jadi, perintah apa yang bisa saya ubah hasilnya?

@ gm12367 Saya ingin mengubah apps / v1 dan menambahkan bagian pemilih

@ puww1010 Saya baru saja mengarahkan output dalam sebuah file, dan kemudian menggunakan VIM untuk mengubahnya. Di bawah perintah sebagai referensi.

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

jika go environment Anda sudah diatur dan Anda tidak bisa menunggu sampai PR berikut yang memperbaiki masalah ini [Helm init yang kompatibel dengan Kubernetes 1.16] # 6462 digabungkan, Anda selalu dapat melakukan:

Membangun

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

Uji:

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

`` pesta
kubectl dapatkan deployment.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 Masih mengalami masalah yang sama setelah mengikuti instruksi Anda

@jbrette Masih mengalami masalah yang sama setelah mengikuti instruksi Anda

Sepertinya Anda mengetik "helm" alih-alih "./bin/helm".... jadi Anda menggunakan biner versi lama.

Setelah init berhasil, Anda tidak akan dapat menginstal paket grafik dari repositori hingga mengganti extension / v1beta1 di dalamnya juga.
Berikut adalah cara mengadaptasi grafik apa pun dari repositori untuk k8s v1.16.0
Contohnya berdasarkan grafik prometheus.

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

Ganti extensions / v1beta1 ke 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}' {} +`

ApiVersion NetworkPolicy ditangani dengan baik oleh _helpers.tpl untuk bagan tempat ia digunakan.

Ganti ekstensi / v1beta1 ke apps / v1 di 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}' {} +`

Buat paket baru:

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

Instal itu:
helm install /home/vagrant/charts/stable/prometheus-9.1.1.tgz

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

PS Untuk beberapa grafik dengan dependensi Anda mungkin perlu menggunakan helm dependency update dan mengganti dependen tgz dengan yang telah ditambal jika ada.

Mendapatkan kesalahan yang sama saat menjalankan helm init --history-max 200

keluaran

$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

Cabang ini berfungsi https://github.com/keleustes/helm/tree/kube16. Anda dapat membangun cabang sendiri. Saya juga mengunggah biner di sini untuk kenyamanan Anda https://s3-us-west-2.amazonaws.com/bin.cryptexlabs.com/github.com/keleustes/helm/kube16/darwin/helm. Satu peringatan adalah Anda harus menggunakan bendera gambar kenari helm init --canary-image karena build belum dirilis

Anda tidak perlu gambar kenari untuk membuat ini berfungsi. Saya akan menyarankan menggunakan helm init --tiller-image gcr.io/kubernetes-helm/tiller:v2.14.3 seperti yang disebutkan @jbrette sebelumnya jika Anda ingin mencoba # 6462.

Saya akan merekomendasikan pengguna untuk mencoba salah satu solusi yang disediakan sebelumnya terlebih dahulu sebelum mencoba PR; dengan begitu, mereka dapat terus menggunakan Helm 2.14.3 sebagai ganti cabang dev kustom yang masih dalam peninjauan.

Ketika saya melakukan perintah, ia akan menerapkannya tetapi setelah itu dapat melihatnya di pod dan mengatakan Kesalahan dari server (NotFound): pod "tiller-deploy" tidak ditemukan

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 dibuat
service / tiller-deploy dibuat

Tetapi ketika saya melakukan kubectl get pods --all-namespaces tidak dapat melihat pod tersebut
NAMESPACE NAMA STATUS SIAP DIMULAI USIA
kube-system coredns-5644d7b6d9-559hw 1/1 Berjalan 0 23h
kube-system coredns-5644d7b6d9-xcmjd 1/1 Berjalan 0 23h
kube-system etcd-fmp 1/1 Berjalan 0 24h
kube-system kube-apiserver-fmp 1/1 Berjalan 0 24j
kube-system kube-controller-manager-fmp 1/1 Berjalan 1 24jam
kube-system kube-flannel-ds-amd64-ffx2g 1/1 Berjalan 0 23h
kube-system kube-proxy-lfvrz 1/1 Berjalan 0 24h
kube-system kube-scheduler-fmp 1/1 Berjalan 0 24h

kubectl mendapatkan semua --all-namespaces | grep tiller
layanan kube-system / tiller-deploy ClusterIP xxx44134 / TCP 2m52s
kube-system deployment.apps / tiller-deploy 0/1 0 0 2m54s
kube-system replicaset.apps / tiller-deploy-77855d9dcf 1 0 0 2m54s

@DanielIvaylov Saya rasa Anda tidak memiliki akun layanan anakan. Harap buat, lalu penerapan akan membuat pod anakan juga.

Terima kasih!

@DanielIvaylov Saya rasa Anda tidak memiliki akun layanan anakan. Harap buat, lalu penerapan akan membuat pod anakan juga.

Terima kasih!

Maaf, saya baru saya pikir ini akan memulainya. Bagaimana saya memulai akun layanan anakan?

@Bayu_joo

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

Menambahkan tanda di bawah ini ke server api (/etc/kubernetes/manifests/kube-apiserver.yaml) yang untuk sementara mengaktifkan kembali API yang tidak digunakan lagi tersebut.

--runtime-config = apps / v1beta1 = true, apps / v1beta2 = true, extension / v1beta1 / daemonsets = true, extension / v1beta1 / deployments = true, extensions / v1beta1 / replicasets = true, extensions / v1beta1 / networkpolicies = true, extensions / v1beta1 / podsecuritypolicies = true

Ini memperbaiki helm v2

Untuk pengguna windows, kami dapat menginstal / mengupgrade tiller melalui PowerShell seperti:

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

Berikut solusi jangka pendek:

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

Sebenarnya itu belum cukup. Saya masih mendapatkan kesalahan:

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

Ini dapat ditambal dengan:

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

bagi saya, kubectl patch sedang menggantung
tidak ada pesan di file / var / log / syslog

akun layanan sudah ada

kubeflow @ masternode : ~ $ kubectl --namespace kube-system membuat an tiller
Error dari server (AlreadyExists): "tiller" akun layanan sudah ada
kubeflow @ masternode : ~ $ kubectl buat clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount = kube- system: tiller
Error dari server (AlreadyExists): clusterrolebindings.rbac.authorization.k8s.io "tiller" sudah ada

dapatkah Anda memberi saran

mengeksekusi di bawah ini

ekspor PATH = $ PATH: / usr / local / bin
helm yang mana
anakan yang mana
pemasangan helm \
--name nfs-client-provisioner \
--set nfs.server = 10.0.0.4 \
--set nfs.path = / nfsroot \
--set storageClass.name = nfs \
--set storageClass.defaultClass = true \
stable / nfs-client-provisioner

kembali kembali dengan

/ usr / local / bin / helm
/ usr / local / bin / tiller
Kesalahan: tidak dapat menemukan penggarap

menghargai bantuan apa pun karena ini sekarang menjadi penghenti acara

@cyrilthank Tampaknya kesalahan anakan adalah karena tidak ada penerapan anakan yang berjalan, coba jalankan perintah ini untuk menginstal anakan:
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 harus mengembalikan versi server (anakan) jika sudah aktif dan berjalan dengan baik

Terima kasih Pak.
Anda telah membantu kami untuk melanjutkan dengan kubeflow ke langkah berikutnya

ok sekarang saya pikir saya mendapat masalah ini
https://github.com/kubeflow/kubeflow/issues/4184
kembali sebagai pemblokir

Kami sangat menghargai jika Anda dapat membantu dengan nasihat tentang bagaimana saya dapat memperoleh bantuan di https://github.com/kubeflow/kubeflow/issues/4184

@cyrilthank coba langkah-langkah yang diberikan di atas: https://github.com/helm/helm/issues/6374#issuecomment -533853888
Anda perlu mengganti versi api yang tidak digunakan lagi dengan yang baru

kubeflow_workaround_and_error_traces.txt

Terima kasih Pak atas balasan pasien Anda terutama dalam menjaga masalah ini tetap terbuka

Maaf tentang ini, tetapi sepertinya saya melakukan kesalahan dalam langkah-langkah penyelesaian masalah

Hargai jika Anda dapat meninjau langkah-langkah dalam jejak terlampir dan memberi tahu saya tentang kesalahan yang saya lakukan

@cyrilterima kasih Anda hanya perlu menjalankan perintah sed pada kubeflow yamls Anda untuk mengganti ekstensi api lama dengan yang baru (tidak perlu menggunakan prometheus sama sekali 😆). Maaf Jika saya tidak mengekspresikan diri saya dengan cukup baik.
Perbaikannya pada dasarnya mengganti extensions/v1beta1 dengan apps/v1 di kubeflow dpl yamls Anda

ah jadi saya melakukan salinan bodoh :(

KFAPP saya = / nfsroot / kf-poc

saya masih mendapatkan beberapa pesan dan kesalahan terakhir keluar

bisakah Anda membantu karena saya bergantung pada Anda sekarang untuk melanjutkan ke langkah berikutnya di kubeflow

kubeflow_workaround_sed_and_error_traces.txt

@cyrilterima kasih Anda hanya perlu menjalankan perintah sed pada kubeflow yamls Anda untuk mengganti ekstensi api lama dengan yang baru (tidak perlu menggunakan prometheus sama sekali sambil tertawa). Maaf Jika saya tidak mengekspresikan diri saya dengan cukup baik.
Perbaikannya pada dasarnya mengganti extensions/v1beta1 dengan apps/v1 di kubeflow dpl yamls Anda

apps/v1beta2 juga dengan apps/v1

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

Terima kasih banyak @uniuuu atas bantuannya
Bisakah Anda memberi tahu di mana / bagaimana mendapatkan file yaml yang dirujuk di 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

meminta sejak setelah membuat perubahan sed kami masih menemukan kesalahan yang dirujuk

dapatkah Anda memberi tahu jika langkah tersebut

kubectl convert -f--output-version/

perlu dieksekusi untuk setiapmenjadi setiap file yaml di lokasi KFAPP termasuk .kache

Jika Anda telah menerapkan solusi yang disebutkan di atas saat bekerja dengan helm init , dan masih mendapatkan kesalahan berikut saat mencoba hal-hal seperti helm version , itu karena helm deployment tidak dapat ditemukan.

Error: could not find tiller

Anda perlu menjalankan kubectl get events --all-namespaces | grep -i tiller untuk mengetahui mengapa belum siap.

Misalnya, masalah saya adalah seperti di bawah ini, karena saya tidak memerlukan serviceaccount "tiller" dengan 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

Jadi saya melakukan pekerjaan tanpa akun layanan

- 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 saya menghapus komentar Anda karena tidak relevan dengan diskusi yang terlibat di sini. Silakan lanjutkan untuk menindaklanjuti di kubeflow / kubeflow # 4184. Terima kasih!

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 -

Koreksi sedikit

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 Saya baru saja mengarahkan output dalam sebuah file, dan kemudian menggunakan VIM untuk mengubahnya. Di bawah perintah sebagai referensi.

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

Saya mencoba melakukan ini. Setelah mengedit file di VIM saya menggunakan perintah kubectl apply , tetapi sepertinya tidak melakukan apa-apa. Ketika saya menjalankan helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml lagi atau helm init --output yaml perubahan belum diterapkan. Ada lagi yang mengalami ini?

Jika Anda ingin menggunakan satu 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 -

Terima kasih!

Saya baru saja meningkatkan k8 kami dan saya menghadapi masalah ini dan saya menggunakan solusi di atas. Ini menciptakan penyebaran tetapi replicaset gagal dan inilah yang saya dapatkan dari 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

Di mana saya dapat menemukan file yaml untuk membuat akun layanan itu?

@Bayu_joo

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

Ini memecahkan masalah saya!

6462 telah digabungkan dan akan tersedia di rilis berikutnya (2.15.0). Untuk saat ini, silakan gunakan solusi yang disediakan di atas atau gunakan rilis kenari .

Terimakasih semuanya!

Gambar kenari masih menghasilkan kesalahan yang sama kecuali belum ada penggabungan ini,

@ puww1010 Saya baru saja mengarahkan output dalam sebuah file, dan kemudian menggunakan VIM untuk mengubahnya. Di bawah perintah sebagai referensi.

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

Saya mencoba melakukan ini. Setelah mengedit file di VIM saya menggunakan perintah kubectl apply , tetapi sepertinya tidak melakukan apa-apa. Ketika saya menjalankan helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml lagi atau helm init --output yaml perubahan belum diterapkan. Ada lagi yang mengalami ini?

Ya, terjadi pada saya juga.

Anda mungkin perlu mengubah lokasi gambar menjadi gcr.azk8s.cn/kubernetes-helm/tiller:v2.14.3 lokasi gcr.io tampaknya diblokir.

Anda mungkin perlu mengubah lokasi gambar ke gcr.azk8s.cn/kubernetes-helm/ tiller: v2.14.3 tampaknya lokasi gcr.io diblokir.

Meskipun masalah yang sepenuhnya valid, masalah tersebut sedikit ortogonal dengan masalah yang ada dalam terbitan ini, sayangnya gcr.io diblokir di China. Lihat https://github.com/helm/charts/issues/14607 untuk informasi lebih lanjut.

kami dapat memperbaiki masalah ini dengan mengembalikan versi kubernetes ke 1.15.4

Terima kasih @UmamaheshMaxwell telah membagikan ini.

Bisakah Anda membagikan langkah-langkah yang Anda gunakan untuk melakukan rollback versi kubernetes?

@ cyrilterima kasih jika itu minikube, minikube config set kubernetes-version v1.15.4

Terima kasih @UmamaheshMaxwell telah membagikan ini.

Bisakah Anda membagikan langkah-langkah yang Anda gunakan untuk melakukan rollback versi kubernetes?

@cyrilterima kasih kami telah menggunakan VM kami sendiri (Ubuntu 18+), di bawah ini adalah setps untuk menginstal k8s versi 1.15.4

  1. kubeadm reset
  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 - flanel
--apiserver-advertise-address=x.x.x.x - IP pribadi VM Anda (Master)
--apiserver-cert-extra-sans=x.x.x.x - IP Publik VM Anda (Master) (Ini diperlukan, jika Anda mencoba mengakses Master dari mesin lokal Anda.

Catatan: Ikuti tautan di bawah ini untuk menyiapkan file kubeconfig untuk cluster Kubernetes yang dihosting sendiri (http://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/)

Beri tahu saya jika Anda masih memiliki pertanyaan.

@ cyrilthank jika itu minikube, konfigurasi minikube set kubernetes-version v1.15.4

Terima kasih @MrSimonEmms milik saya tidak mini Saya rasa saya harus mengikuti langkah-langkah @UmamaheshMaxwell

Terima kasih @UmamaheshMaxwell telah membagikan ini.
Bisakah Anda membagikan langkah-langkah yang Anda gunakan untuk melakukan rollback versi kubernetes?

@cyrilthank kami telah menggunakan VM kami sendiri (Ubuntu 18+), di bawah ini adalah setps untuk menginstal k8s versi 1.15.4

kubeadm reset
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 - flanel
--apiserver-advertise-address = xxxx - IP pribadi VM Anda (Master)
--apiserver-cert-extra-sans = xxxx - IP Publik VM Anda (Master) (Ini diperlukan, jika Anda mencoba mengakses Master dari mesin lokal Anda.
Catatan: Ikuti tautan di bawah ini untuk menyiapkan file kubeconfig untuk cluster Kubernetes yang dihosting sendiri (http://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/)
Beri tahu saya jika Anda masih memiliki pertanyaan.

Terima kasih @UmamaheshMaxwell atas balasan kesabaran Anda

Saya memiliki penyiapan kubernetes 1.16, bisakah Anda mengonfirmasi apakah saya dapat mencoba menjalankan langkah-langkah ini?

Terima kasih @UmamaheshMaxwell telah membagikan ini.
Bisakah Anda membagikan langkah-langkah yang Anda gunakan untuk melakukan rollback versi kubernetes?
@cyrilthank kami telah menggunakan VM kami sendiri (Ubuntu 18+), di bawah ini adalah setps untuk menginstal k8s versi 1.15.4
kubeadm reset
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 - flanel
--apiserver-advertise-address = xxxx - IP pribadi VM Anda (Master)
--apiserver-cert-extra-sans = xxxx - IP Publik VM Anda (Master) (Ini diperlukan, jika Anda mencoba mengakses Master dari mesin lokal Anda.
Catatan: Ikuti tautan di bawah ini untuk menyiapkan file kubeconfig untuk cluster Kubernetes yang dihosting sendiri (http://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/)
Beri tahu saya jika Anda masih memiliki pertanyaan.

Terima kasih @UmamaheshMaxwell atas balasan kesabaran Anda

Saya memiliki penyiapan kubernetes 1.16, bisakah Anda mengonfirmasi apakah saya dapat mencoba menjalankan langkah-langkah ini?

Ya @cyrilthank , meskipun kami memiliki kubernetes 1.16.1 tetapi kami harus mengembalikannya ke 1.15.4 , di bawah ini adalah tautan jika Anda ingin mengaturnya dari awal.

Versi OS VM

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

Bersihkan kuberenetes

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

Siapkan Kubernetes (_Kedua Master dan Node_)
https://www.howtoforge.com/tutorial/how-to-install-kubernetes-on-ubuntu/
(Anda lebih baik mengotomatiskan langkah-langkah yang disarankan dalam tautan di atas sebanyak yang Anda bisa, untuk menghemat waktu Anda)

Beri tahu saya jika Anda masih membutuhkan bantuan lebih lanjut. Happy Journey with roll back :), semoga perjalananmu lancar.

Anda mungkin perlu mengubah lokasi gambar ke gcr.azk8s.cn/kubernetes-helm/ tiller: v2.14.3 tampaknya lokasi gcr.io diblokir.

Meskipun masalah yang sepenuhnya valid, masalah tersebut sedikit ortogonal dengan masalah yang ada dalam terbitan ini, sayangnya gcr.io diblokir di China. Lihat helm / grafik # 14607 untuk informasi lebih lanjut.

Saya bukan di China, tapi di AS. Tapi saya rasa VPN saya memblokir situs itu. Bagaimanapun, saya mengikuti semua langkah yang diuraikan di utas ini dan tidak dapat membuatnya berfungsi sampai saya mencoba mendapatkan gambar secara manual dan melihatnya tidak merespons - hanya sesuatu yang lain untuk dicoba jika orang lain terjebak di tempat yang sama dengan saya.

Saya juga mendapatkan kesalahan:

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

Saya mencoba solusi yang diusulkan dalam masalah ini, terutama yang ini . Namun, setelah memodifikasi file tiller.yaml, saya tidak dapat memperbarui konfigurasi. Saya mencoba perintah berikut untuk menerapkan perubahan / memperbarui konfigurasi:

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

Tapi kemudian, jika saya menjalankan:

$ helm init --output yaml > tiller2.yaml

File tiller2.yaml menunjukkan:

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

Pada dasarnya, perubahan tersebut tidak tercermin. Jadi saya berasumsi bahwa saya tidak memperbarui konfigurasi dengan benar. Apa cara yang benar untuk melakukannya?


EDIT : Saya berhasil menjalankannya. Saya menggunakan Minikube, dan untuk menjalankannya, pertama-tama saya menurunkan versi Kubernetes ke 1.15.4.

minikube delete
minikube start --kubernetes-version=1.15.4

Kemudian, saya menggunakan proxy, jadi saya harus menambahkan IP Minikube ke daftar NO_PROXY: 192.168.99.101 dalam kasus saya. Lihat: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/

Catatan: Setelah beberapa pengujian lebih lanjut, mungkin downgrade tidak diperlukan, dan mungkin yang saya lewatkan hanyalah langkah NO_PROXY. Saya menambahkan semua 192.168.99.0/24 , 192.168.39.0/24 dan 10.96.0.0/12 ke pengaturan NO_PROXY dan sekarang tampaknya berfungsi dengan baik.

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

Ini berhasil untuk saya, Terima kasih banyak

Seiring dengan berkembangnya Kubernetes API, API diatur ulang atau ditingkatkan secara berkala. Saat API berkembang, API lama tidak digunakan lagi dan akhirnya dihapus.

Rilis v1.16 akan berhenti menyajikan versi API yang sudah tidak digunakan lagi berikut untuk mendukung versi API yang lebih baru dan lebih stabil:

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.

Rilis v1.20 akan berhenti menyajikan versi API yang tidak digunakan lagi berikut ini untuk mendukung versi API yang lebih baru dan lebih stabil:

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.

Apa yang harus dilakukan

  • Ubah file YAML untuk mereferensikan API yang lebih baru
  • Perbarui integrasi dan pengontrol khusus untuk memanggil API yang lebih baru
  • Perbarui alat pihak ketiga (pengontrol masuk, sistem pengiriman berkelanjutan) untuk memanggil API yang lebih baru

Mengacu pada :

Sebagai helm n00b yang menggunakan minikube, saya bisa mengatasi masalah ini dengan mengatur versi kubernetes seperti ini:

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

Semoga membantu!

@PierreF Saya menggunakan solusi Anda (https://github.com/helm/helm/issues/6374#issuecomment-533186177) dengan k8s v1.16.1 dan helm v2.15.0 dan anakan tidak berfungsi.

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

@ joshprzybyszewski-wf Saya menggunakan perintah berikut

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

Dan sekarang dapatkan,

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"]

Berikut solusi jangka pendek:

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

Sebenarnya itu belum cukup. Saya masih mendapatkan kesalahan:

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

Ini dapat ditambal dengan:

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

Anda melewatkan untuk menambahkan pemilih postingan macthLabels .

Saya diteruskan ke solusi @jbrette . Inilah yang saya dapatkan saat menjalankannya

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

Ini telah diperbaiki di Helm 2.16.0 .

Saya diteruskan ke solusi @jbrette . Inilah yang saya dapatkan saat menjalankannya

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

Periksa file yaml, dalam banyak kasus baris yang direferensikan memiliki {} atau [] dan masih memiliki hal lain yang ditentukan di bawahnya yang menyebabkan kesalahan. Dalam kebanyakan kasus, masalahnya ada di dalam values.yaml, jika tidak, periksa bagian templat pada bagan.

Sekadar catatan untuk solusi @PierreF dan @mihivagyok . Itu tidak berhasil untuk saya ketika saya menggunakan repo helm pribadi.

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

Saya rasa itu terjadi karena helm init tidak berjalan, hanya menghasilkan file yaml. Saya memperbaikinya dengan menjalankan helm init -c sebagai tambahan.

di k8s v1.16.6, otput helm init membutuhkan spec.selector fyi.

solusi saat ini tampaknya seperti ini:

helm init --output yaml> tiller.yaml
dan perbarui tiller.yaml:

  • ubah ke apps / v1
  • tambahkan bidang pemilih
---
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
....

Ini berfungsi, karena kubernetes mengubah apiVersion apps / v1 menjadi Deployment, ada satu hal yang perlu diubah adalah kita perlu menambahkan selector matchLabels untuk spesifikasi

Solusi lain bisa dengan menggunakan helm 3, yang tidak menggunakan anakan.

helm init --output yaml | sed 's @ apiVersion : extensions / v1beta1 @ apiVersion : apps / v1 @ '| kubectl apply -f -

Hai, saat mencoba ini saya mendapatkan ini:

jenkins @ jenkin : ~ / .kube $ helm init --output yaml | sed 's @ apiVersion : extensions / v1beta1 @ apiVersion : apps / v1 @ '| kubectl apply -f -

Perintah 'kubectl' tidak ditemukan, tetapi dapat diinstal dengan:

snap instal kubectl
Silakan tanya administrator Anda.

jenkins @ jenkin : ~ / .kube $

Output dari helm version : v2.14.3
Keluaran kubectl version : client: v1.15.3, server: v1.16.0-rc.1
Penyedia / Platform Cloud (AKS, GKE, Minikube, dll.): Layanan IBM Cloud Kubernetes

$ 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:
. 
.
.

Sepertinya helm mencoba membuat tiller Deployment dengan: apiVersion: extensions/v1beta1
Menurut: https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16
yang tidak lagi didukung.

saya mendapatkan kesalahan ini: bagaimana saya bisa mengatasinya ???

root @ jenkin : ~ # helm init --service-account tiller
$ HELM_HOME telah dikonfigurasi di /root/.helm.
Kesalahan: kesalahan menginstal: tidak diketahui (post deployments.extensions)
root @ jenkin : ~ #

Berikut solusi jangka pendek:

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

Sebenarnya itu belum cukup. Saya masih mendapatkan kesalahan:

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

Ini dapat ditambal dengan:

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

Saya mendapatkan kesalahan ini:

jenkins @ jenkin : ~ / .helm $ helm init --output yaml | sed 's @ apiVersion : extensions / v1beta1 @ apiVersion : apps / v1 @ '| kubectl apply -f -

Perintah 'kubectl' tidak ditemukan, tetapi dapat diinstal dengan:

snap instal kubectl
Silakan tanya administrator Anda.

jenkins @ jenkin : ~ / .helm $

Solusi, menggunakan 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 -

Solusi, menggunakan 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 -

Anda tidak dapat memperbarui sumber daya dengan kubectl create

@ikarlashov cukup mudah untuk mengganti 'buat' dengan 'terapkan.' Satu baris di atas menganggap seseorang belum mencoba membuat sumber daya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat