Aktualisierung des vorhandenen Clusters auf die neue Kubernetes-Version - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

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.

Um zu diesem Benutzerhandbuch beizutragen, 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.

Aktualisierung des vorhandenen Clusters auf die neue Kubernetes-Version

Wenn eine neue Kubernetes-Version in Amazon EKS verfügbar ist, können Sie Ihren Amazon-EKS-Cluster auf die neueste Version aktualisieren.

Wichtig

Nach der Aktualisierung eines Clusters ist ein Downgrade auf eine frühere Version nicht mehr möglich. Bevor Sie auf eine neue Kubernetes-Version aktualisieren, empfehlen wir Ihnen, die Informationen unter Kubernetes-Versionslebenszyklus in EKS verstehen und die Aktualisierungsschritte in diesem Thema zu lesen.

Neue Kubernetes-Versionen führen oft bedeutende Änderungen ein. Daher empfehlen wir Ihnen, das Verhalten Ihrer Anwendungen mit einer neuen Kubernetes-Version zu testen, bevor Sie Ihre Produktionscluster aktualisieren. Hierzu erstellen Sie einen kontinuierlichen Integrations-Workflow, um das Verhalten Ihrer Anwendungen zu testen, bevor Sie auf eine neue Kubernetes-Version aktualisieren.

Der Aktualisierungsprozess besteht darin, dass Amazon EKS neue API-Serverknoten mit der aktualisierten Kubernetes-Version startet, um die vorhandenen zu ersetzen. Amazon EKS führt auf diesen neuen Knoten standardmäßige Infrastruktur- und Bereitschafts-Zustandsprüfungen für den Netzwerkverkehr durch, um sicherzustellen, dass sie wie erwartet 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 Infrastruktur-Bereitstellung rückgängig und der Cluster verbleibt in der vorherigen Kubernetes-Version. Laufende Anwendungen sind davon nicht betroffen und Ihr Cluster befindet sich nie in einem nicht deterministischen oder nicht wiederherstellbaren Zustand. Amazon EKS sichert regelmäßig alle verwalteten Cluster, und es gibt Mechanismen, um Cluster bei Bedarf wiederherzustellen. Wir evaluieren und verbessern unsere Verwaltungsprozesse für die Kubernetes-Infrastruktur fortlaufend.

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 verfügbare IP-Adressen hat oder nicht über Sicherheitsgruppenregeln verfügt, welche die notwendige Cluster-Kommunikation zulassen, kann die Aktualisierung fehlschlagen.

Um sicherzustellen, dass der API-Server-Endpunkt für Ihren Cluster immer zugänglich ist, bietet Amazon EKS eine hochverfügbare Kubernetes-Steuerebene und führt während Aktualisierungsvorgängen fortlaufende Aktualisierungen der API-Server-Instances durch. Um wechselnde IP-Adressen von API-Server-Instances zu berücksichtigen, die Ihren Kubernetes-API-Server-Endpunkt unterstützen, müssen Sie sicherstellen, dass Ihre API-Server-Clients die Wiederverbindung effektiv verwalten. Aktuelle Versionen von kubectl und der Kubernetes-Client-Bibliotheken, die offiziell unterstützt werden, führen diesen Vorgang zur Wiederherstellung der Verbindung transparent durch.

Anmerkung

Weitere Informationen zu den Inhalten einer Cluster-Aktualisierung finden Sie unter Bewährte Methoden für Cluster-Upgrades im EKS-Leitfaden für bewährte Methoden. Diese Ressource unterstützt Sie bei der Planung eines Upgrades und vermittelt Ihnen die Strategie für das Upgraden eines Clusters.

Überlegungen zu Amazon EKS Auto Mode

  • Die Rechenleistung von Amazon EKS Auto Mode steuert die Kubernetes-Version der Knoten. Nach dem Upgrade der Steuerebene beginnt EKS Auto Mode mit der schrittweisen Aktualisierung der verwalteten Knoten. EKS Auto Mode berücksichtigt Budgets für Pod-Unterbrechung.

  • Sie müssen die Funktionen von Amazon EKS Auto Mode, einschließlich der automatischen Skalierung der Rechenleistung, des Blockspeichers und der Load-Balancing-Funktionen, nicht manuell aktualisieren.

