Einen Knotenpool für EKS Auto Mode erstellen - Amazon EKS

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

  1. Erstellen Sie eine YAML-Datei mit dem Namen nodepool.yaml und der erforderlichen NodePool-Konfiguration. Sie können die folgende Beispielkonfiguration verwenden.

  2. Wenden Sie den NodePool auf Ihren Cluster an:

    kubectl apply -f nodepool.yaml
  3. Überprüfen Sie, ob der NodePool erfolgreich erstellt wurde:

    kubectl get nodepools
  4. (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 auf der Instance definiert.

karpenter.sh/capacity-type

spot

Zu den Kapazitätstypen gehören spot, on-demand

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

aws

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:

  1. Erstellen Sie einen EKS-Cluster, bei dem die nodePools- und nodeRoleArn-Werte leer sind.

  2. Benutzerdefinierte Knotenklasse mit einer Knotenrollen-ARN erstellen

  3. Zugriffseintrag für die benutzerdefinierte Knotenklasse erstellen

  4. 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 in der Karpenter-Dokumentation.

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.