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.
Migration von Karpenter zu EKS Auto Mode mithilfe von kubectl
Dieses Thema führt Sie durch den Prozess der Migration von Workloads von Karpenter zu Amazon EKS Auto Mode mithilfe von kubectl. Die Migration kann schrittweise durchgeführt werden, sodass Sie Workloads in Ihrem eigenen Tempo verschieben können, während die Cluster-Stabilität und die Verfügbarkeit der Anwendungen während der gesamten Übergangsphase gewährleistet bleiben.
Mit der unten beschriebenen schrittweisen Vorgehensweise können Sie Karpenter und EKS Auto Mode während der Migrationsphase parallel ausführen. Diese duale Betriebsstrategie gewährleistet einen nahtlosen Übergang, da Sie das Workload-Verhalten in EKS Auto Mode überprüfen können, bevor Sie Karpenter vollständig außer Betrieb nehmen. Sie können Anwendungen einzeln oder in Gruppen migrieren, was Ihnen Flexibilität bietet, um Ihren spezifischen betrieblichen Anforderungen und Ihrer Risikotoleranz gerecht zu werden.
Voraussetzungen
Stellen Sie vor Beginn der Migration sicher, dass Sie über Folgendes verfügen:
-
Karpenter v1.1 oder höher muss auf Ihrem Cluster installiert sein. Weitere Informationen finden Sie unter Upgrade auf 1.1.0+
in der Karpenter-Dokumentation. -
kubectlinstalliert und mit Ihrem Cluster verbunden. Weitere Informationen finden Sie unter Einrichtung zur Verwendung von Amazon EKS.
Dieses Thema setzt voraus, dass Sie mit Karpenter und NodePools vertraut sind. Weitere Informationen finden Sie in der Dokumentation zu Karpenter.
Schritt 1: EKS Auto Mode auf dem Cluster aktivieren
Aktivieren Sie EKS Auto Mode in Ihrem vorhandenen Cluster über die AWS-CLI oder die Management-Konsole. Weitere Informationen finden Sie unter Aktivierung von EKS Auto Mode in einem vorhandenen Cluster.
Anmerkung
Aktivieren Sie den general purpose-Knoten-Pool in dieser Phase des Übergangs nicht, während Sie EKS Auto Mode aktivieren. Dieser Knoten-Pool ist nicht selektiv.
Weitere Informationen finden Sie unter Aktivierung oder Deaktivierung integrierter NodePools.
Schritt 2: Einen verunreinigten EKS-Auto-Mode-NodePool erstellen
Erstellen Sie einen neuen NodePool für EKS Auto Mode mit einem Taint. Dadurch wird sichergestellt, dass vorhandene Pods nicht automatisch auf den neuen EKS-Auto-Mode-Knoten geplant werden. Dieser Knoten-Pool verwendet den in EKS Auto Mode integrierten default NodeClass. Weitere Informationen finden Sie unter Knotenklasse für Amazon EKS erstellen.
Beispiel für einen Knoten-Pool mit Taint:
apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: eks-auto-mode spec: template: spec: requirements: - key: "eks.amazonaws.com/instance-category" operator: In values: ["c", "m", "r"] nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default taints: - key: "eks-auto-mode" effect: "NoSchedule"
Aktualisieren Sie die Anforderungen für den Knoten-Pool, damit sie mit der Karpenter-Konfiguration übereinstimmen, von der Sie migrieren. Sie benötigen mindestens eine Anforderung.
Schritt 3: Workloads für die Migration aktualisieren
Identifizieren und aktualisieren Sie die Workloads, die Sie in EKS Auto Mode migrieren möchten. Fügen Sie diesen Workloads sowohl Toleranzen als auch Knoten-Selektoren hinzu:
apiVersion: apps/v1 kind: Deployment spec: template: spec: tolerations: - key: "eks-auto-mode" effect: "NoSchedule" nodeSelector: eks.amazonaws.com/compute-type: auto
Durch diese Änderung kann die Workload auf den neuen EKS-Auto-Mode-Knoten geplant werden.
EKS Auto Mode verwendet andere Bezeichnungen als Karpenter. Bezeichnungen, die sich auf von EC2 verwaltete Instances beziehen, beginnen mit eks.amazonaws.com. Weitere Informationen finden Sie unter Einen Knotenpool für EKS Auto Mode erstellen.
Schritt 4: Workloads schrittweise migrieren
Wiederholen Sie Schritt 3 für jede Workload, die Sie migrieren möchten. Auf diese Weise können Sie Workloads einzeln oder in Gruppen verschieben, je nach Ihren Anforderungen und Ihrer Risikotoleranz.
Schritt 5: Ursprünglichen Karpenter-NodePool entfernen
Sobald alle Workloads migriert wurden, können Sie den ursprünglichen Karpenter NodePool entfernen:
kubectl delete nodepool <original-nodepool-name>
Schritt 6: Taint aus EKS-Auto-Mode-NodePool entfernen (optional)
Wenn Sie möchten, dass EKS Auto Mode als Standard für neue Workloads festgelegt wird, können Sie den Taint aus dem EKS-Auto-Mode-NodePool entfernen:
apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: eks-auto-mode spec: template: spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default # Remove the taints section
Schritt 7: Knoten-Selektoren aus Workloads entfernen (optional)
Wenn Sie den Taint aus dem EKS-Auto-Mode-NodePool entfernt haben, können Sie optional die Knotenselektoren aus Ihren Workloads entfernen, da EKS Auto Mode nun die Standardeinstellung ist:
apiVersion: apps/v1 kind: Deployment spec: template: spec: # Remove the nodeSelector section tolerations: - key: "eks-auto-mode" effect: "NoSchedule"
Schritt 8: Karpenter von Ihrem Cluster deinstallieren
Die Schritte zum Entfernen von Karpenter hängen davon ab, wie Sie es installiert haben. Weitere Informationen finden Sie in den Installationsanweisungen für Karpenter