Zusammenfassung

Die allgemeine Zusammenfassung des Upgrade-Prozesses für Amazon-EKS-Cluster lautet wie folgt:

  1. Stellen Sie sicher, dass sich Ihr Cluster in einem Zustand befindet, der ein Upgrade unterstützt. Dazu gehört die Überprüfung der Kubernetes-Ressourcen, die von den im Cluster bereitgestellten Ressourcen APIs verwendet werden, um sicherzustellen, dass der Cluster frei von Gesundheitsproblemen ist. Nutzen Sie die Upgrade-Informationen von Amazon EKS, um die Upgrade-Bereitschaft Ihres Clusters zu bewerten.

  2. Aktualisieren Sie die Steuerebene auf die nächste Nebenversion (z. B. von 1.32 auf 1.33).

  3. Aktualisieren Sie die Knoten in der Datenebene, sodass sie mit denen der Steuerebene übereinstimmen.

  4. Aktualisieren Sie alle weiteren Anwendungen, die in dem Cluster ausgeführt werden (z. B. cluster-autoscaler).

  5. Aktualisieren Sie die von Amazon EKS bereitgestellten Add-Ons, beispielsweise die standardmäßig enthaltenen:

  6. Aktualisieren Sie alle Clients, die mit dem Cluster kommunizieren (z. B. kubectl).

Schritt 1: Upgrade vorbereiten

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

  • Rufen Sie die Kubernetes-Version Ihrer Cluster-Steuerebene ab.

    kubectl version
  • Rufen Sie die Kubernetes-Version Ihrer Knoten ab. Dieser Befehl gibt alle selbstverwalteten und verwalteten Amazon- EC2, Fargate- und Hybrid-Knoten zurück. Jeder Fargate-Pod wird als eigener Knoten aufgeführt.

    kubectl get nodes

Bevor Sie Ihre Steuerebene auf eine neue Kubernetes-Version aktualisieren, stellen Sie sicher, dass die Kubernetes-Minor-Version sowohl der verwalteten Knoten als auch der Fargate-Knoten in Ihrem Cluster mit der Version Ihrer Steuerebene übereinstimmt. Wenn auf Ihrer Steuerungsebene beispielsweise Version ausgeführt wird 1.29 und auf einem Ihrer Knoten 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 Steuerebene zu aktualisieren, bevor Sie die Steuerebene aktualisieren. Weitere Informationen finden Sie unter Eine verwaltete Knotengruppe für Ihren Cluster aktualisieren, Selbstverwaltete Knoten für Ihren Cluster aktualisieren und Aktualisierung von Hybridknoten für Ihren Cluster. Wenn Sie Fargate-Knoten mit einer Nebenversion haben, die niedriger ist als die Version der Steuerebene, löschen Sie zunächst den Pod, der durch den Knoten dargestellt wird. Aktualisieren Sie dann Ihre Steuerebene. Alle verbleibenden Pods werden auf die neue Version aktualisiert, nachdem Sie sie neu bereitgestellt haben.

Schritt 2: Überlegungen zum Upgrade prüfen

Amazon-EKS-Cluster-Erkenntnisse überprüfen Cluster automatisch anhand einer Liste potenzieller Probleme, die sich auf Upgrades der Kubernetes-Version auswirken können, wie beispielsweise die Verwendung veralteter Kubernetes-APIs Amazon EKS aktualisiert regelmäßig die Liste der durchzuführenden Erkenntnisprüfungen basierend auf Bewertungen von Änderungen im Kubernetes-Projekt. Amazon EKS aktualisiert die Liste der Erkenntnisprüfungen auch, wenn Änderungen im Amazon-EKS-Service zusammen mit neuen Versionen eingeführt werden. Weitere Informationen finden Sie unter Vorbereitung auf Kubernetes-Versionsupgrades und Beheben von Fehlkonfigurationen mit Cluster-Einblicken.

