Aktualisieren Sie den vorhandenen Cluster auf die neue Kubernetes-Version - Amazon EKS

Helfen Sie 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.

Möchten Sie zu diesem Benutzerhandbuch beitragen? Wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet. Ihre Beiträge werden dazu beitragen, dass unser Benutzerhandbuch für alle besser wird.

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.

Aktualisieren Sie den vorhandenen Cluster auf die neue Kubernetes-Version

Wann ein neuer Kubernetes Version ist in Amazon EKS verfügbar. Sie können Ihren Amazon EKS-Cluster auf die neueste Version aktualisieren.

Wichtig

Sobald Sie einen Cluster aktualisiert haben, können Sie kein Downgrade auf eine frühere Version durchführen. Wir empfehlen dies, bevor Sie auf eine neue Version aktualisieren Kubernetes Für diese Version lesen Sie die Informationen unter Grundlegendes zum Lebenszyklus der Kubernetes-Version auf EKS sowie die Aktualisierungsschritte in diesem Thema.

Neu Kubernetes Versionen führen manchmal zu wesentlichen Änderungen. Daher empfehlen wir Ihnen, das Verhalten Ihrer Anwendungen anhand einer neuen Version zu testen Kubernetes Version, bevor Sie Ihre Produktionscluster aktualisieren. Sie können dies tun, indem Sie einen kontinuierlichen Integrations-Workflow erstellen, um das Verhalten Ihrer Anwendung zu testen, bevor Sie zu einer neuen wechseln Kubernetes Version.

Der Aktualisierungsprozess besteht darin, dass Amazon EKS neue API-Serverknoten mit dem aktualisierten startet Kubernetes Version, um die vorhandenen zu ersetzen. Amazon EKS führt standardmäßige Integritätsprüfungen der Infrastruktur und der Bereitschaft für den Netzwerkverkehr auf diesen neuen Knoten durch, um sicherzustellen, dass sie erwartungsgemäß funktionieren. Sobald Sie das Cluster-Upgrade gestartet haben, können Sie es jedoch weder anhalten noch beenden. Wenn eine dieser Prüfungen fehlschlägt, macht Amazon EKS die Infrastrukturbereitstellung rückgängig und Ihr Cluster bleibt auf dem vorherigen Kubernetes Version. Laufende Anwendungen sind davon nicht betroffen, und Ihr Cluster befindet sich nie in einem Zustand, der nicht deterministisch ist oder nicht wiederhergestellt werden kann. Amazon EKS sichert regelmäßig alle verwalteten Cluster, und es gibt Mechanismen, um Cluster bei Bedarf wiederherzustellen. Wir evaluieren und verbessern ständig unsere Kubernetes Prozesse für das Infrastrukturmanagement.

Um den Cluster zu aktualisieren, benötigt Amazon EKS bis zu fünf verfügbare IP-Adressen aus den Subnetzen, die beim Erstellen des Clusters bereitgestellt wurden. Amazon EKS erstellt in jedem der von Ihnen angegebenen Subnetze neue Elastic-Network-Schnittstellen für den Cluster (Netzwerkschnittstellen). Die Netzwerkschnittstellen können in anderen Subnetzen erstellt werden als Ihre vorhandenen Netzwerkschnittstellen. Stellen Sie daher sicher, dass Ihre Sicherheitsgruppenregeln die erforderliche Cluster-Kommunikation für jedes der Subnetze zulassen, die Sie bei der Erstellung Ihres Clusters angegeben haben. Wenn eines der Subnetze, die Sie bei der Erstellung des Clusters angegeben haben, nicht vorhanden ist, nicht genügend IP-Adressen verfügbar sind oder keine Sicherheitsgruppenregeln vorhanden sind, die die erforderliche Clusterkommunikation ermöglichen, kann das Update fehlschlagen.

Anmerkung

Um sicherzustellen, dass der API-Serverendpunkt für Ihren Cluster immer zugänglich ist, bietet Amazon EKS eine hochverfügbare Kubernetes Kontrollebene und führt während der Aktualisierungsvorgänge fortlaufende Aktualisierungen der API-Server-Instances durch. Um den sich ändernden IP-Adressen von API-Serverinstanzen Rechnung zu tragen, die Ihre unterstützen Kubernetes API-Serverendpunkt: Sie müssen sicherstellen, dass Ihre API-Serverclients Wiederverbindungen effektiv verwalten. Aktuelle Versionen von kubectl und Kubernetes Clientbibliotheken, die offiziell unterstützt werden, führen diesen Vorgang zur Wiederherstellung der Verbindung transparent durch.

