Einen AWS CloudFormation Knotenstapel aktualisieren - Amazon EKS

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.

Einen AWS CloudFormation Knotenstapel aktualisieren

In diesem Thema wird beschrieben, wie Sie einen vorhandenen AWS CloudFormation selbstverwalteten Knotenstapel mit einem neuen AMI aktualisieren können. Sie können diese Anleitung verwenden, um Ihre Knoten nach einer Cluster-Aktualisierung auf eine neue Version von Kubernetes zu aktualisieren. Andernfalls können Sie auf das neueste von Amazon EKS optimierte AMI für eine vorhandene Kubernetes-Version aktualisieren.

Wichtig

In diesem Thema werden Worker-Knotenaktualisierungen für selbstverwaltete Knotengruppen behandelt. Informationen zur Verwendung von Simplify Node Lifecycle mit verwalteten Knotengruppen finden Sie unterAktualisieren Sie eine verwaltete Knotengruppe für Ihren Cluster.

Die neueste Amazon AWS CloudFormation EKS-Standardknotenvorlage ist so konfiguriert, dass eine Instance mit dem neuen AMI in Ihrem Cluster gestartet wird, bevor nacheinander eine alte entfernt wird. Diese Konfiguration stellt sicher, dass Sie während des fortlaufenden Updates immer die von Ihrer Auto Scaling Scaling-Gruppe gewünschte Anzahl an aktiven Instances in Ihrem Cluster haben.

Anmerkung