Lesen Sie den Migrationsleitfaden für veraltete APIs in den Kubernetes-Dokumenten.

Upgrade-Erkenntnisse überprüfen

Nutzen Sie die Upgrade-Erkenntnisse von Amazon EKS, um Probleme zu identifizieren. Weitere Informationen finden Sie unter Upgrade-Einblicke anzeigen (Konsole).

Detaillierte Überlegungen

  • 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-apiserver und kubelet auf Ihren Knoten.

    • Ab der Kubernetes-Version 1.28 kann kubelet bis zu drei Nebenversionen älter sein als kube-apiserver. Weitere Informationen finden Sie in der Richtlinie zum Unterschied bei der Kubernetes-Upstream-Version.

    • Wenn das kubelet Ihrer verwalteten Knoten und Ihrer Fargate-Knoten mindestens über die 1.25-Version oder neuer verfügt, können Sie Ihren Cluster um bis zu drei Versionen 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.

  • Vergewissern Sie sich daher vor dem Start einer Aktualisierung, dass das kubelet auf Ihren Knoten die gleiche Kubernetes-Version hat wie Ihre Steuerebene.

  • Wenn Ihr Cluster mit einer Version des Amazon-VPC-CNI-Plugins für Kubernetes konfiguriert ist, die älter als 1.8.0 ist, empfehlen wir Ihnen, das Plugin auf die neueste Version zu aktualisieren, bevor Sie Ihren Cluster aktualisieren. Informationen zum Aktualisieren des Plugins finden Sie unter Pods mit dem Amazon VPC CNI zuweisen IPs .

  • Sie können eine Sicherungskopie Ihres Amazon EKS-Clusters erstellen, damit Sie Ihren Amazon EKS-Clusterstatus und den persistenten Speicher wiederherstellen können, falls während des Upgrade-Vorgangs Fehler auftreten. Siehe Sichern Sie Ihre EKS-Cluster mit AWS Backup

Schritt 3: Cluster-Steuerebene aktualisieren

Wichtig

Amazon EKS hat vorübergehend das Feature zurückgesetzt, das bei bestimmten Problemen mit Cluster-Erkenntnissen die Verwendung eines --force-Flags für das Upgrade Ihres Clusters erforderlich gemacht hätte. Weitere Informationen finden Sie unter Vorübergehendes Rollback der Durchsetzung von Upgrade-Erkenntnissen bei der Aktualisierung der Cluster-Version auf. GitHub

Amazon EKS aktualisiert die Cluster-Erkenntnisse 24 Stunden nach der „letzten Aktualisierungszeit”. Sie können den Zeitpunkt, zu dem Sie ein Problem behoben haben, mit der „letzten Aktualisierungszeit” der Cluster-Übersicht vergleichen.

Darüber hinaus kann es bis zu 30 Tage dauern, bis der Erkenntnis-Status nach der Behebung einer veralteten API-Nutzung aktualisiert wird. Upgrade-Erkenntnisse suchen stets nach veralteter API-Nutzung über einen fortlaufenden Zeitraum von 30 Tagen.

Sie können die Anfrage zum Upgrade Ihrer EKS-Steuerebenen-Version wie folgt senden:

Cluster aktualisieren – eksctl

Für diesen Vorgang ist eksctl Version 0.215.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 die Kubernetes-Version Ihrer Amazon-EKS-Steuerebene. Ersetzen Sie <cluster-name> mit Ihrem Clusternamen. Ersetzen Sie <version-number> 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 Unterstützte Amazon-EKS-Versionen.

eksctl upgrade cluster --name <cluster-name> --version <version-number> --approve

Die Aktualisierung dauert einige Minuten.

Fahren Sie fort mit Schritt 4: Cluster-Komponenten aktualisieren.