Überlegungen zum Amazon EKS Auto Mode

  • Die Rechenkapazität von Amazon EKS Auto Mode steuert die Kubernetes-Version der Knoten. Nach dem Upgrade der Steuerungsebene beginnt der automatische Modus von EKS mit der schrittweisen Aktualisierung der verwalteten Knoten. Der EKS-Automatikmodus berücksichtigt die Budgets für Pod-Unterbrechungen.

  • Sie müssen die Funktionen von Amazon EKS Auto Mode, einschließlich der Funktionen für automatische Datenskalierung, Blockspeicher und Lastenausgleich, nicht manuell aktualisieren.

Schritt 1: Bereiten Sie sich auf das Upgrade vor

  1. Vergleichen Sie die Kubernetes Version Ihrer Cluster-Steuerebene mit der Kubernetes Version Ihrer Knoten.

    • Holen Sie sich die Kubernetes Version Ihrer Cluster-Steuerebene.

      kubectl version
    • Holen Sie sich das Kubernetes Version Ihrer Knoten. Dieser Befehl gibt alle selbstverwalteten und verwalteten Amazon- EC2, Fargate- und Hybridknoten zurück. Jedes Fargate Pod ist als eigener Knoten aufgeführt.

      kubectl get nodes

    Bevor Sie Ihre Steuerungsebene auf eine neue aktualisieren Kubernetes Version, stellen Sie sicher, dass die Kubernetes Die Nebenversion sowohl der verwalteten Knoten als auch der Fargate-Knoten in Ihrem Cluster entspricht der Version Ihrer Kontrollebene. Wenn auf Ihrer Kontrollebene beispielsweise die Version ausgeführt wird 1.29 und auf einem Ihrer Knoten die Version ausgeführt wird1.28, müssen Sie Ihre Knoten auf Version aktualisieren, 1.29 bevor Sie Ihre Kontrollebene auf Version 1.30 aktualisieren. Wir empfehlen Ihnen außerdem, Ihre selbstverwalteten Knoten und Hybridknoten auf dieselbe Version wie Ihre Kontrollebene zu aktualisieren, bevor Sie die Kontrollebene aktualisieren. Weitere Informationen finden Sie unter Aktualisieren Sie eine verwaltete Knotengruppe für Ihren Cluster, Aktualisieren Sie selbstverwaltete Knoten für Ihren Cluster und Aktualisieren Sie Hybridknoten für Ihren Cluster. Wenn Sie Fargate-Knoten mit einer niedrigeren Nebenversion als der Steuerebenenversion haben, löschen Sie zuerst die Pod das wird durch den Knoten repräsentiert. Aktualisieren Sie dann Ihre Steuerebene. Alle verbleibenden Pods wird auf die neue Version aktualisiert, nachdem Sie sie erneut bereitgestellt haben.

  2. Wenn das Symbol Kubernetes Version, mit der Sie Ihren Cluster ursprünglich bereitgestellt haben, war Kubernetes 1.25oder später, überspringen Sie diesen Schritt.

    Standardmäßig ist der Pod Der Security Policy Admission Controller ist auf Amazon EKS-Clustern aktiviert. Bevor Sie Ihren Cluster aktualisieren, stellen Sie sicher, dass Pod Sicherheitsrichtlinien sind vorhanden. Dies dient dazu, potenzielle Sicherheitsprobleme zu vermeiden. Sie können die Standardrichtlinie mit dem Befehl kubectl get psp eks.privileged überprüfen.

    kubectl get psp eks.privileged

    Wenn die folgende Fehlermeldung angezeigt wird, lesen Sie Amazon EKS-Standard Pod Sicherheitsrichtlinie, bevor Sie fortfahren.

    Error from server (NotFound): podsecuritypolicies.extensions "eks.privileged" not found
  3. Wenn das Symbol Kubernetes Version, mit der Sie Ihren Cluster ursprünglich bereitgestellt haben, war Kubernetes 1.18oder später, überspringen Sie diesen Schritt.

    Möglicherweise müssen Sie eine ausgelaufene Laufzeit aus Ihrem entfernen CoreDNS Manifest.

    1. Überprüfe, ob dein CoreDNS Manifest hat eine Zeile, die nur das Wort enthältupstream.

      kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream

      Wenn keine Ausgabe zurückgegeben wird, bedeutet dies, dass Ihr Manifest die Zeile nicht enthält. In diesem Fall überspringen Sie den nächsten Schritt. Wenn das Wort upstream zurückgegeben wird, müssen Sie die Zeile entfernen.

    2. Entfernen Sie in der configmap-Datei die Zeile am oberen Rand der Datei, die nur das Wort upstream enthält. Ändern Sie nichts anderes in der Datei. Nachdem die Zeile entfernt wurde, speichern Sie die Änderungen.

      kubectl edit configmap coredns -n kube-system -o yaml

