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.
Einen Knotenpool für EKS Auto Mode erstellen
Amazon-EKS-Knoten-Pools bieten eine flexible Möglichkeit zur Verwaltung von Rechenressourcen in Ihrem Kubernetes-Cluster. Dieses Thema veranschaulicht, wie Sie mit Karpenter, einem Tool zur Bereitstellung von Knoten, das die Cluster-Skalierung und Ressourcenauslastung optimiert, Knoten-Pools erstellen und konfigurieren können. Mit der NodePool-Ressource von Karpenter können Sie spezifische Anforderungen für Ihre Rechenressourcen definieren, darunter Instance-Typen, Availability Zones, Architekturen und Kapazitätstypen.
Die integrierten system- und general-purpose- Knoten-Pools können nicht geändert werden. Sie können sie lediglich aktivieren oder deaktivieren. Weitere Informationen finden Sie unter Aktivierung oder Deaktivierung integrierter NodePools.
Die NodePool-Spezifikation ermöglicht eine detaillierte Steuerung der Rechenressourcen Ihres EKS-Clusters durch verschiedene unterstützte Labels und Anforderungen. Dazu gehören Optionen zur Festlegung von EC2-Instance-Kategorien, CPU-Konfigurationen, Availability Zones, Architekturen (ARM64/AMD64) und Kapazitätstypen (Spot oder On-Demand). Sie können auch Ressourcenlimits für die CPU- und Speichernutzung festlegen, um sicherzustellen, dass Ihr Cluster innerhalb der erforderlichen Betriebsgrenzen bleibt.
EKS Auto Mode nutzt bekannte Kubernetes-Labels, um konsistente und standardisierte Methoden zur Identifizierung von Knotenmerkmalen bereitzustellen. Diese Labels, wie beispielsweise topology.kubernetes.io/zone für Availability Zones und kubernetes.io/arch für die CPU-Architektur, entsprechen den gängigen Kubernetes-Konventionen. Darüber hinaus erweitern EKS-spezifische Labels (mit dem Präfix eks.amazonaws.com/) diese Funktionalität um AWS-spezifische Attribute wie Instance-Typen, CPU-Hersteller, GPU-Fähigkeiten und Netzwerk-Spezifikationen. Dieses standardisierte Kennzeichnungssystem ermöglicht eine nahtlose Integration in vorhandene Kubernetes-Tools und bietet gleichzeitig eine umfassende AWS-Infrastrukturintegration.
Einen NodePool erstellen
Führen Sie die folgenden Schritte aus, um einen NodePool für Ihren Amazon-EKS-Cluster zu erstellen
-
Erstellen Sie eine YAML-Datei mit dem Namen
nodepool.yamlund der erforderlichen NodePool-Konfiguration. Sie können die folgende Beispielkonfiguration verwenden. -
Wenden Sie den NodePool auf Ihren Cluster an:
kubectl apply -f nodepool.yaml -
Überprüfen Sie, ob der NodePool erfolgreich erstellt wurde:
kubectl get nodepools -
(Optional) Überwachen Sie den NodePool-Status:
kubectl describe nodepool default
Stellen Sie sicher, dass Ihr NodePool auf eine gültige NodeClass verweist, die in Ihrem Cluster vorhanden ist. Die NodeClass definiert AWS-spezifische Konfigurationen für Ihre Rechenressourcen. Weitere Informationen finden Sie unter Knotenklasse für Amazon EKS erstellen.
Beispiel-NodePool
apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: my-node-pool spec: template: metadata: labels: billing-team: my-team spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default requirements: - key: "eks.amazonaws.com/instance-category" operator: In values: ["c", "m", "r"] - key: "eks.amazonaws.com/instance-cpu" operator: In values: ["4", "8", "16", "32"] - key: "topology.kubernetes.io/zone" operator: In values: ["us-west-2a", "us-west-2b"] - key: "kubernetes.io/arch" operator: In values: ["arm64", "amd64"] limits: cpu: "1000" memory: 1000Gi
Unterstützte Labels für EKS Auto Mode
EKS Auto Mode unterstützt die folgenden bekannten Labels.
Anmerkung
EKS Auto Mode verwendet andere Bezeichnungen als Karpenter. Bezeichnungen, die sich auf von EC2 verwaltete Instances beziehen, beginnen mit eks.amazonaws.com.
| Label (Bezeichnung) | Beispiel | Beschreibung |
|---|---|---|
|
topology.kubernetes.io/zone |
us-east-2a |
Region AWS |
|
node.kubernetes.io/instance-type |
g4dn.8xgroß |
AWS-Instance-Typ |
|
kubernetes.io/arch |
amd64 |
Architekturen werden durch GOARCH-Werte |
|
karpenter.sh/capacity-type |
spot |
Zu den Kapazitätstypen gehören |
|
eks.amazonaws.com/instance-hypervisor |
nitro |
Instance-Typen, die einen bestimmten Hypervisor verwenden |
|
eks.amazonaws.com/compute-type |
auto |
Identifiziert von EKS Auto Mode verwaltete Knoten |
|
eks.amazonaws.com/instance-encryption-in-transit-supported |
true |
Instance-Typen, welche die Verschlüsselung während der Übertragung unterstützen (oder nicht) |
|
eks.amazonaws.com/instance-category |
g |
Instance-Typen derselben Kategorie, in der Regel die Zeichenfolge vor der Generierungsnummer |
|
eks.amazonaws.com/instance-generation |
4 |
Instace-Typ-Generierungsnummer innerhalb einer Instance-Kategorie |
|
eks.amazonaws.com/instance-family |
g4dn |
Instance-Typen mit ähnlichen Eigenschaften, aber unterschiedlichen Ressourcenmengen |
|
eks.amazonaws.com/instance-size |
8xlarge |
Instance-Typen mit ähnlichen Ressourcenmengen, jedoch unterschiedlichen Eigenschaften |
|
eks.amazonaws.com/instance-cpu |
32 |
Anzahl der CPUs auf der Instance |
|
eks.amazonaws.com/instance-cpu-manufacturer |
|
Name des CPU-Herstellers |
|
eks.amazonaws.com/instance-memory |
13 1072 |
Anzahl der Mebibyte Speicher auf der Instance |
|
eks.amazonaws.com/instance-ebs-bandwidth |
9 500 |
Anzahl der verfügbaren maximalen Megabits auf der Instance |
|
eks.amazonaws.com/instance-network-bandwidth |
13 1072 |
Anzahl der verfügbaren Basis-Megabits auf der Instance |
|
eks.amazonaws.com/instance-gpu-name |
t4 |
Name der GPU auf der Instance, sofern verfügbar |
|
eks.amazonaws.com/instance-gpu-manufacturer |
nvidia |
Name des GPU-Herstellers |
|
eks.amazonaws.com/instance-gpu-count |
1 |
Anzahl der GPUs auf der Instance |
|
eks.amazonaws.com/instance-gpu-memory |
16 384 |
Anzahl der Mebibyte Speicher auf der GPU |
|
eks.amazonaws.com/instance-local-nvme |
900 |
Anzahl der Gibibyte lokalen NVMe-Speichers auf der Instance |
Anmerkung
EKS Auto Mode unterstützt nur bestimmte Instances und hat Mindestgrößenanforderungen. Weitere Informationen finden Sie unter Unterstützte Instance-Referenz für EKS Auto Mode.
Von EKS Auto Mode nicht unterstützte Labels
EKS Auto Mode unterstützt die folgenden Labels nicht.
-
EKS Auto Mode unterstützt Linux nicht
-
node.kubernetes.io/windows-build -
kubernetes.io/os
-
Integrierte Knoten-Pools deaktivieren
Wenn Sie benutzerdefinierte Knoten-Pools erstellen, können Sie die integrierten Knoten-Pools deaktivieren. Weitere Informationen finden Sie unter Aktivierung oder Deaktivierung integrierter NodePools.
Cluster ohne integrierte Knoten-Pools
Sie können einen Cluster ohne integrierte Knoten-Pools erstellen. Dies ist nützlich, wenn Ihr Unternehmen benutzerdefinierte Knoten-Pools erstellt hat.
Anmerkung
Wenn Sie einen Cluster ohne integrierte Knoten-Pools erstellen, wird die default NodeClass nicht automatisch bereitgestellt. Sie müssen eine benutzerdefinierte NodeClass erstellen. Weitere Informationen finden Sie unter Knotenklasse für Amazon EKS erstellen.
Übersicht:
-
Erstellen Sie einen EKS-Cluster, bei dem die
nodePools- undnodeRoleArn-Werte leer sind.-
Beispiel-eksctl
autoModeConfig:autoModeConfig: enabled: true nodePools: [] # Do not set a nodeRoleARNWeitere Informationen finden Sie unter Erstellung eines EKS-Auto-Mode-Clusters mit der eksctl-Befehlszeilenschnittstelle.
-
-
Benutzerdefinierte Knotenklasse mit einer Knotenrollen-ARN erstellen
-
Weitere Informationen finden Sie unter Knotenklasse für Amazon EKS erstellen.
-
-
Zugriffseintrag für die benutzerdefinierte Knotenklasse erstellen
-
Weitere Informationen finden Sie unter Knotenklassen-Zugriffseintrag erstellen.
-
-
Erstellen Sie einen benutzerdefinierten Knoten-Pool, wie oben beschrieben.
Unterbrechung
Sie können EKS Auto Mode so konfigurieren, dass Knoten über Ihren NodePool auf verschiedene Arten unterbrochen werden. Sie können spec.disruption.consolidationPolicy, spec.disruption.consolidateAfter oder spec.template.spec.expireAfter verwenden. Sie können die Unterbrechung von EKS Auto Mode auch über den spec.disruption.budgets des NodePools begrenzen. Außerdem können Sie die Zeitfenster und die Anzahl der gleichzeitig unterbrochenen Knoten steuern. Anweisungen zur Konfiguration dieses Verhaltens finden Sie unter Unterbrechung
Sie können Unterbrechungen für Knoten-Pools wie folgt konfigurieren:
-
Identifizieren Sie, wann Instances nicht ausreichend ausgelastet sind, und konsolidieren Sie Workloads.
-
Erstellen Sie ein Budget für Knoten-Pool-Unterbrechung, um die Beendigung von Knoten aufgrund von Abweichungen, Leerständen und Konsolidierungen zu begrenzen.
Standardmäßig macht EKS Auto Mode Folgendes:
-
Konsolidiert nicht ausgelastete Instances.
-
Beendet Instances nach 336 Stunden.
-
Legt ein einzelnes Budget für Unterbrechung von 10 % der Knoten fest.
-
Ermöglicht den Austausch von Knoten aufgrund von Abweichungen, wenn eine neue AMI im Automatikmodus veröffentlicht wird. Das kommt etwa einmal pro Woche vor.
Kündigungsfrist
Wenn ein terminationGracePeriod in einem EKS Auto NodePool nicht explizit definiert ist, wendet das System automatisch eine standardmäßige 24-stündige Kündigungsfrist auf den zugehörigen NodeClaim an. Während EKS-Auto-Kunden in ihren benutzerdefinierten NodePool-Konfigurationen keinen Standardwert von terminationGracePeriod sehen, beobachten sie diesen Standardwert im NodeClaim. Die Funktionalität bleibt konsistent, unabhängig davon, ob die Karenzzeit explizit im NodePool festgelegt oder im NodeClaim standardmäßig festgelegt ist. Dies gewährleistet ein vorhersehbares Knoten-Beendigungsverhalten im gesamten Cluster.