Hilf mit, diese Seite zu verbessern
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Wenn Sie zu diesem Benutzerhandbuch beitragen möchten, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Die Anleitung für das Upgrade von Hybridknoten ähnelt den selbstverwalteten Amazon EKS-Knoten, die in Amazon EC2 ausgeführt werden. Es wird empfohlen, neue Hybridknoten auf Ihrer Kubernetes-Zielversion zu erstellen, Ihre vorhandenen Anwendungen problemlos auf die Hybridknoten der neuen Kubernetes-Version zu migrieren und die Hybridknoten auf der alten Kubernetes-Version aus Ihrem Cluster zu entfernen. Lesen Sie unbedingt die Amazon EKS Best Practices für Upgrades, bevor Sie ein Upgrade starten. Amazon EKS-Hybridknoten bieten dieselbe Kubernetes-Versionsunterstützung für Amazon EKS-Cluster mit Cloud-Knoten, einschließlich Standard- und erweiterter Unterstützung.
Amazon EKS-Hybridknoten folgen derselben Versionsverzerrungsrichtlinie
Wenn Sie keine freien Kapazitäten haben, um neue Hybridknoten auf Ihrer Kubernetes-Zielversion für eine Upgrade-Strategie zur Umstellung der Migration zu erstellen, können Sie alternativ die Amazon EKS Hybrid Nodes CLI (nodeadm
) verwenden, um die Kubernetes-Version Ihrer Hybridknoten vor Ort zu aktualisieren.
Wichtig
Wenn Sie Ihre Hybridknoten direkt mit aktualisierennodeadm
, kommt es während des Vorgangs, bei dem die ältere Version der Kubernetes-Komponenten heruntergefahren und die Komponenten der neuen Kubernetes-Version installiert und gestartet werden, zu Ausfallzeiten für den Knoten.
Voraussetzungen
Stellen Sie vor dem Upgrade sicher, dass Sie die folgenden Voraussetzungen erfüllt haben.
-
Die Kubernetes-Zielversion für Ihr Hybrid-Knoten-Upgrade muss gleich oder kleiner als die Version der Amazon EKS-Kontrollebene sein.
-
Wenn Sie eine Upgrade-Strategie für die Umstellung der Migration verfolgen, müssen die neuen Hybridknoten, die Sie auf Ihrer Kubernetes-Zielversion installieren, die Anforderungen erfüllen. Vorbereitende Einrichtung für Hybridknoten Dazu gehören IP-Adressen innerhalb des Remote Node Network CIDR, das Sie bei der Erstellung des Amazon EKS-Clusters übergeben haben.
-
Sowohl für die Umstellung als auch für direkte Upgrades müssen die Hybridknoten Zugriff auf die erforderlichen Domänen haben, um die neuen Versionen der Abhängigkeiten der Hybridknoten abrufen zu können.
-
Sie müssen kubectl auf Ihrem lokalen Computer oder Ihrer Instance installiert haben, die Sie für die Interaktion mit Ihrem Amazon EKS Kubernetes API-Endpunkt verwenden.
-
Die Version Ihres CNI muss die Kubernetes-Version unterstützen, auf die Sie ein Upgrade durchführen. Wenn dies nicht der Fall ist, aktualisieren Sie Ihre CNI-Version, bevor Sie Ihre Hybridknoten aktualisieren. Weitere Informationen finden Sie unter Ein CNI für Hybridknoten konfigurieren.
Upgrades für die Cutover-Migration (blau-grün)
Bei Cutover-Migrationsaktualisierungen handelt es sich um den Prozess der Erstellung neuer Hybridknoten auf neuen Hosts mit Ihrer Kubernetes-Zielversion, der ordnungsgemäßen Migration Ihrer vorhandenen Anwendungen auf die neuen Hybridknoten auf Ihrer Kubernetes-Zielversion und der Entfernung der Hybridknoten auf der alten Kubernetes-Version aus Ihrem Cluster. Diese Strategie wird auch als blau-grüne Migration bezeichnet.
-
Connect Ihre neuen Hosts als Hybridknoten, indem Sie den Hybridknoten Connect Schritten folgen. Verwenden Sie bei der Ausführung des
nodeadm install
Befehls Ihre Kubernetes-Zielversion. -
Ermöglichen Sie die Kommunikation zwischen den neuen Hybridknoten auf der Ziel-Kubernetes-Version und Ihren Hybridknoten auf der alten Kubernetes-Version. Diese Konfiguration ermöglicht es Pods, miteinander zu kommunizieren, während Sie Ihren Workload auf die Hybridknoten auf der Kubernetes-Zielversion migrieren.
-
Bestätigen Sie, dass Ihre Hybridknoten auf Ihrer Kubernetes-Zielversion Ihrem Cluster erfolgreich beigetreten sind und den Status Bereit haben.
-
Verwenden Sie den folgenden Befehl, um jeden Knoten, den Sie entfernen möchten, als nicht planbar zu markieren. Dadurch wird verhindert, dass neue Pods auf den Knoten, die Sie ersetzen, geplant oder neu geplant werden. Weitere Informationen finden Sie unter kubectl cordon in der Kubernetes-Dokumentation
. Ersetzen Sie es NODE_NAME
durch den Namen der Hybridknoten in der alten Kubernetes-Version.kubectl cordon
NODE_NAME
Sie können alle Knoten einer bestimmten Kubernetes-Version (in diesem Fall
1.28
) mit dem folgenden Codeausschnitt identifizieren und absperren.K8S_VERSION=1.28 for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name') do echo "Cordoning $node" kubectl cordon $node done
-
Wenn in Ihrer aktuellen Bereitstellung weniger als zwei CoreDNS-Replikate auf Ihren Hybridknoten ausgeführt werden, skalieren Sie die Bereitstellung auf mindestens zwei Replikate. Es wird empfohlen, mindestens zwei CoreDNS-Replikate auf Hybridknoten auszuführen, um die Ausfallsicherheit während des normalen Betriebs zu gewährleisten.
kubectl scale deployments/coredns --replicas=2 -n kube-system
-
Entleeren Sie jeden der Hybridknoten auf der alten Kubernetes-Version, die Sie aus Ihrem Cluster entfernen möchten, mit dem folgenden Befehl. Weitere Informationen zum Entleeren von Knoten finden Sie unter Safely Drain a Node
in der Kubernetes-Dokumentation. NODE_NAME
Ersetzen Sie es durch den Namen der Hybridknoten in der alten Kubernetes-Version.kubectl drain
NODE_NAME
--ignore-daemonsets --delete-emptydir-dataSie können alle Knoten einer bestimmten Kubernetes-Version (in diesem Fall
1.28
) mit dem folgenden Codeausschnitt identifizieren und löschen.K8S_VERSION=1.28 for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name') do echo "Draining $node" kubectl drain $node --ignore-daemonsets --delete-emptydir-data done
-
Sie können es verwenden
nodeadm
, um die Artefakte der Hybridknoten zu stoppen und vom Host zu entfernen. Sie müssen die Ausführungnodeadm
mit einem Benutzer ausführen, der über Root-/Sudo-Rechte verfügt.nodeadm uninstall
Wird standardmäßig nicht fortgesetzt, wenn noch Pods auf dem Knoten vorhanden sind. Weitere Informationen finden Sie unter nodeadmReferenz für Hybridknoten.nodeadm uninstall
-
Nachdem die Artefakte der Hybridknoten gestoppt und deinstalliert wurden, entfernen Sie die Knotenressource aus Ihrem Cluster.
kubectl delete node
node-name
Sie können alle Knoten einer bestimmten Kubernetes-Version (in diesem Fall
1.28
) mit dem folgenden Codeausschnitt identifizieren und löschen.K8S_VERSION=1.28 for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name') do echo "Deleting $node" kubectl delete node $node done
-
Je nachdem, für welches CNI Sie sich entschieden haben, können nach der Ausführung der obigen Schritte noch Artefakte auf Ihren Hybridknoten verbleiben. Weitere Informationen finden Sie unter Ein CNI für Hybridknoten konfigurieren.
Direkte Upgrades
Der direkte Upgrade-Prozess bezieht sich auf das Upgrade der Kubernetes-Version für Hybridknoten, ohne neue physische oder virtuelle Hosts und eine Umstellungsstrategie zu verwenden. nodeadm upgrade
Der nodeadm upgrade
Prozess fährt die vorhandenen älteren Kubernetes-Komponenten herunter, die auf dem Hybridknoten ausgeführt werden, deinstalliert die vorhandenen älteren Kubernetes-Komponenten, installiert die neuen Kubernetes-Zielkomponenten und startet die neuen Kubernetes-Zielkomponenten. Es wird dringend empfohlen, jeweils einen Knoten zu aktualisieren, um die Auswirkungen auf Anwendungen, die auf den Hybridknoten ausgeführt werden, zu minimieren. Die Dauer dieses Vorgangs hängt von Ihrer Netzwerkbandbreite und Latenz ab.
-
Verwenden Sie den folgenden Befehl, um den Knoten, den Sie aktualisieren, als nicht planbar zu markieren. Dadurch wird verhindert, dass neue Pods auf dem Knoten, den Sie aktualisieren, geplant oder verschoben werden. Weitere Informationen finden Sie unter kubectl cordon in der Kubernetes-Dokumentation
. Ersetzen Sie es NODE_NAME
durch den Namen des Hybridknotens, den Sie aktualisierenkubectl cordon NODE_NAME
-
Entleeren Sie den Knoten, den Sie aktualisieren, mit dem folgenden Befehl. Weitere Informationen zum Entleeren von Knoten finden Sie unter Sicheres Entleeren eines Knotens
in der Kubernetes-Dokumentation. NODE_NAME
Ersetzen Sie es durch den Namen des Hybridknotens, den Sie aktualisieren.kubectl drain NODE_NAME --ignore-daemonsets --delete-emptydir-data
-
Führen Sie es
nodeadm upgrade
auf dem Hybridknoten aus, den Sie aktualisieren. Sie müssen die Ausführungnodeadm
mit einem Benutzer ausführen, der über Root-/Sudo-Rechte verfügt. Der Name des Knotens wird beim Upgrade sowohl für AWS SSM- als auch für AWS IAM Roles Anywhere-Anmeldeinformationsanbieter beibehalten. Sie können die Anbieter von Anmeldeinformationen während des Upgrade-Vorgangs nicht ändern. Konfigurationswerte nodeadmReferenz für Hybridknoten für finden Sie unternodeConfig.yaml
.K8S_VERSION
Ersetzen Sie es durch die Kubernetes-Zielversion, auf die Sie das Upgrade durchführen.nodeadm upgrade K8S_VERSION -c file://nodeConfig.yaml
-
Geben Sie Folgendes ein, damit Pods nach dem Upgrade auf dem Knoten geplant werden können.
NODE_NAME
Ersetzen Sie es durch den Namen des Knotens.kubectl uncordon NODE_NAME
-
Beobachten Sie den Status Ihrer Hybridknoten und warten Sie, bis Ihre Knoten heruntergefahren und mit der neuen Kubernetes-Version mit dem Status Bereit neu gestartet werden.
kubectl get nodes -o wide -w