Schritt 2: Überprüfen Sie die Überlegungen zum Upgrade

  • Wenn Sie auf Version aktualisieren 1.23 und Amazon EBS-Volumes in Ihrem Cluster verwenden, müssen Sie den Amazon EBS CSI-Treiber in Ihrem Cluster installieren, bevor Sie Ihren Cluster auf Version aktualisieren, um 1.23 Arbeitslastunterbrechungen zu vermeiden. Weitere Informationen erhalten Sie unter Kubernetes 1.23 und Speichern Kubernetes Volumen mit Amazon EBS.

  • Die Kubernetes-Versionen 1.24 und höher nutzen containerd als standardmäßige Container-Laufzeit. Wenn Sie zur containerd Runtime wechseln und dies bereits getan haben Fluentd konfiguriert für Container Insights, dann müssen Sie migrieren Fluentd to Fluent Bit bevor Sie Ihren Cluster aktualisieren. Das Tool Fluentd Parser sind so konfiguriert, dass sie nur Protokollnachrichten im JSON-Format analysieren. Im dockerd Gegensatz dazu enthält die containerd Container-Laufzeit Protokollnachrichten, die nicht im JSON-Format vorliegen. Wenn Sie nicht migrieren zu Fluent Bit, einige der konfigurierten Fluentd’s Parser werden eine große Anzahl von Fehlern innerhalb des erzeugen Fluentd Behälter. Weitere Informationen zur Migration finden Sie unter Fluent Bit einrichten, um Logs an Logs DaemonSet zu CloudWatch senden.

    • Da Amazon EKS eine hoch verfügbare Steuerebene ausführt, dürfen Sie jeweils nur um eine Unterversion aktualisieren. Weitere Informationen zu dieser Anforderung finden Sie unter Kubernetes-Version und Version-Skew-Supportrichtlinie. Angenommen, Ihre aktuelle Cluster-Version ist Version 1.28 und Sie möchten sie auf Version 1.30 aktualisieren. Sie müssen zuerst Ihren Version 1.28-Cluster auf Version 1.29 und dann Ihren Version 1.29-Cluster auf Version 1.30 aktualisieren.

  • Überprüfen Sie den Versionsunterschied zwischen Kubernetes kube-apiserverund die kubelet auf Ihren Knoten.

    • Ausgehend von Kubernetes Version1.28, kubelet kann bis zu drei Nebenversionen älter sein alskube-apiserver. Weitere Informationen finden Sie in der Richtlinie zum Unterschied bei der Kubernetes-Upstream-Version.

    • Wenn der kubelet auf Ihren verwalteten Knoten und den Fargate-Knoten aktiviert ist Kubernetes Version 1.25 oder neuer, Sie können Ihren Cluster bis zu drei Versionen im Voraus aktualisieren, ohne die kubelet Version zu aktualisieren. Wenn das kubelet also beispielsweise über die Version 1.25 verfügt, können Sie die Version Ihres Amazon EKS-Clusters von 1.25 auf1.26, auf 1.27 und auf 1.28 aktualisieren und für kubelet die Version 1.25 beibehalten.

    • Wenn der kubelet auf Ihren verwalteten Knoten und den Fargate-Knoten aktiviert ist Kubernetes Version 1.24 oder älter, es können nur bis zu zwei Nebenversionen sein, die älter sind als diekube-apiserver. Anders ausgedrückt: Wenn das kubelet über die Version 1.24 oder über eine ältere Version verfügt, können Sie Ihren Cluster nur um bis zu Versionen aktualisieren. Wenn das kubelet also beispielsweise über die Version 1.21 verfügt, können Sie die Version Ihres Amazon EKS-Clusters von 1.21 auf1.22 und auf 1.23 aktualisieren. Es ist aber nicht möglich, den Cluster auf 1.24 zu aktualisieren, solange kubelet über die Version 1.21 verfügt.

  • Als bewährte Methode sollten Sie vor dem Start eines Updates sicherstellen, dass der kubelet auf Ihren Knoten derselbe Kubernetes Version wie Ihre Steuerungsebene.

  • Wenn Ihr Cluster mit einer Version von konfiguriert ist Amazon VPC CNI plugin for Kubernetes das ist früher als1.8.0, dann empfehlen wir Ihnen, das Plugin auf die neueste Version zu aktualisieren, bevor Sie Ihren Cluster aktualisieren. Informationen zum Aktualisieren des Plugins finden Sie unter Zuweisen IPs zu Pods mit dem Amazon VPC CNI.

  • Wenn Sie Ihren Cluster auf Version 1.25 oder höher aktualisieren und die AWS Load Balancer Controller in Ihrem Cluster bereitgestellt, aktualisieren Sie dann den Controller auf Version 2.4.7 oder höher, bevor Sie Ihre Clusterversion auf aktualisieren1.25. Weitere Informationen finden Sie in den Versionshinweisen zu Kubernetes 1.25.

