Ich habe das Problem während der Bereitstellung von mojaloop .kubernetes reagiert mit einem Fehlerprotokoll wie
Ich habe meine Kubernetes-Version überprüft und 1.16 ist die Version. Wie kann ich ein solches Problem mit der API-Version beheben? Nach einer Untersuchung habe ich festgestellt, dass Kubernetes keine Apps / v1beta2, apps / v1beta1 unterstützt. Wie kann ich Kubernetes dazu bringen? Derzeit nicht veraltete oder unterstützte Version verwenden Ich bin neu bei Kubernetes und jeder, der mich unterstützen kann, ist glücklich
Fehler: Validierung fehlgeschlagen: [nicht erkennbar "": keine Übereinstimmungen für die Art "Bereitstellung" in Version "apps / v1beta2", nicht erkennbar "": keine Übereinstimmungen für die Art "Bereitstellung" in Version "extensions / v1beta1", nicht möglich erkennen "": keine Übereinstimmungen für die Art "StatefulSet" in Version "apps / v1beta2", nicht erkennbar "": keine Übereinstimmungen für die Art "StatefulSet" in Version "apps / v1beta1"]
quelle
Antworten:
In Kubernetes 1.16 wurden einige
api
s geändert.Sie können überprüfen, welche APIs das aktuelle Kubernetes-Objekt verwenden
Dies bedeutet, dass nur apiVersion mit
apps
für Bereitstellungen korrekt ist (extensions
wird nicht unterstütztDeployment
). Die gleiche Situation mit StatefulSet.Sie müssen lediglich die Bereitstellung und die StatefuSet-Anwendung auf ändern
apiVersion: apps/v1
.Wenn dies nicht hilft, fügen Sie bitte Ihre YAML zur Frage hinzu.
BEARBEITEN Da das Problem durch HELM-Vorlagen verursacht wird, die alte APIVersionen in Bereitstellungen enthalten, die in Version 1.16 nicht unterstützt werden, gibt es zwei mögliche Lösungen:
1.
git clone
Ganzes Repo und Ersetzen von apiVersionapps/v1
in allen Templates / Deployment.yaml mithilfe des Skripts.2. Verwenden Sie eine ältere Version von Kubernetes (1.15), wenn der Validator
extensions
wieapiVersion
fürDeployent
und akzeptiertStatefulSet
.quelle
extensions/v1beta1
. Eine der möglichengit clone
Problemumgehungen besteht darin, apiVersionapps/v1
in allen Vorlagen / Deployment.yaml usinc script vollständig zu repo und zu ersetzen. Die zweite Problemumgehung bestehtfind . -name 'deployment.yaml' | xargs -n 1 perl -pi -e 's/(apps\/v1beta2)|(extensions\/v1beta1)/apps\/v1/g'.
möglicherweise darin, nur eine ältere Version von Kubernetes (1.15) zu verwenden, wenn der Validator Erweiterungen als apiVersion für Deployent und StatefulSet akzeptiert.Minikube
oderKubeadm
?Sie können alternativ manuell ändern. Holen Sie sich die Steuerkarte:
Greifen Sie auf den Diagrammordner zu:
API-Version ändern:
Hinzufügen
spec.selector.matchLabels
:Installieren Sie schließlich Ihr geändertes Diagramm:
Genießen!
quelle
Das hat mich geärgert, weil ich viele Helmpakete teste, also habe ich ein schnelles Skript geschrieben - das geändert werden könnte, um Ihren Workflow zu sortieren, siehe unten
Neuer Workflow Rufen Sie zuerst das Diagramm als TGZ in Ihr Arbeitsverzeichnis ab
Führen Sie dann in Ihrer Arbeit direkt das unten stehende Bash-Skript aus, das ich helmk nannte
Inhalt von helmk - Sie müssen Ihren kubeconfig-Clusternamen bearbeiten, damit er funktioniert
Es ist ein etwas gefährlicher Hack, da ich manuell zu Ihrem neuen gewünschten Namespace-Kontext und dann wieder zurück wechsle, um ihn nur für Einzelbenutzer-Entwickler zu verwenden oder dies zu kommentieren.
Sie erhalten eine Warnung zur Verwendung dieser Kubectl-Konvertierungsfunktion
Wenn Sie die YAML bearbeiten müssen, um sie anzupassen, ersetzen Sie einfach eine der Dateien / dev / stdin durch Zwischendateien. Es ist jedoch wahrscheinlich besser, sie mit "create" mit einer Save-Konfiguration wie ich aufzurufen und dann einfach Ihre Änderungen "anzuwenden" was bedeutet, dass sie auch in Kubernetes aufgezeichnet werden. Viel Glück
quelle
Um es einfach auszudrücken: Sie erzwingen nicht, dass die aktuelle Installation eine veraltete Version der API verwendet. Sie korrigieren jedoch einfach die Version in Ihren Konfigurationsdateien, wenn Sie überprüfen möchten, welche Version Ihr aktueller Kube unterstützt. Führen Sie einfach Folgendes aus:
root @ ubn64: ~ # kubectl API-Versionen | grep -i Apps
apps / v1
root @ ubn64: ~ #
quelle