Cluster aktualisieren — AWS Konsole

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

  2. Wählen Sie Jetzt aktualisieren für den Cluster, den Sie aktualisieren möchten.

  3. Wählen Sie die Version aus, auf die Ihr Cluster aktualisiert werden soll, und wählen Sie Upgrade.

  4. Die Aktualisierung dauert einige Minuten. Fahren Sie fort mit Schritt 4: Cluster-Komponenten aktualisieren.

Cluster aktualisieren — AWS CLI

  1. Stellen Sie sicher, dass die AWS CLI installiert ist und ob Sie angemeldet sind. Weitere Informationen finden Sie unter Installation oder Aktualisierung auf die neueste Version der AWS CLI.

  2. Aktualisieren Sie Ihren Amazon EKS-Cluster mit dem folgenden AWS CLI-Befehl. Ersetzen Sie <cluster-name> und <region-code> des Clusters, den Sie aktualisieren möchten. Ersetzen Sie <version-number> 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 Unterstützte Amazon-EKS-Versionen.

    aws eks update-cluster-version --name <cluster-name> \ --kubernetes-version <verion-number> --region <region-code>

    Eine Beispielausgabe sieht wie folgt aus.

    { "update": { "id": "<update-id>", "status": "InProgress", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "<version-number>" }, { "type": "PlatformVersion", "value": "eks.1" } ], [...] "errors": [] }
  3. Die Aktualisierung dauert einige Minuten. Überwachen Sie den Status Ihres Cluster-Updates mit dem folgenden Befehl. Verwenden Sie zusätzlich zur Verwendung desselben <cluster-name> und <region-code> das <update-id>, das der vorherige Befehl zurückgegeben hat.

    aws eks describe-update --name <cluster-name> \ --region <region-code> --update-id <update-id>

    Wenn der Status Successful angezeigt wird, ist das Update abgeschlossen.

  4. Fahren Sie fort mit Schritt 4: Cluster-Komponenten aktualisieren.

Schritt 4: Cluster-Komponenten aktualisieren

  1. Nachdem Ihre Cluster-Aktualisierung abgeschlossen wurde, aktualisieren Sie Ihre Knoten auf dieselbe Kubernetes-Nebenversion wie Ihr aktualisierter Cluster. Weitere Informationen finden Sie unter Selbstverwaltete Knoten für Ihren Cluster aktualisieren, Eine verwaltete Knotengruppe für Ihren Cluster aktualisieren und Aktualisierung von Hybridknoten für Ihren Cluster. Alle neuen Pods, die in Fargate gestartet werden, verfügen über eine kubelet-Version, die Ihrer Cluster-Version entspricht. Vorhandene Fargate-Pods werden nicht geändert.

  2. (Optional) Wenn Sie den Kubernetes Cluster Autoscaler in Ihrem Cluster bereitgestellt haben, bevor Sie den Cluster aktualisiert haben, aktualisieren Sie den Cluster Autoscaler auf die neueste Version, die der Kubernetes-Haupt- und Nebenversion entspricht, auf die Sie aktualisiert haben.

    1. Öffnen Sie die Seite Cluster-Autoscaler-Versionen in einem Web-Browser und suchen Sie die neuste Cluster-Autoscaler-Version, die der Haupt- und Nebenversion Ihres Kubernetes-Clusters entspricht. Wenn beispielsweise die Kubernetes-Version Ihres Clusters 1.30 lautet, suchen Sie die neueste Cluster-Autoscaler-Version, die mit 1.30 beginnt. 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-Abbild-Tag mit dem folgenden Befehl auf die Version fest, die Sie im vorherigen Schritt notiert haben. Ersetzen Sie ggf. X.XX.X durch Ihren eigenen Wert.

      kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=registry.k8s.io/autoscaling/cluster-autoscaler:vX.XX.X
  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 DaemonSet auf Ihrem Cluster aktualisieren. Ersetzen Sie es <vX.X.X> 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 für 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 Aktualisierung eines Amazon-EKS-Add-Ons.

  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.

Herabstufen der Kubernetes-Version für einen Amazon-EKS-Cluster

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