Schritt 3: Aktualisieren Sie die Cluster-Steuerebene

Sie können die Anfrage für ein Upgrade Ihrer EKS-Control-Plane-Version einreichen, indem Sie:

Cluster aktualisieren - eksctl

Für diesen Vorgang ist eksctl Version 0.199.0 oder höher erforderlich. Sie können Ihre -Version mit dem folgenden Befehl überprüfen:

eksctl version

Eine Installations- und Aktualisierungsanleitung für eksctl finden Sie in der Dokumentation zu eksctl unter Installation.

Aktualisieren Sie das Kubernetes Version Ihrer Amazon EKS-Steuerebene. Ersetzen Sie my-cluster mit Ihrem Clusternamen. 1.30Ersetzen Sie es durch die von Amazon EKS unterstützte Versionsnummer, auf die Sie Ihren Cluster aktualisieren möchten. Eine Liste der unterstützten Versionsnummern finden Sie unter Verstehe die Kubernetes Versionslebenszyklus auf EKS.

eksctl upgrade cluster --name my-cluster --version 1.30 --approve

Die Aktualisierung dauert einige Minuten.

Fahren Sie fort zu Schritt 4: Cluster-Komponenten aktualisieren

Cluster aktualisieren — AWS Konsole

  1. Öffnen Sie die Amazon-EKS-Konsole.

  2. Wählen Sie den Namen des zu aktualisierenden Amazon-EKS-Clusters aus und klicken Sie dann auf Cluster-Version aktualisieren.

  3. Für Kubernetes Version, wählen Sie die Version aus, auf die Sie Ihren Cluster aktualisieren möchten, und wählen Sie Aktualisieren.

  4. Geben Sie als Cluster name (Clustername) den Namen Ihres Clusters ein und klicken Sie auf Confirm (Bestätigen).

    Die Aktualisierung dauert einige Minuten.

  5. Fahren Sie fort zu Schritt 4: Cluster-Komponenten aktualisieren

Cluster aktualisieren — AWS CLI

  1. Aktualisieren Sie Ihren Amazon EKS-Cluster mit dem folgenden AWS CLI-Befehl. Ersetzen Sie das example values durch Ihr eigenes. 1.30Ersetzen Sie es durch die von Amazon EKS unterstützte Versionsnummer, auf die Sie Ihren Cluster aktualisieren möchten. Eine Liste der unterstützten Versionsnummern finden Sie unter Verstehe die Kubernetes Versionslebenszyklus auf EKS.

    aws eks update-cluster-version --region region-code --name my-cluster --kubernetes-version 1.30

    Eine Beispielausgabe sieht wie folgt aus.

    { "update": { "id": "b5f0ba18-9a87-4450-b5a0-825e6e84496f", "status": "InProgress", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "1.30" }, { "type": "PlatformVersion", "value": "eks.1" } ], [...] "errors": [] }
  2. Überwachen Sie den Status Ihres Cluster-Updates mit dem folgenden Befehl. Verwenden Sie den Clusternamen und die Update-ID, die der vorherige Befehl zurückgegeben hat. Wenn der Status Successful angezeigt wird, ist das Update abgeschlossen. Die Aktualisierung dauert einige Minuten.

    aws eks describe-update --region region-code --name my-cluster --update-id b5f0ba18-9a87-4450-b5a0-825e6e84496f

    Eine Beispielausgabe sieht wie folgt aus.

    { "update": { "id": "b5f0ba18-9a87-4450-b5a0-825e6e84496f", "status": "Successful", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "1.30" }, { "type": "PlatformVersion", "value": "eks.1" } ], [...] "errors": [] }
  3. Fahren Sie fort zu Schritt 4: Cluster-Komponenten aktualisieren

