Unterstützung für die Verbesserung dieser Seite beitragen
Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.
AWS-CloudFormation-Knoten-Stack aktualisieren
Dieses Thema beschreibt Sie Hinweise zum Aktualisieren eines vorhandenen selbstverwalteten AWS-CloudFormation-Knoten-Stacks mit einer neuen AMI. 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 des Vereinfachten Knoten-Lebenszyklus mit verwalteten Knotengruppen finden Sie unter Eine verwaltete Knotengruppe für Ihren Cluster aktualisieren.
Die neueste standardmäßige AWS-CloudFormation-Vorlage für den Amazon-EKS-Knoten ist so konfiguriert, dass eine Instance mit dem neuen AMI in Ihrem Cluster gestartet wird, bevor Sie nacheinander ein altes entfernen. Diese Konfiguration stellt sicher, dass Sie immer über die gewünschte Anzahl der aktiven Instances Ihre Auto-Scaling-Gruppe in Ihrem Cluster verfügen, während die Aktualisierung durchgeführt wird.
Anmerkung
Diese Methode wird nicht bei Knoten-Gruppen unterstützt, die mit eksctl erstellt wurden. Wenn Sie Ihr Cluster oder Ihre Worker-Knoten-Gruppe Sie eksctl erstellt haben, finden Sie Informationen unter Anwendungen zu einer neuen Knotengruppe migrieren.
-
Bestimmen Sie den DNS-Anbieter Ihres Clusters.
kubectl get deployments -l k8s-app=kube-dns -n kube-systemEine Beispielausgabe sieht wie folgt aus. Dieser Cluster verwendet CoreDNS für die DNS-Auflösung, aber Ihr Cluster kann stattdessen
kube-dnszurückgeben. Ihre Ausgabe kann je nach verwendeterkubectl-Version anders aussehen.NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE coredns 1 1 1 1 31m -
Wenn Ihre aktuelle Bereitstellung weniger als zwei Replikate ausführt, skalieren die Bereitstellung auf zwei Replikate. Ersetzen Sie
corednsdurchkube-dns, falls Ihre vorherige Befehlsausgabe dies stattdessen zurückgegeben hat.kubectl scale deployments/coredns --replicas=2 -n kube-system -
(Optional) Wenn Sie Kubernetes Cluster Autoscaler
verwenden, skalieren Sie die Bereitstellung nach unten auf null (0) Replikate, um Konflikte zwischen Skalierungsaktionen zu vermeiden. kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system -
Bestimmen Sie den gewünschten Instance-Typ und die gewünschte Anzahl von Instances Ihrer aktuellen Knotengruppe. Sie geben diese Werte zu einem späteren Zeitpunkt ein, wenn Sie die AWS-CloudFormation-Vorlage für die Gruppe aktualisieren.
-
Öffnen Sie die Amazon EC2-Konsole unter https://console.aws.amazon.com/ec2/
. -
Wählen Sie im linken Navigationsbereich Launch Configurations (Startkonfigurationen) aus und beachten Sie den Instance-Typ für die Startkonfiguration der vorhandenen Knoten.
-
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.
-
-
Öffnen Sie die AWS-CloudFormation-Konsole
. -
Wählen Sie Ihren Workerknoten-Gruppen-Stack aus und klicken Sie dann auf Update (Aktualisieren).
-
Wählen Sie Replace current template (Aktuelle Vorlage ersetzen) und dann Amazon S3 URL (Amazon S3-URL) aus.
-
Fügen Sie für Amazon S3 URL die folgende URL in den Textbereich ein, um sicherzustellen, dass Sie die neueste Version der Knoten-AWS-CloudFormation-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 -
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 Instance-Anzahl ein, die Sie in einem vorheriger 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 Höchstanzahl an Knoten an, aus der Ihre Auto Scaling-Gruppe des Worker-Knotens skaliert werden 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 aus, den Sie in einem vorherigen Schritt aufgezeichnet haben. Wählen Sie alternativ einen anderen Instance-Typ für Ihre Knoten aus. Bevor Sie sich für einen anderen Instance-Typ entscheiden, lesen Sie den Abschnitt Auswahl eines optimalen Knoten-Instance-Typs für Amazon EC2. Jeder Amazon-EC2-Instance-Typ unterstützt eine maximale Anzahl von Elastic-Network-Interfaces (ENIs) und jedes ENI 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 auszuwählen, der die maximale Anzahl von Pods unterstützt, die Sie auf jedem Amazon-EC2-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. Der Instance–Typ
m5.largeunterstützt zum Beispiel 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 Ihr Amazon-VPC-CNI-Plugin für die Kubernetes-Version aktualisieren, um die neuesten unterstützten Instance-Typen zu verwenden. Weitere Informationen finden Sie unter Zuweisung von IPs zu Pods mit Amazon VPC CNI. Wichtig
Möglicherweise sind einige Instance-Typen nicht in allen AWS-Regionen verfügbar.
-
NodeImageIdSSMParam: Der Amazon EC2 Systems Manager-Parameter der AMI-ID, auf die Sie aktualisieren möchten. Der folgende Wert verwendet das neueste Amazon-EKS-optimierte AMI für Kubernetes-Version
1.33./aws/service/eks/optimized-ami/1.33/amazon-linux-2/recommended/image_idSie können
1.33durch eine identische Plattformversion ersetzen. 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önnenamazon-linux-2auch durch einen anderen AMI-Typ ersetzen. Weitere Informationen finden Sie unter Empfohlene Amazon-Linux-AMI-IDs abrufen.Anmerkung
Mit dem Amazon-EC2-Systems-Manager-Parameter können Sie Ihre Worker-Knoten in Zukunft aktualisieren, ohne eine AMI-ID suchen und angeben zu müssen. Wenn Ihr AWS-CloudFormation-Stack diesen Wert verwendet, startet jede Stack-Aktualisierung immer das neueste empfohlene Amazon-EKS-optimierte AMI für die 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 für das zu verwendende AMI ein.
Wichtig
Dieser Wert überschreibt alle für NodeImageIdSSMParam angegebenen Werte. Wenn Sie den NodeImageIdSSMParam-Wert verwenden möchten, stellen Sie sicher, dass der Wert für NodeImageId leer ist.
-
DisableIMDSv1 - Standardmäßig unterstützt jeder Knoten die Instance-Metadaten-Service-Version 1 (IMDSv1) und IMDSv2. Sie können IMDSv1 jedoch deaktivieren. Wählen Sie true, wenn Sie nicht möchten, dass Knoten oder Pods, die in der Knotengruppe geplant sind, IMDSv1 verwenden. Weitere Informationen finden Sie unter Konfiguration des Instance-Metadatenservice. Wenn Sie IAM-Rollen für Servicekonten implementiert haben, weisen Sie die erforderlichen Berechtigungen direkt allen Pods zu, die Zugriff auf AWS-Services benötigen. Auf diese Weise benötigen keine Pods in Ihrem Cluster aus anderen Gründen Zugriff auf das IMDS, z. B. zum Abrufen des aktuellen AWS-Region. Sie können auch den Zugriff auf 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
.
-
-
(Optional) Markieren Sie auf der Seite Options (Optionen) Ihre Stack-Ressourcen. Wählen Sie Weiter aus.
-
Ü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.
-
Wenn der DNS-Anbieter Ihres Clusters
kube-dnsist, skalieren Sie diekube-dns-Bereitstellung auf ein Replikat.kubectl scale deployments/kube-dns --replicas=1 -n kube-system -
(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 -
(Optional) Stellen Sie sicher, dass Sie die neueste Version des Amazon-VPC-CNI-Plugins für Kubernetes
verwenden. Möglicherweise müssen Sie Ihr Amazon-VPC-CNI-Plugin für die Kubernetes-Version aktualisieren, um die neuesten unterstützten Instance-Typen zu verwenden. Weitere Informationen finden Sie unter Zuweisung von IPs zu Pods mit Amazon VPC CNI.