Diese Methode wird nicht für Knotengruppen unterstützt, die mit erstellt wurdeneksctl. Wenn Sie Ihr Cluster oder Ihre Worker-Knoten-Gruppe Sie eksctl erstellt haben, finden Sie Informationen unter Anwendungen auf eine neue Knotengruppe migrieren.

  1. Bestimmen Sie den DNS-Anbieter Ihres Clusters.

    kubectl get deployments -l k8s-app=kube-dns -n kube-system

    Eine Beispielausgabe sieht wie folgt aus. Dieser Cluster verwendet CoreDNS für die DNS-Auflösung, aber Ihr Cluster kehrt möglicherweise stattdessen zurückkube-dns. Ihre Ausgabe kann je nach der Version, die Sie verwendenkubectl, anders aussehen.

    NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE coredns 1 1 1 1 31m
  2. Wenn Ihre aktuelle Bereitstellung weniger als zwei Replikate ausführt, skalieren die Bereitstellung auf zwei Replikate. Ersetzen Sie kube-dns durch coredns, falls Ihre vorherige Befehlsausgabe dies stattdessen zurückgegeben hat.

    kubectl scale deployments/coredns --replicas=2 -n kube-system
  3. (Optional) Wenn Sie den Kubernetes Cluster Autoscaler verwenden, skalieren Sie die Bereitstellung auf Null (0) Replikate, um widersprüchliche Skalierungsaktionen zu vermeiden.

    kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system
  4. Ermitteln Sie den Instanztyp und die gewünschte Anzahl der Instanzen Ihrer aktuellen Knotengruppe. Sie geben diese Werte später ein, wenn Sie die AWS CloudFormation Vorlage für die Gruppe aktualisieren.

    1. Öffnen Sie die EC2 Amazon-Konsole unter https://console.aws.amazon.com/ec2/.

    2. Wählen Sie im linken Navigationsbereich Launch Configurations (Startkonfigurationen) aus und beachten Sie den Instance-Typ für die Startkonfiguration der vorhandenen Knoten.

    3. Wählen Sie im linken Navigationsbereich Auto Scaling Groups (Auto-Scaling-Gruppen) aus und beachten Sie die Desired (gewünschte) Instance-Anzahl für die Auto-Scaling-Gruppe der vorhandenen Knoten.

  5. Öffnen Sie die AWS CloudFormation -Konsole.

  6. Wählen Sie Ihren Workerknoten-Gruppen-Stack aus und klicken Sie dann auf Update (Aktualisieren).

  7. Wählen Sie Replace current template (Aktuelle Vorlage ersetzen) und dann Amazon S3 URL (Amazon S3-URL) aus.

  8. Fügen Sie für Amazon S3 S3-URL die folgende URL in den Textbereich ein, um sicherzustellen, dass Sie die neueste Version der AWS CloudFormation Node-Vorlage verwenden. Klicken Sie dann auf Next (Weiter):

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
  9. Geben Sie auf der Seite Specify stack details (Stack-Details angeben) die folgenden Parameter ein und wählen Sie Next (Weiter) aus:

    • NodeAutoScalingGroupDesiredCapacity— Geben Sie die gewünschte Anzahl von Instanzen ein, die Sie in einem vorherigen Schritt aufgezeichnet haben. Oder geben Sie die neue gewünschte Anzahl von Knoten ein, auf die bei der Aktualisierung Ihres Stacks skaliert werden soll.

    • NodeAutoScalingGroupMaxSize— Geben Sie die maximale Anzahl von Knoten ein, auf die Ihre Node-Auto-Scaling-Gruppe skalieren kann. Dieser Wert muss mindestens einen Knoten größer sein als Ihre gewünschte Kapazität. Auf diese Weise können Sie eine fortlaufende Aktualisierung Ihrer Knoten durchführen, ohne die Knotenanzahl während der Aktualisierung zu reduzieren.

    • NodeInstanceType— Wählen Sie den Instance-Typ, den Sie in einem vorherigen Schritt aufgezeichnet haben. Wählen Sie alternativ einen anderen Instance-Typ für Ihre Knoten aus. Bevor Sie einen anderen Instance-Typ auswählen, lesen Sie den Artikel Wählen Sie einen optimalen EC2 Amazon-Node-Instance-Typ. Jeder EC2 Amazon-Instance-Typ unterstützt eine maximale Anzahl von elastischen Netzwerkschnittstellen (Netzwerkschnittstelle) und jede Netzwerkschnittstelle unterstützt eine maximale Anzahl von IP-Adressen. Da jedem Worker-Knoten und Pod eine eigene IP-Adresse zugewiesen wird, ist es wichtig, einen Instance-Typ zu wählen, der die maximale Anzahl von Pods unterstützt, die Sie auf jedem EC2 Amazon-Knoten ausführen möchten. Eine Liste der Netzwerkschnittstellen und IP-Adressen, die von Instance-Typen unterstützt werden, finden Sie unter IP-Adressen pro Netzwerkschnittstelle pro Instance-Typ. Beispielsweise unterstützt der m5.large Instance-Typ maximal 30 IP-Adressen für den Worker-Knoten und die Pods.

      Anmerkung

      Die unterstützten Instance-Typen für die neueste Version des Amazon-VPC-CNI-Plugins für Kubernetes sind in vpc_ip_resource_limit.go auf GitHub aufgeführt. Möglicherweise müssen Sie Ihre Version des Amazon VPC CNI-Plug-ins für Kubernetes aktualisieren, um die neuesten unterstützten Instance-Typen verwenden zu können. Weitere Informationen finden Sie unter Pods mit dem Amazon VPC CNI zuweisen IPs .

      Wichtig

      Einige Instance-Typen sind möglicherweise nicht in allen Regionen verfügbar. AWS

    • NodeImageIdSSMParam— Der Amazon EC2 Systems Manager Manager-Parameter der AMI-ID, auf die Sie aktualisieren möchten. Der folgende Wert verwendet die neueste für Amazon EKS optimierte AMI-Version für Kubernetes. 1.32

      /aws/service/eks/optimized-ami/1.32/amazon-linux-2/recommended/image_id

      Sie können es 1.32 durch eine unterstützte Kubernetes-Version ersetzen, die identisch ist. Oder er sollte bis zu einer Version älter sein als die Kubernetes-Version, die auf Ihrer Steuerebene läuft. Es wird empfohlen, die Knoten auf der gleichen Version wie die Steuerungsebene zu halten. Sie können es auch amazon-linux-2 durch einen anderen AMI-Typ ersetzen. Weitere Informationen finden Sie unter Rufen Sie das empfohlene Amazon Linux AMI ab IDs.

      Anmerkung

      Mithilfe des Amazon EC2 Systems Manager Manager-Parameters können Sie Ihre Knoten in future aktualisieren, ohne eine AMI-ID suchen und angeben zu müssen. Wenn Ihr AWS CloudFormation Stack diesen Wert verwendet, startet jedes Stack-Update immer das neueste empfohlene Amazon EKS-optimierte AMI für Ihre angegebene Kubernetes-Version. Dies ist auch dann der Fall, wenn Sie keine Werte in der Vorlage ändern.

    • NodeImageId— Um Ihr eigenes benutzerdefiniertes AMI zu verwenden, geben Sie die ID ein, die das AMI verwenden soll.

      Wichtig

      Dieser Wert überschreibt jeden Wert, der für NodeImageIdSSMParamangegeben wurde. Wenn Sie den NodeImageIdSSMParamWert verwenden möchten, stellen Sie sicher, dass der Wert für leer NodeImageIdist.

    • Deaktivieren IMDSv1 — Standardmäßig unterstützt jeder Knoten den Instanz-Metadatendienst Version 1 (IMDSv1) und IMDSv2. Sie können ihn jedoch deaktivieren IMDSv1. Wählen Sie true aus, wenn Sie nicht möchten, dass Knoten oder Pods, die in der Knotengruppe geplant sind, verwendet IMDSv1 werden. Weitere Informationen finden Sie unter Konfiguration des Instance-Metadatenservice. Wenn Sie IAM-Rollen für Dienstkonten implementiert haben, weisen Sie allen Pods, die Zugriff auf AWS Dienste benötigen, die erforderlichen Berechtigungen direkt zu. Auf diese Weise benötigen keine Pods in Ihrem Cluster Zugriff auf IMDS aus anderen Gründen, z. B. zum Abrufen der aktuellen Region. AWS Anschließend können Sie den Zugriff auf auch IMDSv2 für Pods deaktivieren, die kein Host-Netzwerk verwenden. Weitere Informationen finden Sie unter Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist.

  10. (Optional) Markieren Sie auf der Seite Options (Optionen) Ihre Stack-Ressourcen. Wählen Sie Next (Weiter).

  11. Überprüfen Sie Ihre Angaben auf der Seite Review (Überprüfen), bestätigen Sie, dass der Stack IAM-Ressourcen erstellen kann, und klicken Sie dann auf Update stack (Stack aktualisieren).

    Anmerkung

    Die Aktualisierung jedes Knotens im Cluster dauert mehrere Minuten. Warten Sie, bis die Aktualisierung aller Knoten abgeschlossen ist, bevor Sie die nächsten Schritte durchführen.

  12. Wenn es der DNS-Anbieter Ihres Clusters istkube-dns, skalieren Sie die kube-dns Bereitstellung auf ein Replikat.

    kubectl scale deployments/kube-dns --replicas=1 -n kube-system
  13. (Optional) Wenn Sie den Kubernetes-Cluster Autoscaler verwenden, skalieren Sie die Bereitstellung zurück auf die gewünschte Zahl von Replikaten.

    kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system
  14. (Optional) Stellen Sie sicher, dass Sie die neueste Version des Amazon VPC CNI-Plug-ins für Kubernetes verwenden. Möglicherweise müssen Sie Ihre Version des Amazon VPC CNI-Plug-ins für Kubernetes aktualisieren, um die neuesten unterstützten Instance-Typen verwenden zu können. Weitere Informationen finden Sie unter Pods mit dem Amazon VPC CNI zuweisen IPs .