Schritt 4: Cluster-Komponenten aktualisieren

  1. Nachdem Ihr Cluster-Update abgeschlossen ist, aktualisieren Sie Ihre Knoten auf dasselbe Kubernetes Nebenversion wie Ihr aktualisierter Cluster. Weitere Informationen finden Sie unter Aktualisieren Sie selbstverwaltete Knoten für Ihren Cluster, Aktualisieren Sie eine verwaltete Knotengruppe für Ihren Cluster und Aktualisieren Sie Hybridknoten für Ihren Cluster. Irgendein neues Pods die auf Fargate gestartet werden, haben eine kubelet Version, die Ihrer Cluster-Version entspricht. Bestehendes Fargate Pods wurden nicht verändert.

  2. (Optional) Wenn Sie das bereitgestellt haben Kubernetes Cluster-Autoscaler für Ihren Cluster Bevor Sie den Cluster aktualisieren, aktualisieren Sie den Cluster-Autoscaler auf die neueste Version, die dem entspricht Kubernetes Haupt- und Nebenversion, auf die Sie aktualisiert haben.

    1. Öffnen Sie die Seite mit den Versionen von Cluster Autoscaler in einem Webbrowser und suchen Sie nach der neuesten Version von Cluster Autoscaler, die der Ihres Clusters entspricht Kubernetes Haupt- und Nebenversion. Zum Beispiel, wenn Ihr Cluster Kubernetes Version ist 1.30 Suchen Sie die neueste Version von Cluster Autoscaler, die mit beginnt. 1.30 Notieren Sie die semantische Versionsnummer (z. B. 1.30.n) für diese Version, um sie im nächsten Schritt zu verwenden.

    2. Legen Sie das Cluster-Autoscaler-Image-Tag mit dem folgenden Befehl auf die Version fest, die Sie im vorherigen Schritt notiert haben. Falls erforderlich, ersetzen. 1.30 n`mit deinem eigenen Wert.

      kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=registry.k8s.io/autoscaling/cluster-autoscaler:v1.30.n
  3. (Nur Cluster mit GPU-Knoten) Wenn Ihr Cluster Knotengruppen mit GPU-Unterstützung hat (z. B.p3.2xlarge), müssen Sie das NVIDIA-Geräte-Plugin für Kubernetes aktualisieren DaemonSet auf Ihrem Cluster. vX.X.XErsetzen Sie es durch die gewünschte s-device-pluginNVIDIA/K8-Version, bevor Sie den folgenden Befehl ausführen.

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml
  4. Aktualisieren Sie das Amazon VPC CNI plugin for Kubernetes, CoreDNS, und kube-proxy Add-Ons. Wir empfehlen, die Add-Ons auf die Mindestversionen zu aktualisieren, die unter Servicekonto-Tokens aufgeführt sind.

    • Wenn Sie Amazon-EKS-Add-Ons verwenden, wählen Sie Clusters (Cluster) in der Amazon-EKS-Konsole und dann im linken Navigationsbereich den Namen des Clusters aus, den Sie aktualisiert haben. In der Konsole werden Benachrichtigungen angezeigt. Diese informieren Sie darüber, dass für jedes Add-On, für das eine Aktualisierung verfügbar ist, eine neue Version verfügbar ist. Um ein Add-on zu aktualisieren, wählen Sie die Registerkarte Add-ons aus. Wählen Sie in einem der Felder für ein Add-on, für das eine Aktualisierung verfügbar ist, Jetzt aktualisieren aus, wählen Sie eine verfügbare Version aus, und wählen Sie dann Aktualisieren aus.

    • Alternativ können Sie die AWS CLI verwenden oder eksctl Add-Ons aktualisieren. Weitere Informationen finden Sie unter Ein Amazon EKS-Add-on aktualisieren.

  5. Sofern erforderlich, aktualisieren Sie Ihre Version von kubectl. Sie müssen eine kubectl-Version verwenden, die nur in der Minor-Version von Ihrer Amazon–EKS-Cluster-Steuerebene abweicht.

Downgraden Sie das Kubernetes Version für einen Amazon EKS-Cluster

Sie können das nicht herabstufen Kubernetes eines Amazon EKS-Clusters. Erstellen Sie stattdessen einen neuen Cluster auf einer früheren Amazon EKS-Version und migrieren Sie die Workloads.