Ausgabe von helm version
: v2.14.3
Ausgabe von kubectl version
: Client: v1.15.3, Server: v1.16.0-rc.1
Cloud-Anbieter / Plattform (AKS, GKE, Minikube usw.): 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:
.
.
.
Es sieht so aus, als würde das Ruder versuchen, eine Bereitstellung von tiller
zu erstellen mit: apiVersion: extensions/v1beta1
Laut: https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16
das wird nicht mehr unterstützt.
Wir haben es in der Vergangenheit aufgrund der Komplexität vermieden, die Pinne auf Apps / v1 zu aktualisieren, da helm init --upgrade
sowohl extensions/v1beta1
als auch apps/v1
Pinnenbereitstellungen in Einklang gebracht hat. Es sieht so aus, als müssten wir, sobald wir Kubernetes 1.16.0 unterstützen, diesen Fall in Zukunft behandeln und auf die neuere API migrieren.
Hier ist eine kurzfristige Problemumgehung:
helm init --output yaml | sed 's<strong i="6">@apiVersion</strong>: extensions/v1beta1<strong i="7">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
Eigentlich ist es nicht gut genug. Ich erhalte immer noch eine Fehlermeldung:
error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec
Dies kann gepatcht werden mit:
/usr/local/bin/kubectl patch --local -oyaml -f - -p '{"spec":{"selector": {"app":"helm","name":"tiller"}}}'
Nett! Möglicherweise können Sie mit der Flagge --override
den gleichen Effekt erzielen wie mit verrückten Sed-Hacks :)
Nett! Möglicherweise können Sie mit der Flagge
--override
den gleichen Effekt erzielen wie mit verrückten Sed-Hacks :)
Ja, aber seine verrückten Sed-Hacks kann ich kopieren und einfügen, während dieses helm init --override "apiVersion"="apps/v1"
einfach nicht funktioniert. Ok, der sed hack funktioniert auch nicht.
Die aktuelle Problemumgehung scheint ungefähr so zu sein:
helm init --output yaml> tiller.yaml
und aktualisieren Sie die tiller.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
....
Das folgende sed funktioniert für mich:
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 -
Das Problem mit der @attymo- Lösung (unter Verwendung des kubectl-Patches --local) ist, dass sie anscheinend nicht funktioniert, wenn ihre Eingabe mehrere Ressourcen enthält (hier eine Bereitstellung und ein Dienst).
Kubernetes 1.16.0 wurde gestern veröffentlicht: 18.09.2008.
Bei dieser neuesten Kubernetes-Version ist der Helm kaputt, es sei denn, die oben beschriebene Lösung wird verwendet.
Wann wird dieses Problem behoben und wann wird Helm 2.15.0
veröffentlicht?
Wenn du ein Sed weniger verwenden willst :)
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 -
Vielen Dank!
Heute bin ich auf das gleiche Problem gestoßen, ich habe das Label selbst geändert. Ich ändere die Bezeichnung in apps/v1
und füge selector
Teil hinzu. Ab sofort funktioniert es hervorragend. Unten ist meine Yaml-Datei:
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 du bist mein Held! Ich hatte Probleme mit der Strophe selector
.
Heute bin ich auf das gleiche Problem gestoßen, ich habe das Label selbst geändert. Ich ändere die Bezeichnung in
apps/v1
und fügeselector
Teil hinzu. Ab sofort funktioniert es hervorragend. Unten ist meine Yaml-Datei: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: {}
wie man sich ändert Kannst du mehr Details beschreiben?
Heute bin ich auf das gleiche Problem gestoßen, ich habe das Label selbst geändert. Ich ändere die Bezeichnung in
apps/v1
und fügeselector
Teil hinzu. Ab sofort funktioniert es hervorragend. Unten ist meine Yaml-Datei: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 wie zu ändern und können Sie weitere Details beschreiben?
Heute bin ich auf das gleiche Problem gestoßen, ich habe das Label selbst geändert. Ich ändere die Bezeichnung in
apps/v1
und fügeselector
Teil hinzu. Ab sofort funktioniert es hervorragend. Unten ist meine Yaml-Datei: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 wie zu ändern und können Sie weitere Details beschreiben?
Sie können beispielsweise helm init --service-account tiller --tiller-namespace kube-system --debug
, um Manifeste im YAML-Format zu drucken. Die Option --debug
erledigt dies
@ gm12367 Ja, ich kann den Druck sehen, aber nur ausgeben. Welchen Befehl kann ich also ändern?
@ gm12367 Ich möchte Apps / v1 ändern und einen Auswahlteil hinzufügen
@ puww1010 Ich habe gerade die Ausgabe in eine Datei umgeleitet und dann VIM verwendet, um sie zu ändern. Unten Befehle als Referenz.
# helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml
# vim helm-init.yaml
# kubectl apply -f helm-init.yaml
Wenn Ihre Go-Umgebung eingerichtet ist und Sie nicht warten können, bis der folgende PR, der dieses Problem behebt [Helm init kompatibel mit Kubernetes 1.16] # 6462, zusammengeführt wird, können Sie immer Folgendes tun:
Bauen
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
Prüfung:
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
`` `Bash
kubectl get deploy.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 Immer noch das gleiche Problem, nachdem Sie Ihren Anweisungen
@jbrette Immer noch das gleiche Problem, nachdem Sie Ihren Anweisungen
Sieht so aus, als hätten Sie "helm" anstelle von "./bin/helm"...." eingegeben. Sie verwenden also die alte Version der Binärdatei.
Nach erfolgreicher Initialisierung können Sie ein Diagrammpaket erst dann aus dem Repository installieren, wenn Sie auch die Erweiterungen / v1beta1 darin ersetzen.
Hier erfahren Sie, wie Sie ein Diagramm aus dem Repository für k8s v1.16.0 anpassen
Das Beispiel basiert auf einem Prometheus-Diagramm.
git clone https://github.com/helm/charts
cd charts/stable
Ersetzen Sie die Erweiterungen / v1beta1 durch die Richtlinie / 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 wird von _helpers.tpl für die Diagramme, in denen es verwendet wird, gut verarbeitet.
Ersetzen Sie die Erweiterungen / v1beta1 durch Apps / v1 in 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}' {} +`
Erstellen Sie ein neues Paket:
helm package ./prometheus
Successfully packaged chart and saved it to: /home/vagrant/charts/stable/prometheus-9.1.1.tgz
Es installieren:
helm install /home/vagrant/charts/stable/prometheus-9.1.1.tgz
Basierend auf https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/
PS Für einige Diagramme mit Abhängigkeiten müssen Sie möglicherweise helm dependency update
und abhängige tgz gegebenenfalls durch gepatchte ersetzen.
Beim Ausführen von helm init --history-max 200
der gleiche Fehler
Ausgabe
$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
Dieser Zweig funktioniert unter https://github.com/keleustes/helm/tree/kube16. Sie können den Zweig selbst erstellen. Ich habe die Binärdatei auch hier hochgeladen: https://s3-us-west-2.amazonaws.com/bin.cryptexlabs.com/github.com/keleustes/helm/kube16/darwin/helm. Eine Einschränkung ist, dass Sie das kanarische Image-Flag helm init --canary-image
da der Build unveröffentlicht ist
Sie sollten das Kanarienvogelbild nicht benötigen, damit dies funktioniert. Ich würde vorschlagen, helm init --tiller-image gcr.io/kubernetes-helm/tiller:v2.14.3
als @jbrette zu verwenden , wenn Sie helm init --tiller-image gcr.io/kubernetes-helm/tiller:v2.14.3
6462 ausprobieren möchten.
Ich würde Benutzern empfehlen, zuerst eine der zuvor bereitgestellten Problemumgehungen auszuprobieren, bevor Sie eine PR ausprobieren. Auf diese Weise können sie weiterhin Helm 2.14.3 anstelle eines benutzerdefinierten Entwicklungszweigs verwenden, der noch geprüft wird.
Wenn ich den Befehl ausführe, wird es bereitgestellt, aber danach können Sie es in Pods sehen und Fehler vom Server (NotFound) sagen: Pods "Tiller-Deployment" nicht gefunden
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 -
deploy.apps / tiller-deploy erstellt
Service / Pinne-Bereitstellung erstellt
Aber wenn ich kubectl mache, bekomme ich Pods - alle Namespaces können die Pods nicht sehen
NAMESPACE NAME BEREIT STATUS RESTARTS ALTER
kube-system coredns-5644d7b6d9-559hw 1/1 Running 0 23h
kube-system coredns-5644d7b6d9-xcmjd 1/1 Running 0 23h
kube-system etcd-fmp 1/1 Läuft 0 24h
kube-system kube-apiserver-fmp 1/1 Laufen 0 24h
kube-system kube-controller-manager-fmp 1/1 Läuft 1 24h
kube-system kube-flanell-ds-amd64-ffx2g 1/1 Laufen 0 23h
kube-system kube-proxy-lfvrz 1/1 Laufen 0 24h
kube-system kube-scheduler-fmp 1/1 Läuft 0 24h
kubectl get all --all-namespaces | Grep Pinne
kube-system service / tiller-deploy ClusterIP xxx
kube-system deploy.apps / tiller-deploy 0/1 0 0 2m54s
kube-system replicaset.apps / tiller-deploy-77855d9dcf 1 0 0 2m54s
@ DanielIvaylov Ich denke, Sie haben nicht das Pinnen-Service-Konto. Bitte erstellen Sie es, und dann wird durch die Bereitstellung auch der Pinnen-Pod erstellt.
Vielen Dank!
@ DanielIvaylov Ich denke, Sie haben nicht das Pinnen-Service-Konto. Bitte erstellen Sie es, und dann wird durch die Bereitstellung auch der Pinnen-Pod erstellt.
Vielen Dank!
Sorry, ich bin neu, ich habe gelernt, dass dies damit beginnen wird. Wie starte ich das Pinnen-Service-Konto?
@ DanielIvaylov
kubectl --namespace kube-system create sa tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
Unter dem Flag zum API-Server (/etc/kubernetes/manifests/kube-apiserver.yaml) hinzugefügt, der diese veralteten APIs vorübergehend wieder aktiviert hat.
--runtime-config = apps / v1beta1 = true, apps / v1beta2 = true, Erweiterungen / v1beta1 / daemonsets = true, Erweiterungen / v1beta1 / deployments = true, Erweiterungen / v1beta1 / replicasets = true, Erweiterungen / v1beta1 / networkpolicies = true, extensions / v1beta1 / podsecuritypolicies = true
Dies reparierte das Ruder v2
Für Windows-Benutzer konnten wir die Pinne über Powershell wie folgt installieren / aktualisieren:
$(helm init --output yaml) -replace "extensions/v1beta1","apps/v1"
Hier ist eine kurzfristige Problemumgehung:
helm init --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
Eigentlich ist es nicht gut genug. Ich erhalte immer noch eine Fehlermeldung:
error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec
Dies kann gepatcht werden mit:
/usr/local/bin/kubectl patch --local -oyaml -f - -p '{"spec":{"selector": {"app":"helm","name":"tiller"}}}'
für mich hängt der kubectl patch
Keine Nachrichten in der Datei / var / log / syslog
Dienstkonten existieren bereits
kubeflow @ masternode : ~ $ kubectl --namespace kube-system erstellt eine Pinne
Fehler vom Server (AlreadyExists): Servicekonten "Pinne" sind bereits vorhanden
kubeflow @ masternode : ~ $ kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount = kube- system: tiller
Fehler vom Server (AlreadyExists): clusterrolebindings.rbac.authorization.k8s.io "Pinne" existiert bereits
Könnten Sie mir bitte einen Ratschlag geben
Ausführen der folgenden
export PATH = $ PATH: / usr / local / bin
welches Ruder
welche Pinne
Helm installieren \.
--name nfs-client-provisor \
--set nfs.server = 10.0.0.4 \
--set nfs.path = / nfsroot \
--set storageClass.name = nfs \
--set storageClass.defaultClass = true \
Stable / NFS-Client-Provisioner
kehrt mit zurück
/ usr / local / bin / helm
/ usr / local / bin / pinne
Fehler: Pinne konnte nicht gefunden werden
Ich freue mich über jede Hilfe, da dies jetzt ein Show-Stopper ist
@cyrilthank Der Pinnenbereitstellung ausgeführt wird. Führen Sie diesen Befehl aus, um die Pinne zu installieren:
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
sollte die Serverversion (Pinne) zurückgeben, wenn sie ordnungsgemäß funktioniert
Danke mein Herr.
Sie haben uns dabei geholfen, mit kubeflow mit dem nächsten Schritt fortzufahren
Ok, jetzt denke ich, ich habe dieses Problem
https://github.com/kubeflow/kubeflow/issues/4184
zurück als Blocker
Schätzen Sie es sehr, wenn Sie uns mit Ratschlägen helfen können, wie ich unter https://github.com/kubeflow/kubeflow/issues/4184 Hilfe bekommen kann
@cyrilthank Probieren Sie die oben angegebenen Schritte aus: https://github.com/helm/helm/issues/6374#issuecomment -533853888
Sie müssen die veralteten API-Versionen durch die neuen ersetzen
kubeflow_workaround_and_error_traces.txt
Vielen Dank, Sir, für Ihre geduldigen Antworten, insbesondere, um dieses Problem offen zu halten
Tut mir leid, aber es sieht so aus, als würde ich in den Umgehungsschritten etwas falsch machen
Schätzen Sie, ob Sie die Schritte in den beigefügten Spuren überprüfen und mich beraten können, was ich falsch mache
@cyrilthank Sie müssen nur die Befehle sed
für Ihre kubeflow yamls ausführen, um die alte API-Erweiterung durch die neue zu ersetzen (Prometheus muss überhaupt nicht bereitgestellt werden 😆). Entschuldigung, wenn ich mich nicht gut genug ausgedrückt habe.
Das Update ersetzt im Grunde extensions/v1beta1
durch apps/v1
in Ihren kubeflow dpl yamls
Ah, also habe ich eine dumme Kopie gemacht :(
mein KFAPP = / nfsroot / kf-poc
Ich scheine immer noch ein paar Nachrichten und den letzten Fehler zu bekommen
Kannst du mir bitte helfen, da ich jetzt auf dich angewiesen bin, um mit dem nächsten Schritt auf kubeflow fortzufahren?
@cyrilthank Sie müssen nur die
sed
-Befehle für Ihre kubeflow yamls ausführen, um die alte API-Erweiterung durch die neue zu ersetzen (Prometheus muss überhaupt nicht lachend bereitgestellt werden). Entschuldigung, wenn ich mich nicht gut genug ausgedrückt habe.
Das Update ersetzt im Grundeextensions/v1beta1
durchapps/v1
in Ihren kubeflow dpl yamls
apps/v1beta2
auch mit apps/v1
https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/
Vielen Dank @uniuuu für Ihre Hilfe
Können Sie bitte beraten , wo / wie die yaml Dateien referenziert zu erhalten , in 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
Anfordern, da nach dem Vornehmen der sed-Änderungen immer noch die Fehler aufgetreten sind, auf die in verwiesen wird
Kannst du bitte mitteilen, ob der Schritt
kubectl convert -f
muss für jeden ausgeführt werden
Wenn Sie die oben erwähnte Problemumgehung angewendet haben, wenn Sie mit helm init
, und dennoch die folgende Fehlermeldung erhalten, wenn Sie Dinge wie helm version
ausprobieren, liegt dies daran, dass helm
deployment
kann nicht gefunden werden.
Error: could not find tiller
Sie müssen kubectl get events --all-namespaces | grep -i tiller
ausführen, um zu wissen, warum es nicht fertig ist.
Zum Beispiel ist mein Problem einfach wie folgt, weil ich nicht serviceaccount "tiller"
mit microk8s
brauche.
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
Also habe ich die Arbeit ohne das Dienstkonto erledigt
- 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 Ich habe Ihren Kommentar entfernt, da er für die Diskussion hier nicht relevant ist. Bitte fahren Sie mit der Weiterverfolgung in kubeflow / kubeflow # 4184 fort. Vielen Dank!
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 -
Leichte Korrektur
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 Ich habe gerade die Ausgabe in eine Datei umgeleitet und dann VIM verwendet, um sie zu ändern. Unten Befehle als Referenz.
# helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml # vim helm-init.yaml # kubectl apply -f helm-init.yaml
Ich habe es versucht. Nach dem Bearbeiten der Datei in VIM verwende ich den Befehl kubectl apply
, aber es scheint nichts zu tun. Wenn ich helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml
erneut oder helm init --output yaml
ausführe, wurden die Änderungen nicht übernommen. Hat das noch jemand erlebt?
Wenn du ein Sed weniger verwenden willst :)
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 -
Vielen Dank!
Ich habe gerade unsere k8s aufgerüstet und bin auf dieses Problem gestoßen. Ich habe die obige Lösung verwendet. Es erstellt eine Bereitstellung, aber das Replikatset schlägt fehl und dies ist das, was ich von kubectl describe -n kube-system replicasets.apps tiller-deploy-77855d9dcf
bekomme:
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
Wo finde ich eine Yaml-Datei, um dieses Dienstkonto zu erstellen?
@ DanielIvaylov
kubectl --namespace kube-system create sa tiller kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
Das hat mein Problem gelöst!
Vielen Dank an alle!
Das kanarische Bild erzeugt immer noch den gleichen Fehler, es sei denn, es hat diese Zusammenführung noch nicht.
@ puww1010 Ich habe gerade die Ausgabe in eine Datei umgeleitet und dann VIM verwendet, um sie zu ändern. Unten Befehle als Referenz.
# helm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml # vim helm-init.yaml # kubectl apply -f helm-init.yaml
Ich habe es versucht. Nach dem Bearbeiten der Datei in VIM verwende ich den Befehl
kubectl apply
, aber es scheint nichts zu tun. Wenn ichhelm init --service-account tiller --tiller-namespace kube-system --debug >> helm-init.yaml
erneut oderhelm init --output yaml
ausführe, wurden die Änderungen nicht übernommen. Hat das noch jemand erlebt?
Ja, das passiert auch für mich.
Möglicherweise müssen Sie den Bildspeicherort in gcr.azk8s.cn/kubernetes-helm/tiller:v2.14.3
ändern. Der Speicherort gcr.io
scheint blockiert zu sein.
Möglicherweise müssen Sie den Speicherort des Bildes in gcr.azk8s.cn/kubernetes-helm/
Obwohl es sich um ein vollständig gültiges Problem handelt, ist dieses Problem leicht orthogonal zu dem in dieser Ausgabe enthaltenen Problem. In China ist gcr.io
leider blockiert. Weitere Informationen finden Sie unter https://github.com/helm/charts/issues/14607 .
Wir konnten dieses Problem beheben, indem wir die kubernetes-Version auf 1.15.4 zurückgesetzt haben
Vielen Dank an @UmamaheshMaxwell für das Teilen.
Können Sie bitte die Schritte mitteilen, die Sie zum Zurücksetzen der Kubernetes-Version verwendet haben?
@cyrilthank, wenn es Minikube ist, minikube config set kubernetes-version v1.15.4
Vielen Dank an @UmamaheshMaxwell für das Teilen.
Können Sie bitte die Schritte mitteilen, die Sie zum Zurücksetzen der Kubernetes-Version verwendet haben?
@cyrilthank wir haben unsere eigenen VMs (Ubuntu 18+) verwendet, unten sind die Setps für die Installation der k8s-Version 1.15.4
--pod-network-cidr=10.244.10.0/16
- Flanell
--apiserver-advertise-address=x.x.x.x
- private IP Ihrer VM (Master)
--apiserver-cert-extra-sans=x.x.x.x
- Öffentliche IP Ihrer VM (Master) (Dies ist erforderlich, wenn Sie versuchen, von Ihrem lokalen Computer aus auf Ihren Master zuzugreifen.
Hinweis: Folgen Sie dem folgenden Link, um eine kubeconfig-Datei für einen selbst gehosteten Kubernetes-Cluster einzurichten (http://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/).
Lassen Sie mich wissen, wenn Sie noch Fragen haben.
@cyrilthank Wenn es Minikube ist, setzt Minikube Config Kubernetes-Version v1.15.4
Danke @MrSimonEmms meins ist nicht mini Ich denke, ich muss mit @UmamaheshMaxwells Schritten gehen
Vielen Dank an @UmamaheshMaxwell für das Teilen.
Können Sie bitte die Schritte mitteilen, die Sie zum Zurücksetzen der Kubernetes-Version verwendet haben?@cyrilthank wir haben unsere eigenen VMs (Ubuntu 18+) verwendet, unten sind die Setps für die Installation von k8s Version 1.15.4
kubeadm zurücksetzen
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-werbeadresse = xxxx --apiserver-cert-extra-sans = xxxx --kubernetes-version "1.15.4"--pod-network-cidr = 10.244.10.0 / 16 - Flanell
--apiserver-Advertise-Address = xxxx - private IP Ihrer VM (Master)
--apiserver-cert-extra-sans = xxxx - Öffentliche IP Ihrer VM (Master) (Dies ist erforderlich, wenn Sie versuchen, von Ihrem lokalen Computer aus auf Ihren Master zuzugreifen.
Hinweis: Folgen Sie dem folgenden Link, um eine kubeconfig-Datei für einen selbst gehosteten Kubernetes-Cluster einzurichten (http://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/).
Lassen Sie mich wissen, wenn Sie noch Fragen haben.
Vielen Dank an @UmamaheshMaxwell für Ihre geduldige Antwort
Ich habe ein vorhandenes Kubernetes 1.16-Setup. Können Sie bitte bestätigen, ob ich versuchen kann, diese Schritte auszuführen?
Vielen Dank an @UmamaheshMaxwell für das Teilen.
Können Sie bitte die Schritte mitteilen, die Sie zum Zurücksetzen der Kubernetes-Version verwendet haben?
@cyrilthank wir haben unsere eigenen VMs (Ubuntu 18+) verwendet, unten sind die Setps für die Installation von k8s Version 1.15.4
kubeadm zurücksetzen
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-werbeadresse = xxxx --apiserver-cert-extra-sans = xxxx --kubernetes-version "1.15.4"
--pod-network-cidr = 10.244.10.0 / 16 - Flanell
--apiserver-Advertise-Address = xxxx - private IP Ihrer VM (Master)
--apiserver-cert-extra-sans = xxxx - Öffentliche IP Ihrer VM (Master) (Dies ist erforderlich, wenn Sie versuchen, von Ihrem lokalen Computer aus auf Ihren Master zuzugreifen.
Hinweis: Folgen Sie dem folgenden Link, um eine kubeconfig-Datei für einen selbst gehosteten Kubernetes-Cluster einzurichten (http://docs.shippable.com/deploy/tutorial/create-kubeconfig-for-self-hosted-kubernetes-cluster/).
Lassen Sie mich wissen, wenn Sie noch Fragen haben.Vielen Dank an @UmamaheshMaxwell für Ihre geduldige Antwort
Ich habe ein vorhandenes Kubernetes 1.16-Setup. Können Sie bitte bestätigen, ob ich versuchen kann, diese Schritte auszuführen?
Ja @cyrilthank , sogar wir hatten Kubernetes 1.16.1, aber wir mussten es auf 1.15.4
zurücksetzen. Unten ist der Link, wenn Sie es von Grund auf neu einrichten möchten.
VMs Betriebssystemversion
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
Kubereneten aufräumen
kubeadm reset
sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube*
sudo apt-get autoremove
sudo rm -rf ~/.kube
Kubernetes einrichten (sowohl Master als auch Node)
https://www.howtoforge.com/tutorial/how-to-install-kubernetes-on-ubuntu/
(Sie sollten die im obigen Link vorgeschlagenen Schritte so weit wie möglich automatisieren, um Zeit zu sparen.)
Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen. Happy Journey mit Rollback :), hoffe du hast eine reibungslose Reise damit.
Möglicherweise müssen Sie den Speicherort des Bildes in gcr.azk8s.cn/kubernetes-helm/
Obwohl es sich um ein vollständig gültiges Problem handelt, ist dieses Problem leicht orthogonal zu dem in dieser Ausgabe enthaltenen Problem. In China ist
gcr.io
leider blockiert. Weitere Informationen finden Sie unter Ruder / Charts Nr. 14607 .
Ich bin nicht in China, sondern in den USA. Aber ich denke, mein VPN hat diese Seite blockiert. Wie auch immer, ich habe alle in diesem Thread beschriebenen Schritte befolgt und konnte es nicht zum Laufen bringen, bis ich versuchte, das Bild manuell abzurufen und feststellte, dass es nicht reagierte - nur etwas anderes, um es zu versuchen, falls jemand anderes an der gleichen Stelle wie stecken bleibt mich.
Ich bekomme auch den Fehler:
$ helm init
$HELM_HOME has been configured at C:\Users\user\.helm.
Error: error installing: the server could not find the requested resource
Ich versuche eine in dieser Ausgabe vorgeschlagene Lösung, insbesondere diese . Nachdem ich die Datei tiller.yaml entsprechend geändert habe, kann ich die Konfiguration jedoch nicht aktualisieren. Ich versuche den folgenden Befehl, um die Änderungen zu übernehmen / die Konfiguration zu aktualisieren:
$ kubectl apply -f tiller.yaml
deployment.apps/tiller-deploy configured
service/tiller-deploy configured
Aber wenn ich renne:
$ helm init --output yaml > tiller2.yaml
Die Datei tiller2.yaml zeigt:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
name: tiller-deploy
namespace: kube-system
spec:
replicas: 1
strategy: {}
template:
Grundsätzlich spiegeln sich die Änderungen nicht wider. Ich gehe also davon aus, dass ich die Konfiguration nicht richtig aktualisiere. Was wäre der richtige Weg, um es zu tun?
EDIT : Ich habe es geschafft, es zum Laufen zu bringen. Ich verwende Minikube und um es zum Laufen zu bringen, habe ich zuerst die Kubernetes-Version auf 1.15.4 heruntergestuft.
minikube delete
minikube start --kubernetes-version=1.15.4
Dann benutzte ich einen Proxy, also musste ich die IP von Minikube zur NO_PROXY-Liste hinzufügen: 192.168.99.101
in meinem Fall. Siehe: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
Hinweis: Nach einigen weiteren Tests ist das Downgrade möglicherweise nicht erforderlich, und möglicherweise fehlte mir nur der Schritt NO_PROXY. Ich habe alle 192.168.99.0/24
, 192.168.39.0/24
und 10.96.0.0/12
zur NO_PROXY-Einstellung hinzugefügt und jetzt scheint es gut zu funktionieren.
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 -
Es hat bei mir funktioniert. Vielen Dank
Während sich die Kubernetes-API weiterentwickelt, werden APIs regelmäßig neu organisiert oder aktualisiert. Wenn sich APIs weiterentwickeln, ist die alte API veraltet und wird schließlich entfernt.
In Version v16 werden die folgenden veralteten API-Versionen nicht mehr zugunsten neuerer und stabilerer API-Versionen bereitgestellt:
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.
Die Version 1.20 stellt die Bereitstellung der folgenden veralteten API-Versionen zugunsten neuerer und stabilerer API-Versionen ein:
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.
Beziehen auf :
Als Helm n00b, der Minikube verwendet, konnte ich dieses Problem umgehen, indem ich eine Kubernetes-Version wie folgt einstellte:
$ minikube delete
$ minikube start --kubernetes-version=1.15.4
Ich hoffe es hilft!
@PierreF Ich habe Ihre Lösung (https://github.com/helm/helm/issues/6374#issuecomment-533186177) mit k8s v1.16.1 und helm v2.15.0 verwendet und die Pinne funktioniert nicht.
Readiness probe failed: Get http://10.238.128.95:44135/readiness: dial tcp 10.238.128.95:44135: connect: connection refused
@ joshprzybyszewski-wf Ich habe folgenden Befehl verwendet
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
Und jetzt bekommen,
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"]
Hier ist eine kurzfristige Problemumgehung:
helm init --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
Eigentlich ist es nicht gut genug. Ich erhalte immer noch eine Fehlermeldung:
error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec
Dies kann gepatcht werden mit:
/usr/local/bin/kubectl patch --local -oyaml -f - -p '{"spec":{"selector": {"app":"helm","name":"tiller"}}}'
Sie haben es versäumt, macthLabels
Post Selector hinzuzufügen.
Ich wurde zu @jbrettes Lösung weitergeleitet. Das habe ich bekommen, als ich es laufen ließ
error: error parsing STDIN: error converting YAML to JSON: yaml: line 11: mapping values are not allowed in this context
Dies wurde in Helm 2.16.0 behoben .
Ich wurde zu @jbrettes Lösung weitergeleitet. Das habe ich bekommen, als ich es laufen ließ
error: error parsing STDIN: error converting YAML to JSON: yaml: line 11: mapping values are not allowed in this context
Überprüfen Sie die Yaml-Dateien. In den meisten Fällen enthält die referenzierte Zeile {} oder [] und noch andere Dinge, die den Fehler verursachen. In den meisten Fällen liegt das Problem in der Datei values.yaml. Überprüfen Sie andernfalls den Vorlagenabschnitt des Diagramms.
Nur eine Randnotiz zur Lösung von @mihivagyok . Diese haben bei mir nicht funktioniert, wenn ich private Helm-Repos benutze.
$ helm repo add companyrepo https://companyrepo
Error: Couldn't load repositories file (/home/username/.helm/repository/repositories.yaml).
Ich denke, das passiert, weil helm init nicht ausgeführt wird, sondern nur eine yaml-Datei generiert. Ich habe das behoben, indem ich helm init -c
als Extra ausgeführt habe.
in k8s v1.16.6 erfordert helm init otput spec.selector fyi.
Die aktuelle Problemumgehung scheint ungefähr so zu sein:
helm init --output yaml> tiller.yaml
und aktualisieren Sie die tiller.yaml:
- Wechseln Sie zu Apps / v1
- Fügen Sie das Auswahlfeld hinzu
--- 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 ....
Es funktioniert, da kubernetes apiVersion apps / v1 für Deployment in ändert. Es muss eine Sache geändert werden: Wir müssen Selector matchLabels für spec hinzufügen
Eine andere Problemumgehung kann darin bestehen, Helm 3 zu verwenden, bei dem keine Pinne verwendet wird.
helm init --output yaml | sed ' s @ apiVersion : extensions / v1beta1 @ apiVersion : apps / v1 @' | kubectl apply -f -
Hallo, während ich das versuche, bekomme ich folgendes:
jenkins @ jenkin : ~ / .kube $ helm init --output yaml | sed ' s @ apiVersion : extensions / v1beta1 @ apiVersion : apps / v1 @' | kubectl apply -f -
Befehl 'kubectl' nicht gefunden, kann aber installiert werden mit:
Schnellinstallation kubectl
Bitte fragen Sie Ihren Administrator.
jenkins @ jenkin : ~ / .kube $
Ausgabe von
helm version
: v2.14.3
Ausgabe vonkubectl version
: Client: v1.15.3, Server: v1.16.0-rc.1
Cloud-Anbieter / Plattform (AKS, GKE, Minikube usw.): 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: . . .
Es sieht so aus, als würde das Ruder versuchen, eine Bereitstellung von
tiller
zu erstellen mit:apiVersion: extensions/v1beta1
Laut: https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16
das wird nicht mehr unterstützt.
bekomme diesen Fehler: Wie kann ich ihn lösen ???
root @ jenkin : ~ # helm init - Service-Account-Pinne
$ HELM_HOME wurde unter /root/.helm konfiguriert.
Fehler: Fehler bei der Installation: unbekannt (post deployments.extensions)
root @ jenkin : ~ #
Hier ist eine kurzfristige Problemumgehung:
helm init --output yaml | sed 's<strong i="7">@apiVersion</strong>: extensions/v1beta1<strong i="8">@apiVersion</strong>: apps/v1@' | kubectl apply -f -
Eigentlich ist es nicht gut genug. Ich erhalte immer noch eine Fehlermeldung:
error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec
Dies kann gepatcht werden mit:
/usr/local/bin/kubectl patch --local -oyaml -f - -p '{"spec":{"selector": {"app":"helm","name":"tiller"}}}'
Ich erhalte diesen Fehler:
jenkins @ jenkin : ~ / .helm $ helm init --output yaml | sed ' s @ apiVersion : extensions / v1beta1 @ apiVersion : apps / v1 @' | kubectl apply -f -
Befehl 'kubectl' nicht gefunden, kann aber installiert werden mit:
Schnellinstallation kubectl
Bitte fragen Sie Ihren Administrator.
jenkins @ jenkin : ~ / .helm $
Problemumgehung mit 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 -
Problemumgehung mit
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 -
Sie können die Ressource nicht mit kubectl create
aktualisieren
@ikarlashov einfach genug, um 'create' durch 'apply' zu ersetzen. Der obige Einzeiler setzt voraus, dass man noch nicht versucht hat, die Ressourcen zu erstellen.
Hilfreichster Kommentar
Das folgende sed funktioniert für mich:
Das Problem mit der @attymo- Lösung (unter Verwendung des kubectl-Patches --local) ist, dass sie anscheinend nicht funktioniert, wenn ihre Eingabe mehrere Ressourcen enthält (hier eine Bereitstellung und ein Dienst).