

 **Unterstützung für die Verbesserung dieser Seite beitragen** 

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.

Um zu diesem Benutzerhandbuch beizutragen, 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.

# Verwaltung von Datenverarbeitungsressourcen mithilfe von Knoten
<a name="eks-compute"></a>

Ein Kubernetes-Knoten ist ein Rechner, auf dem containerisierte Anwendungen ausgeführt werden. Jeder Knoten umfasst die folgenden Komponenten:
+  ** [Container-Laufzeit](https://kubernetes.io/docs/setup/production-environment/container-runtimes/) ** – Software, die für den Betrieb der Container verantwortlich ist.
+  ** [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) ** – Stellt sicher, dass die Container fehlerfrei sind und innerhalb ihres zugeordneten Pods ausgeführt werden.
+  ** [kube-proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/) ** – Behält die Netzwerkregeln bei, die die Kommunikation mit Ihren Pods ermöglichen.

Weitere Informationen finden Sie unter [Nodes](https://kubernetes.io/docs/concepts/architecture/nodes/) in der Kubernetes-Dokumentation.

Ihr Amazon-EKS-Cluster kann Pods auf einer beliebigen Kombination aus im [EKS Auto Mode verwalteten Knoten](automode.md), [selbstverwalteten Knoten](worker.md), [von Amazon EKS verwalteten Knotengruppen](managed-node-groups.md), [AWS Fargate](fargate.md) und [Amazon EKS Hybrid Nodes](hybrid-nodes-overview.md) planen. Weitere Informationen zu Knoten, die in Ihrem Cluster bereitgestellt werden, finden Sie unter [Kubernetes-Ressourcen anzeigen in der AWS-Managementkonsole](view-kubernetes-resources.md).

**Anmerkung**  
Mit Ausnahme von Hybridknoten müssen sich die Knoten in derselben VPC befinden wie die Subnetze, die Sie beim Erstellen des Clusters ausgewählt haben. Die Knoten müssen sich jedoch nicht in denselben Subnetzen befinden.

## Vergleich von Rechenoptionen
<a name="_compare_compute_options"></a>

Die folgende Tabelle enthält mehrere Kriterien, die bei der Entscheidung ausgewertet werden müssen, welche Optionen Ihren Anforderungen am besten entsprechen. Selbstverwaltete Knoten sind eine weitere Option, die alle aufgeführten Kriterien erfüllen, jedoch erfordern sie einen deutlich höheren manuellen Wartungsaufwand. Weitere Informationen finden Sie unter [Knoten selbst mit selbstverwalteten Knoten verwalten](worker.md).

**Anmerkung**  
Bottlerocket weist einige spezifische Unterschiede zu den allgemeinen Informationen in dieser Tabelle auf. Weitere Informationen finden Sie in der Bottlerocket-[Dokumentation](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md) auf GitHub.


| Kriterien | EKS-verwaltete Knotengruppen | EKS Auto Mode | Amazon EKS Hybrid Nodes | 
| --- | --- | --- | --- | 
|  Kann in [AWS Outposts](https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html) bereitgestellt werden   |  Nein  |  Nein  |  Nein  | 
|  Kann auf eine [AWS Lokale Zone](local-zones.md) bereitgestellt werden   |  Ja  |  Nein  |  Nein  | 
|  Kann Container ausführen, die Windows benötigen  |  Ja  |  Nein  |  Nein  | 
|  Kann Container ausführen, die Linux benötigen  |  Ja  |  Ja  |  Ja  | 
|  Kann Workloads ausführen, die den Inferentia-Chip benötigen  |   [Ja](inferentia-support.md) – nur Amazon-Linux-Knoten  |  Ja  |  Nein  | 
|  Kann Workloads ausführen, die eine GPU benötigen  |   [Ja](eks-optimized-ami.md#gpu-ami) – nur Amazon-Linux-Knoten  |  Ja  |  Ja  | 
|  Kann Workloads ausführen, die Arm-Prozessoren benötigen  |   [Ja](eks-optimized-ami.md#arm-ami)   |  Ja  |  Ja  | 
|  Kann ausgeführt werdenAWS [Bottlerocket](https://aws.amazon.com/bottlerocket/)   |  Ja  |  Ja  |  Nein  | 
|  Pods teilen CPU, Arbeitsspeicher, Speicher und Netzwerkressourcen mit anderen Pods.  |  Ja  |  Ja  |  Ja  | 
|  Bereitstellen und Verwalten von Amazon-EC2-Instances  |  Ja  |  Nein – Erfahren Sie mehr über [verwaltete EC2-Instances](automode-learn-instances.md)   |  Ja – die physischen oder virtuellen Maschinen On-Premises werden von Ihnen mit den Tools Ihrer Wahl verwaltet.  | 
|  Das Betriebssystem von Amazon-EC2-Instances muss gesichert, gewartet und gepatcht werden  |  Ja  |  Nein  |  Ja – das auf Ihren physischen oder virtuellen Maschinen ausgeführte Betriebssystem wird von Ihnen mit den Tools Ihrer Wahl verwaltet.  | 
|  Kann Bootstrap-Argumente bei der Bereitstellung eines Knotens bereitstellen, z. B. zusätzliche [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/)-Argumente.  |  Ja – mithilfe von `eksctl` oder einer [Startvorlage](launch-templates.md) mit einem benutzerdefinierten AMI.  |  Nein – [Verwenden Sie zur Konfiguration der Knoten eine `NodeClass`](create-node-class.md)   |  Ja – Sie können Bootstrap-Argumente mit nodeadm anpassen. Siehe [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md).  | 
|  IP-Adressen können Pods aus einem anderen CIDR-Block als der dem Knoten zugewiesenen IP-Adresse zuweisen.   |  Ja – Verwenden einer Startvorlage mit einem benutzerdefinierten AMI. Weitere Informationen finden Sie unter [Verwaltete Knoten mit Startvorlagen anpassen](launch-templates.md).  |  Nein  |  Ja – siehe [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md).  | 
|  SSH im Knoten nicht möglich  |  Ja  |  Nein – [Erfahren Sie, wie Sie Fehler an Knoten beheben](auto-troubleshoot.md)   |  Ja  | 
|  Kann Ihr eigenes benutzerdefiniertes AMI auf Knoten bereitstellen  |  Ja – Verwenden eines [Startvorlage](launch-templates.md)   |  Nein  |  Ja  | 
|  Kann Ihr eigenes benutzerdefiniertes CNI auf Knoten bereitstellen  |  Ja – Verwenden eines [Startvorlage](launch-templates.md) mit einem benutzerdefinierten AMI  |  Nein  |  Ja  | 
|  Knoten-AMI muss selbst aktualisiert werden  |   [Ja](update-managed-node-group.md) – Wenn Sie ein für Amazon-EKS-optimiertes AMI bereitgestellt haben, werden Sie in der Amazon-EKS-Konsole benachrichtigt, wenn Aktualisierungen verfügbar sind. Sie können die Aktualisierung mit einem Klick in der Konsole durchführen. Wenn Sie ein benutzerdefiniertes AMI bereitgestellt haben, werden Sie in der Amazon-EKS-Konsole nicht benachrichtigt, wenn Aktualisierungen verfügbar sind. Sie müssen die Aktualisierung selbst durchführen.  |  Nein  |  Ja – das auf Ihren physischen oder virtuellen Maschinen ausgeführte Betriebssystem wird von Ihnen mit den Tools Ihrer Wahl verwaltet. Siehe [Vorbereitung des Betriebssystems für Hybridknoten](hybrid-nodes-os.md).  | 
|  Muss die Kubernetes-Version des Knotens selbst aktualisieren  |   [Ja](update-managed-node-group.md) – Wenn Sie ein für Amazon-EKS-optimiertes AMI bereitgestellt haben, werden Sie in der Amazon-EKS-Konsole benachrichtigt, wenn Aktualisierungen verfügbar sind. Sie können die Aktualisierung mit einem Klick in der Konsole durchführen. Wenn Sie ein benutzerdefiniertes AMI bereitgestellt haben, werden Sie in der Amazon-EKS-Konsole nicht benachrichtigt, wenn Aktualisierungen verfügbar sind. Sie müssen die Aktualisierung selbst durchführen.  |  Nein  |  Ja – Sie verwalten Upgrades von Hybridknoten mit den Tools Ihrer Wahl oder mit `nodeadm`. Siehe [Aktualisierung von Hybridknoten für Ihren Cluster](hybrid-nodes-upgrade.md).  | 
|  Kann Amazon-EBS-Speicher mit Pods verwenden  |   [Ja](ebs-csi.md)   |  Ja, als integrierte Funktion. Erfahren Sie, wie Sie [eine Speicherklasse erstellen.](create-storage-class.md)   |  Nein  | 
|  Kann Amazon-EFS-Speicher mit Pods verwenden  |   [Ja](efs-csi.md)   |  Ja  |  Nein  | 
|  Kann Amazon FSx für Lustre Speicher mit Pods verwenden  |   [Ja](fsx-csi.md)   |  Ja  |  Nein  | 
|  Kann Network Load Balancer für Services verwenden  |   [Ja](network-load-balancing.md)   |  Ja  |  Ja – Zieltyp `ip` muss verwendet werden.  | 
|  Pods können in einem öffentlichen Subnetz ausgeführt werden  |  Ja  |  Ja  |  Nein – Pods werden in einer On-Premises-Umgebung ausgeführt.  | 
|  Kann einzelnen Pods verschiedene VPC-Sicherheitsgruppen zuweisen  |   [Ja](security-groups-for-pods.md) – Nur Linux-Knoten  |  Nein  |  Nein  | 
|  Kann Kubernetes DaemonSets ausführen  |  Ja  |  Ja  |  Ja  | 
|  Unterstützung für `HostPort` und `HostNetwork` im Pod-Manifest  |  Ja  |  Ja  |  Ja  | 
|   AWS-Verfügbarkeit in Regionen  |   [Alle von Amazon EKS unterstützten Regionen](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |   [Alle von Amazon EKS unterstützten Regionen](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |   [Alle von Amazon EKS unterstützten Regionen](https://docs.aws.amazon.com/general/latest/gr/eks.html) mit Ausnahme der AWS GovCloud (US)-Regionen und der China-Regionen.  | 
|  Kann Container auf Amazon-EC2-Dedicated-Hosts ausführen  |  Ja  |  Nein  |  Nein  | 
|  Preise  |  Kosten einer Amazon-EC2-Instance, die mehrere Pods ausführt. Weitere Informationen dazu finden Sie unter [Amazon EC2 – Preise](https://aws.amazon.com/ec2/pricing/).  |  Wenn EKS Auto Mode in Ihrem Cluster aktiviert ist, zahlen Sie zusätzlich zu den Standardgebühren für EC2-Instances eine separate Gebühr für die Instances, die mit der Rechenleistung des Automatikmodus gestartet werden. Der Betrag hängt vom gestarteten Instance-Typ und der AWS-Region ab, in der sich Ihr Cluster befindet. Weitere Informationen finden Sie unter [Amazon EKS – Preise](https://aws.amazon.com/eks/pricing/).  |  Kosten für Hybridknoten-vCPU pro Stunde. Weitere Informationen finden Sie unter [Amazon EKS – Preise](https://aws.amazon.com/eks/pricing/).  | 

# Vereinfachung des Knotenlebenszyklus mit verwalteten Knotengruppen
<a name="managed-node-groups"></a>

Von Amazon EKS verwaltete Knotengruppen automatisieren die Bereitstellung und das Lebenszyklusmanagement von Knoten ( EC2 Amazon-Instances) für Amazon EKS Kubernetes-Cluster.

Mit Amazon EKS-verwalteten Knotengruppen müssen Sie die EC2 Amazon-Instances, die Rechenkapazität für die Ausführung Ihrer Kubernetes-Anwendungen bereitstellen, nicht separat bereitstellen oder registrieren. Sie können Knoten für Ihren Cluster mit einem einzigen Vorgang erstellen, aktualisieren oder beenden. Knotenaktualisierungen und -beendigungen entleeren Knoten automatisch, um sicherzustellen, dass Ihre Anwendungen verfügbar bleiben.

Jeder verwaltete Knoten wird als Teil einer Amazon EC2 Auto Scaling Scaling-Gruppe bereitgestellt, die von Amazon EKS für Sie verwaltet wird. Jede Ressource, einschließlich der Instances und Auto Scaling Scaling-Gruppen, wird in Ihrem AWS Konto ausgeführt. Jede Knotengruppe wird in mehreren Availability Zones ausgeführt, die Sie definieren.

Verwaltete Knotengruppen können optional auch die automatische Knotenreparatur nutzen, die den Zustand der Knoten kontinuierlich überwacht. Sie reagiert automatisch auf erkannte Probleme und ersetzt Knoten, wenn möglich. Dies unterstützt die Gesamtverfügbarkeit des Clusters mit minimalen manuellen Eingriffen. Weitere Informationen finden Sie unter [Erkennen Sie Probleme mit dem Knotenstatus und aktivieren Sie die automatische Knotenreparatur](node-health.md).

Sie können mithilfe der Amazon EKS-Konsole, AWS CLI, `eksctl` AWS API oder Infrastruktur als Code-Tools eine verwaltete Knotengruppe zu neuen oder vorhandenen Clustern hinzufügen, einschließlich AWS CloudFormation. Knoten, die als Teil einer verwalteten Knotengruppe gestartet werden, werden vom Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) automatisch für die automatische Erkennung mit Tags versehen. Sie können die Knotengruppe verwenden, um Kubernetes-Labels auf Knoten anzuwenden und sie jederzeit zu aktualisieren.

Für die Nutzung von Amazon EKS-verwalteten Knotengruppen fallen keine zusätzlichen Kosten an. Sie zahlen nur für die AWS Ressourcen, die Sie bereitstellen. Dazu gehören EC2 Amazon-Instances, Amazon EBS-Volumes, Amazon EKS-Cluster-Stunden und jede andere AWS Infrastruktur. Es fallen keine Mindestgebühren oder Vorauszahlungen an.

Weitere Informationen zu den ersten Schritten mit einem neuen Amazon-EKS-Cluster und einer verwalteten Knotengruppe finden Sie unter [Erste Schritte mit Amazon EKS — AWS-Managementkonsole und AWS CLI](getting-started-console.md).

Informationen zum Hinzufügen einer verwalteten Knotengruppe zu einem bestehenden Cluster finden Sie unter [Eine verwaltete Knotengruppe für Ihren Cluster erstellen](create-managed-node-group.md).

## Konzepte für verwaltete Knotengruppen
<a name="managed-node-group-concepts"></a>
+ Von Amazon EKS verwaltete Knotengruppen erstellen und verwalten EC2 Amazon-Instances für Sie.
+ Jeder verwaltete Knoten wird als Teil einer Amazon EC2 Auto Scaling Scaling-Gruppe bereitgestellt, die von Amazon EKS für Sie verwaltet wird. Darüber hinaus werden alle Ressourcen, einschließlich EC2 Amazon-Instances und Auto Scaling Scaling-Gruppen, in Ihrem AWS Konto ausgeführt.
+ Die Auto-Scaling-Gruppe einer verwalteten Knotengruppe umfasst alle Subnetze, die Sie beim Erstellen der Gruppe angeben.
+ Amazon EKS kennzeichnet verwaltete Knotengruppenressourcen, sodass sie für die Verwendung des Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) konfiguriert sind.
**Wichtig**  
Wenn Sie eine zustandsbehaftete Anwendung über mehrere Availability Zones hinweg ausführen, die von Amazon-EBS-Volumes gesichert wird und den Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) verwendet, sollten Sie mehrere Knotengruppen konfigurieren, die jeweils für eine einzelne Availability Zone gelten. Außerdem sollten Sie das `--balance-similar-node-groups`-Feature aktivieren.
+ Sie können eine benutzerdefinierte Startvorlage für ein höheres Maß an Flexibilität und Anpassung bei der Bereitstellung verwalteter Knoten verwenden. Zum Beispiel können Sie zusätzliche `kubelet`-Argumente angeben und ein benutzerdefiniertes AMI verwenden. Weitere Informationen finden Sie unter [Verwaltete Knoten mit Startvorlagen anpassen](launch-templates.md). Wenn Sie beim ersten Erstellen einer verwalteten Knotengruppe keine benutzerdefinierte Startvorlage verwenden, gibt es eine automatisch generierte Startvorlage. Ändern Sie diese automatisch generierte Vorlage nicht manuell sonst treten Fehler auf.
+ Amazon EKS folgt dem Modell der gemeinsamen Verantwortung für CVEs und Sicherheitspatches auf verwalteten Knotengruppen. Wenn verwaltete Knoten ein für Amazon EKS optimiertes AMI ausführen, ist Amazon EKS für die Erstellung von Patch-Versionen des AMI verantwortlich, wenn Fehler oder Probleme gemeldet werden. Wir können eine Korrektur veröffentlichen. Sie sind jedoch dafür verantwortlich, diese Patch-AMI-Versionen für Ihre verwalteten Knotengruppen bereitzustellen. Wenn verwaltete Knoten ein benutzerdefiniertes AMI ausführen, sind Sie für die Erstellung von Patch-Versionen des AMI verantwortlich, wenn Fehler oder Probleme gemeldet werden, und für die anschließende Bereitstellung des AMI. Weitere Informationen finden Sie unter [Eine verwaltete Knotengruppe für Ihren Cluster aktualisieren](update-managed-node-group.md).
+ Von Amazon EKS verwaltete Knotengruppen können sowohl in öffentlichen als auch privaten Subnetzen gestartet werden. Wenn Sie eine verwaltete Knotengruppe am oder nach dem 22. April 2020 in einem öffentlichen Subnetz starten, muss `MapPublicIpOnLaunch` für das Subnetz auf „Wahr“ gesetzt sein, damit die Instances einem Cluster hinzugefügt werden können. Wenn das öffentliche Subnetz am `eksctl` oder nach dem 26. März 2020 mithilfe der von [Amazon EKS bereitgestellten AWS CloudFormation Vorlagen](creating-a-vpc.md) erstellt wurde, ist diese Einstellung bereits auf true gesetzt. Wenn die öffentlichen Subnetze vor dem 26. März 2020 erstellt wurden, müssen Sie die Einstellung manuell ändern. Weitere Informationen finden Sie unter [Ändern des Attributs für die öffentliche IPv4 Adressierung für Ihr Subnetz](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip).
+ Wenn Sie eine verwaltete Knotengruppe in privaten Subnetzen bereitstellen, müssen Sie sicherstellen, dass diese auf Amazon ECR zugreifen kann, um Container-Images abzurufen. Sie können dies tun, indem Sie ein NAT-Gateway mit der Routing-Tabelle des Subnetzes verbinden oder indem Sie die folgenden [AWS PrivateLink -VPC-Endpunkte](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-setting-up-vpc-create) hinzufügen:
  + Amazon-ECR-API-Endpunktschnittstelle – `com.amazonaws.region-code.ecr.api` 
  + API-Endpunktschnittstelle der Amazon-ECR-Docker-Registrierung – `com.amazonaws.region-code.ecr.dkr` 
  + Amazon-S3-Gateway-Endpunkt – `com.amazonaws.region-code.s3` 

  Weitere häufig verwendete Services und Endpunkte finden Sie unter [Bereitstellung privater Cluster mit eingeschränktem Internetzugang](private-clusters.md).
+ Verwaltete Knotengruppen können nicht in [AWS Outposts](eks-outposts.md) oder in [AWS Wavelength](https://docs.aws.amazon.com/wavelength/) bereitgestellt werden. Verwaltete Knotengruppen können [AWS Local Zones](https://aws.amazon.com/about-aws/global-infrastructure/localzones/) erstellt werden. Weitere Informationen finden Sie unter [Starten Sie EKS-Cluster mit geringer Latenz in AWS Local Zones.](local-zones.md).
+ Sie können mehrere verwaltete Knotengruppen innerhalb eines einzelnen Clusters erstellen. So können Sie beispielsweise eine Knotengruppe mit dem standardmäßig für Amazon EKS optimierten Amazon Linux AMI für einige Workloads und eine andere mit der GPU-Variante für Workloads erstellen, die GPU-Unterstützung erfordern.
+ Wenn Ihre verwaltete Knotengruppe auf einen Fehler bei der [Überprüfung des EC2 Amazon-Instance-Status](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html) stößt, gibt Amazon EKS einen Fehlercode zurück, der Ihnen bei der Diagnose des Problems hilft. Weitere Informationen finden Sie unter [Fehlercodes bei verwalteten Knotengruppen](troubleshooting.md#troubleshoot-managed-node-groups).
+ Amazon EKS fügt Kubernetes-Labels zu verwalteten Knotengruppen-Instances hinzu. Diese von Amazon EKS bereitgestellten Labels sind mit dem Präfix `eks.amazonaws.com` versehen.
+ Amazon EKS leert Knoten automatisch mit der Kubernetes-API während Beendigungs- oder Aktualisierungsvorgängen.
+ Die Budgets für Pod-Unterbrechung werden nicht eingehalten, wenn ein Knoten mit `AZRebalance` beendet oder die Anzahl der gewünschten Knoten reduziert wird. Diese Aktionen versuchen, Pods auf dem Knoten zu entfernen. Wenn dies jedoch länger als 15 Minuten dauert, wird der Knoten beendet, unabhängig davon, ob alle Pods auf dem Knoten beendet sind. Um den Zeitraum bis zum Beenden des Knotens zu verlängern, fügen Sie der Auto-Scaling-Gruppe einen Lebenszyklus-Hook hinzu. Weitere Informationen finden [Sie unter Hinzufügen von Lifecycle-Hooks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/adding-lifecycle-hooks.html) im *Amazon EC2 Auto Scaling Scaling-Benutzerhandbuch*.
+ Damit der Draining-Prozess nach Erhalt einer Benachrichtigung über eine Spot-Unterbrechung oder eine Kapazitätsumverteilung korrekt ausgeführt werden kann, muss `CapacityRebalance` auf `true` eingestellt sein.
+ Aktualisierungen verwalteter Knotengruppen respektieren die Budgets für Pod-Unterbrechung, die Sie für Ihre Pods festgelegt haben. Weitere Informationen finden Sie unter [Alle Phasen der Knotenaktualisierung verstehen](managed-node-update-behavior.md).
+ Für die Verwendung verwalteter Amazon-EKS-Knotengruppen fallen keine zusätzlichen Kosten an. Sie zahlen nur für die AWS Ressourcen, die Sie bereitstellen.
+ Wenn Sie Amazon-EBS-Volumes für Ihre Knoten verschlüsseln möchten, können Sie die Knoten mithilfe einer Startvorlage bereitstellen. Um verwaltete Knoten mit verschlüsselten Amazon-EBS-Volumes ohne Verwendung einer Startvorlage bereitzustellen, verschlüsseln Sie alle neuen Amazon-EBS-Volumes, die in Ihrem Konto erstellt wurden. Weitere Informationen finden Sie unter [Standardverschlüsselung](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default) im * EC2 Amazon-Benutzerhandbuch*.

## Kapazitätstypen für verwaltete Knotengruppen
<a name="managed-node-group-capacity-types"></a>

Beim Erstellen einer verwalteten Knotengruppe können Sie entweder den Kapazitätstyp On-Demand oder Spot-Kapazität auswählen. Amazon EKS stellt eine verwaltete Knotengruppe mit einer Amazon EC2 Auto Scaling Scaling-Gruppe bereit, die entweder nur On-Demand-Instances oder nur Amazon EC2 Spot-Instances enthält. Sie können Pods für Fehlertoleranz-Anwendungen für verwaltete Spot-Knotengruppen und fehlerintolerante Anwendungen für On-Demand-Knotengruppen in einem einzelnen Kubernetes-Cluster planen. Standardmäßig stellt eine verwaltete Knotengruppe EC2 On-Demand-Amazon-Instances bereit.

### On-Demand
<a name="managed-node-group-capacity-types-on-demand"></a>

Mit On-Demand-Instances zahlen Sie für Rechenkapazität bis zur zweiten Stunde ohne langfristige Verpflichtungen.

Standardmäßig: Wenn Sie keinen **Capacity Type** festlegen, wird die verwaltete Knotengruppe mit On-Demand-Instances bereitgestellt. Eine verwaltete Knotengruppe konfiguriert in Ihrem Namen eine Amazon EC2 Auto Scaling Scaling-Gruppe, wobei die folgenden Einstellungen angewendet werden:
+ Die Allokationsstrategie zur Bereitstellung von On-Demand-Kapazität ist auf `prioritized` eingestellt. Verwaltete Knotengruppen verwenden die Reihenfolge der in der API übergebenen Instance-Typen, um zu bestimmen, welcher Instance-Typ bei der Erfüllung der On-Demand-Kapazität zuerst verwendet werden soll. Sie können beispielsweise drei Instance-Typen in der folgenden Reihenfolge angeben: `c5.large`, `c4.large`, und `c3.large`. Wenn Ihre On-Demand-Instances gestartet werden, erfüllt die verwaltete Knotengruppe On-Demand-Kapazität beginnend mit `c5.large`, dann `c4.large`, und dann `c3.large`. Weitere Informationen finden Sie unter [Amazon EC2 Auto Scaling Scaling-Gruppe](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-purchase-options.html#asg-allocation-strategies) im *Amazon EC2 Auto Scaling Scaling-Benutzerhandbuch*.
+ Amazon EKS fügt allen Knoten in Ihrer verwalteten Knotengruppe die folgende Kubernetes-Bezeichnung hinzu, die den Kapazitätstyp angibt: `eks.amazonaws.com/capacityType: ON_DEMAND`. Sie können dieses Label verwenden, um statusbehaftete oder fehlerintolerante Anwendungen auf On-Demand-Knoten zu planen.

### Spot-Instances
<a name="managed-node-group-capacity-types-spot"></a>

Amazon EC2 Spot-Instances sind freie EC2 Amazon-Kapazitäten, die erhebliche Rabatte gegenüber den On-Demand-Preisen bieten. Amazon EC2 Spot-Instances können mit einer zweiminütigen Unterbrechungsbenachrichtigung unterbrochen werden, wenn die Kapazität wieder EC2 benötigt wird. Weitere Informationen finden Sie unter [Spot-Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html) im * EC2 Amazon-Benutzerhandbuch*. Sie können eine verwaltete Knotengruppe mit Amazon EC2 Spot-Instances konfigurieren, um die Kosten für die Rechenknoten zu optimieren, die in Ihrem Amazon EKS-Cluster ausgeführt werden.

Um Spot-Instances in einer verwalteten Knotengruppe zu verwenden, müssen Sie eine verwaltete Knotengruppe erstellen, indem Sie den Kapazitätstyp als `spot` einstellen. Eine verwaltete Knotengruppe konfiguriert in Ihrem Namen eine Amazon EC2 Auto Scaling Scaling-Gruppe, wobei die folgenden bewährten Spot-Methoden angewendet werden:
+ Um sicherzustellen, dass Ihre Spot-Knoten in den optimalen Spot-Kapazitätspools bereitgestellt werden, ist die Zuweisungsstrategie auf eine der folgenden Optionen eingestellt:
  +  `price-capacity-optimized` (PCO) – Beim Erstellen neuer Knotengruppen in einem Cluster mit Kubernetes-Version `1.28` oder höher ist die Zuweisungsstrategie auf `price-capacity-optimized` eingestellt. Allerdings wird die Zuweisungsstrategie für Knotengruppen nicht geändert, die bereits mit `capacity-optimized` erstellt wurden, bevor von Amazon EKS verwaltete Knotengruppen PCO unterstützt hatten.
  +  `capacity-optimized` (CO) – Beim Erstellen neuer Knotengruppen in einem Cluster mit Kubernetes-Version `1.27` oder niedriger ist die Zuweisungsstrategie auf `capacity-optimized` eingestellt.

  Um die Anzahl der Spot-Kapazitätspools zu erhöhen, die für die Zuweisung von Kapazität verfügbar sind, konfigurieren Sie eine verwaltete Knotengruppe für die Verwendung mehrerer Instance-Typen.
+ Amazon EC2 Spot Capacity Rebalancing ist aktiviert, sodass Amazon EKS Ihre Spot-Knoten problemlos entleeren und neu verteilen kann, um Anwendungsunterbrechungen zu minimieren, wenn ein Spot-Knoten einem erhöhten Unterbrechungsrisiko ausgesetzt ist. Weitere Informationen finden Sie unter [Amazon EC2 Auto Scaling Capacity Rebalancing](https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html) im *Amazon EC2 Auto Scaling Scaling-Benutzerhandbuch*.
  + Wenn ein Spot-Knoten eine Neuausgleichsempfehlung erhält, versucht Amazon EKS automatisch, einen neuen Ersatz-Spot-Knoten zu starten.
  + Wenn ein Spot-Unterbrechungsnachweis in zwei Minuten eintrifft, bevor sich der Ersatz-Spot-Knoten in einem`Ready`, beginnt Amazon EKS mit dem Entleeren des Spot-Knotens, der die Neuausgleichsempfehlung erhalten hat. Amazon EKS entleert den Knoten nach bestem Wissen. Daher gibt es keine Garantie dafür, dass Amazon EKS wartet, bis der Ersatzknoten dem Cluster beitritt, bevor der vorhandene Knoten entleert wird.
  + Wenn ein Ersatz-Spot-Knoten gestartet wird und in dem `Ready` Zustand auf Kubernetes ist, sperrt Amazon EKS den Spot-Knoten, der die Neuausgleichs-Empfehlung erhalten hat, und entleert ihn. Durch das Cordoning des Spot-Knotens wird sichergestellt, dass der Service-Controller keine neuen Anforderungen an diesen Spot-Knoten sendet. Es entfernt sie auch aus der Liste der gesunden, aktiven Spot-Knoten. Durch das Entleeren des Spot-Knotens wird sichergestellt, dass ausgeführte Pods reibungslos entsorgt werden.
+ Amazon EKS fügt allen Knoten in Ihrer verwalteten Knotengruppe die folgende Kubernetes-Bezeichnung hinzu, die den Kapazitätstyp angibt: `eks.amazonaws.com/capacityType: SPOT`. Sie können dieses Label verwenden, um fehlertolerante Anwendungen auf Spot-Knoten zu planen.
**Wichtig**  
EC2 gibt zwei Minuten vor dem Beenden Ihrer [Spot-Instance eine Benachrichtigung zur Spot-Unterbrechung](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-instance-termination-notices.html) aus. Pods auf Spot-Knoten erhalten jedoch möglicherweise nicht das volle 2-minütige Zeitfenster für ein ordnungsgemäßes Herunterfahren. Wenn Amazon EC2 EKS die Benachrichtigung ausgibt, gibt es eine Verzögerung, bis Amazon EKS mit der Räumung von Pods beginnt. Räumungen erfolgen sequenziell, um den Kubernetes-API-Server zu schützen. Bei mehreren gleichzeitigen Spot-Rückforderungen kann es also vorkommen, dass einige Pods verspätete Räumungsbenachrichtigungen erhalten. Pods können ohne Empfang von Kündigungssignalen gewaltsam beendet werden, insbesondere auf Knoten mit hoher Pod-Dichte, bei gleichzeitigen Rückforderungen oder bei Verwendung langer Kündigungsfristen. Für Spot-Workloads empfehlen wir, Anwendungen unterbrechungstolerant zu gestalten, Übergangsfristen von 30 Sekunden oder weniger zu verwenden, lang andauernde PreStop-Hooks zu vermeiden und die Pod-Räumungsmetriken zu überwachen, um die tatsächlichen Kulanzfristen in Ihren Clustern zu ermitteln. Für Workloads, die eine garantierte ordentliche Kündigung erfordern, empfehlen wir, stattdessen On-Demand-Kapazität zu verwenden.

Bei der Entscheidung, ob eine Knotengruppe mit On-Demand- oder Spot-Kapazität bereitgestellt werden soll, sollten Sie die folgenden Bedingungen berücksichtigen:
+ Spot-Instances eignen sich gut für zustandslose, fehlertolerante, flexible Anwendungen. Dazu gehören Workloads für Batch- und Machine-Learning-Schulungen, Big Data ETLs wie Apache Spark, Anwendungen zur Verarbeitung von Warteschlangen und statusfreie API-Endpunkte. Da es sich bei Spot um freie EC2 Amazon-Kapazität handelt, die sich im Laufe der Zeit ändern kann, empfehlen wir, Spot-Kapazität für unterbrechungstolerante Workloads zu verwenden. Insbesondere eignet sich die Spot-Kapazität für Workloads, die Zeiten tolerieren können, in denen die erforderliche Kapazität nicht verfügbar ist.
+ Es wird empfohlen, On-Demand für Anwendungen zu verwenden, die fehlerintolerant sind. Dazu gehören Cluster-Verwaltungs-Tools wie Überwachungs- und Betriebstools, Bereitstellungen, die `StatefulSets` erfordern, und zustandsbehaftete Anwendungen wie Datenbanken.
+ Um die Verfügbarkeit Ihrer Anwendungen bei der Verwendung von Spot-Instances zu maximieren, wird empfohlen, eine verwaltete Spot-Knotengruppe für die Verwendung mehrerer Instance-Typen zu konfigurieren. Es wird empfohlen, die folgenden Regeln anzuwenden, wenn mehrere Instance-Typen verwendet werden:
  + Wenn Sie innerhalb einer verwalteten Knotengruppe den [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) verwenden, wird empfohlen, einen flexiblen Satz von Instance-Typen mit der gleichen Menge an vCPU und Arbeitsspeicherressourcen zu verwenden. Dies soll sicherstellen, dass die Knoten in Ihrem Cluster wie erwartet skalieren. Wenn Sie beispielsweise vier V CPUs - und acht GiB Arbeitsspeicher benötigen, verwenden Sie`c3.xlarge`,`c4.xlarge`,`c5.xlarge`,`c5d.xlarge`, `c5a.xlarge``c5n.xlarge`, oder andere ähnliche Instance-Typen.
  + Um die Anwendungsverfügbarkeit zu verbessern, empfehlen wir Ihnen, mehrere Spot-verwaltete Knotengruppen bereitzustellen. Dafür sollte jede Gruppe einen flexiblen Satz von Instance-Typen verwenden, die über die gleichen vCPU- und Speicherressourcen verfügen. Wenn Sie beispielsweise 4 V CPUs und 8 GiB Arbeitsspeicher benötigen, empfehlen wir Ihnen, eine verwaltete Knotengruppe mit`c3.xlarge`,,,`c4.xlarge`, `c5.xlarge` `c5d.xlarge` `c5a.xlarge``c5n.xlarge`, oder anderen ähnlichen Instanztypen und eine zweite verwaltete Knotengruppe mit`m3.xlarge`,,,`m4.xlarge`, `m5.xlarge` `m5d.xlarge``m5a.xlarge`, `m5n.xlarge` oder anderen ähnlichen Instanztypen zu erstellen.
  + Wenn Sie Ihre Knotengruppe mit dem Spot-Kapazitätstyp bereitstellen, der eine benutzerdefinierte Startvorlage verwendet, verwenden Sie die API, um mehrere Instance-Typen zu übergeben. Übergeben Sie keinen einzelnen Instance-Typ durch die Startvorlage. Weitere Informationen zum Bereitstellen einer Knotengruppe mithilfe einer Startvorlage finden Sie unter[Verwaltete Knoten mit Startvorlagen anpassen](launch-templates.md)aus.

# Eine verwaltete Knotengruppe für Ihren Cluster erstellen
<a name="create-managed-node-group"></a>

Dieses Thema beschreibt, wie Sie von Amazon EKS verwaltete Knotengruppen von Knoten starten können, die sich bei Ihrem Amazon-EKS-Cluster registrieren. Nachdem die Knoten dem Cluster beigetreten sind, können Sie Kubernetes-Anwendungen darin bereitstellen.

Wenn Sie zum ersten Mal eine von Amazon EKS verwaltete Knotengruppe starten, empfehlen wir Ihnen, stattdessen eine unserer Anleitungen unter [Erste Schritte mit Amazon EKS](getting-started.md) zu befolgen. Diese Anleitungen bieten schrittweise Anleitungen zum Erstellen eines Amazon-EKS-Clusters mit Knoten.

**Wichtig**  
Amazon-EKS-Knoten sind Standard-Amazon-EC2-Instances. Die Abrechnung erfolgt auf Grundlage der normalen Amazon-EC2-Preise. Weitere Informationen finden Sie unter [Amazon EC2 – Preise](https://aws.amazon.com/ec2/pricing/).
Sie können keine verwalteten Knoten in einer AWS Region erstellen, in der AWS Outposts oder AWS Wavelength aktiviert sind. Sie könnenSelbstverwaltetes-Knoten. Weitere Informationen finden Sie unter [Selbstverwaltete Amazon-Linux-Knoten erstellen](launch-workers.md), [Selbstverwaltete Microsoft-Windows-Knoten erstellen](launch-windows-workers.md) und [Selbstverwaltete Bottlerocket-Knoten erstellen](launch-node-bottlerocket.md). Sie können auch eine selbstverwaltete Amazon-Linux-Knotengruppe auf einem Outpost erstellen. Weitere Informationen finden Sie unter [Amazon Linux-Knoten auf AWS Outposts erstellen](eks-outposts-self-managed-nodes.md).
Wenn Sie keine [AMI-ID für die `bootstrap.sh`-Datei angeben](launch-templates.md#launch-template-custom-ami), die in Amazon-EKS-optimiertem Linux oder Bottlerocket enthalten ist, erzwingen verwaltete Knotengruppen eine maximale Anzahl für den Wert von `maxPods`. Für Instances mit weniger als 30 V CPUs ist `110` die maximale Anzahl. Bei Instances mit mehr als 30 V CPUs springt die maximale Anzahl auf`250`. Diese Erzwingung hat Vorrang vor anderen `maxPods` Konfigurationen, darunter. `maxPodsExpression` Weitere Informationen darüber, wie es bestimmt `maxPods` wird und wie es angepasst werden kann, finden Sie unter[Wie wird MaxPods bestimmt](choosing-instance-type.md#max-pods-precedence).
+ Ein vorhandener Amazon-EKS-Cluster. Informationen zum Bereitstellen finden Sie unter [Amazon-EKS-Cluster erstellen](create-cluster.md).
+ Eine vorhandene IAM-Rolle, die von den Knoten verwendet werden soll. Informationen zum Erstellen finden Sie unter [Amazon-EKS-Knoten-IAM-Rolle](create-node-role.md). Wenn diese Rolle keine der beiden Richtlinien für die VPC CNI enthält, ist die folgende separate Rolle für die VPC-CNI-Pods erforderlich.
+ (Optional, aber empfohlen) Das Amazon-VPC-CNI-Plugin für Kubernetes-Add-On, konfiguriert mit einer eigenen IAM-Rolle, der die erforderliche IAM-Richtlinie zugeordnet ist. Weitere Informationen finden Sie unter [Konfiguration des Amazon-VPC-CNI-Plugins für die Verwendung von IRSA](cni-iam-role.md).
+ Vertrautheit mit den unter [Auswahl eines optimalen Instance-Typ für Amazon-EC2-Knoten](choosing-instance-type.md) aufgeführten Überlegungen. Je nachdem, welchen Instance-Typ Sie wählen, kann es zusätzliche Voraussetzungen für Ihren Cluster und Ihre VPC geben.
+ Um eine von Windows verwaltete Knotengruppe hinzuzufügen, müssen Sie zunächst den Windows-Support für Ihren Cluster aktivieren. Weitere Informationen finden Sie unter [Bereitstellung von Windows-Knoten in EKS-Clustern](windows-support.md).

Sie können eine verwaltete Knotengruppe mit einer der folgenden Optionen erstellen:
+  [`eksctl`](#eksctl_create_managed_nodegroup) 
+  [AWS-Managementkonsole](#console_create_managed_nodegroup) 

## `eksctl`
<a name="eksctl_create_managed_nodegroup"></a>

 **Verwaltete Knotengruppe mit eksctl erstellen** 

Für diesen Vorgang ist `eksctl` Version `0.215.0` oder höher erforderlich. Sie können Ihre -Version mit dem folgenden Befehl überprüfen:

```
eksctl version
```

Eine Installations- und Upgrade-Anleitung für `eksctl` finden Sie in der Dokumentation zu `eksctl` unter [Installation](https://eksctl.io/installation).

1. (Optional) Wenn die verwaltete IAM-Richtlinie **AmazonEKS\$1CNI\$1Policy** Ihrer [IAM-Rolle des Amazon-EKS-Knoten](create-node-role.md) zugeordnet ist, empfehlen wir, sie stattdessen einer IAM-Rolle zuzuweisen, die Sie dem Kubernetes-Servicekonto `aws-node` zuordnen. Weitere Informationen finden Sie unter [Konfiguration des Amazon-VPC-CNI-Plugins für die Verwendung von IRSA](cni-iam-role.md).

1. Erstellen Sie eine verwaltete Knotengruppe mit oder ohne Verwendung einer benutzerdefinierten Startvorlage. Das manuelle Angeben einer Startvorlage ermöglicht eine bessere Anpassung einer Knotengruppe. Zum Beispiel kann es die Bereitstellung eines benutzerdefinierten AMI oder die Bereitstellung von Argumenten für das `boostrap.sh`-Skript in einem für Amazon EKS optimierten AMI ermöglichen. Geben Sie den folgenden Befehl ein, um eine vollständige Liste aller verfügbaren Optionen und Standardwerte anzuzeigen.

   ```
   eksctl create nodegroup --help
   ```

   Ersetzen Sie im folgenden Befehl *my-cluster* durch den Namen Ihres Clusters und ersetzen Sie *my-mng* durch den Namen Ihrer Knotengruppe. Der Name der Knotengruppe darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten.
**Wichtig**  
Wenn Sie beim erstmaligen Erstellen einer verwalteten Knotengruppe keine benutzerdefinierte Startvorlage verwenden, sollten Sie später auch keine für die Knotengruppe verwenden. Wenn Sie keine benutzerdefinierte Startvorlage angegeben haben, generiert das System automatisch eine Startvorlage, die Sie nicht manuell ändern können. Das manuelle Ändern dieser automatisch generierten Startvorlage kann zu Fehlern führen.

 **Ohne Startvorlage** 

 `eksctl` erstellt eine standardmäßige Amazon-EC2-Startvorlage in Ihrem Konto und stellt die Knotengruppe mithilfe einer Startvorlage bereit, die basierend auf den von Ihnen angegebenen Optionen erstellt wird. Bevor Sie einen Wert für `--node-type` festlegen, siehe [Auswahl eines optimalen Amazon-EC2-Knoten-Instance-Typs](choosing-instance-type.md).

Ersetzen Sie *ami-family* durch ein zulässiges Schlüsselwort. Weitere Informationen finden Sie unter [Einrichtung der Knoten-AMI-Familie](https://eksctl.io/usage/custom-ami-support/#setting-the-node-ami-family) in der `eksctl`-Dokumentation. Ersetzen Sie *my-key* mit dem Namen Ihres Amazon-EC2-Schlüsselpaars oder öffentlichen Schlüssels. Dieser Schlüssel wird für den SSH-Zugriff zu Ihren Knoten verwendet, nachdem diese gestartet wurden.

**Anmerkung**  
Für Windows aktiviert dieser Befehl SSH nicht. Stattdessen wird das Amazon-EC2-Schlüsselpaar mit der Instance verknüpft. Außerdem ermöglicht dies eine RDP-Verbindung mit der Instance.

Wenn Sie noch kein Amazon-EC2-Schlüsselpaar haben, können Sie eines in der AWS-Managementkonsole erstellen. Informationen zu Linux finden Sie unter [Amazon-EC2-Schlüsselpaare und Linux-Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) im *Benutzerhandbuch von Amazon EC2*. Informationen zu Windows finden Sie unter [Amazon-EC2-Schlüsselpaare und Windows-Instances](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html) im *Benutzerhandbuch von Amazon EC2*.

Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:
+ Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.
+ Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 EC2-Instance-Metadaten-Service (IMDS), z. B. zum Abrufen der aktuellen Region. AWS 

Weitere Informationen finden Sie unter [Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

Wenn Sie den Pod-Zugriff auf IMDS blockieren möchten, fügen Sie die `--disable-pod-imds`-Option dem folgenden Befehl hinzu.

```
eksctl create nodegroup \
  --cluster my-cluster \
  --region region-code \
  --name my-mng \
  --node-ami-family ami-family \
  --node-type m5.large \
  --nodes 3 \
  --nodes-min 2 \
  --nodes-max 4 \
  --ssh-access \
  --ssh-public-key my-key
```

Ihre Instances können Pods optional eine deutlich höhere Anzahl von IP-Adressen zuweisen, Pods aus einem anderen CIDR-Block als der Instance IP-Adressen zuweisen und in einem Cluster ohne Internetzugang bereitgestellt werden. Weitere Informationen dazu finden Sie unter [Zuweisung weiterer IP-Adressen mit Präfixen zu Amazon-EKS-Knoten](cni-increase-ip-addresses.md), [Bereitstellung von Pods in alternativen Subnetzen mit benutzerdefiniertem Netzwerk](cni-custom-network.md) und [Bereitstellung privater Cluster mit eingeschränktem Internetzugang](private-clusters.md) für weitere Optionen, die dem vorherigen Befehl hinzugefügt werden.

Verwaltete Knotengruppen berechnen und wenden einen einzelnen Wert für die maximale Anzahl von Pods an, die auf jedem Knoten Ihrer Knotengruppe ausgeführt werden können, basierend auf dem Instance-Typ. Wenn Sie eine Knotengruppe mit unterschiedlichen Instance-Typen erstellen, wird der kleinste Wert, der für alle Instance-Typen berechnet wird, als die maximale Anzahl von Pods angewendet, die für jeden Instance-Typ in der Knotengruppe ausgeführt werden können. Verwaltete Knotengruppen berechnen den Wert mithilfe des Skripts, auf das in den von  verwiesen wird.

 **Mit einer Startvorlage** 

Die Startvorlage muss bereits vorhanden sein und die in den [Grundlagen der Startvorlagenkonfiguration](launch-templates.md#launch-template-basics) angegebenen Anforderungen erfüllen. Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:
+ Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.
+ Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 EC2-Instance-Metadaten-Service (IMDS), z. B. zum Abrufen der aktuellen Region. AWS 

Weitere Informationen finden Sie unter [Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

Wenn Sie den Pod-Zugriff auf IMDS blockieren möchten, geben Sie die erforderlichen Einstellungen in der Startvorlage an.

1. Kopieren Sie den folgenden Inhalt auf Ihr Gerät. Ersetzen Sie die Beispielwerte und führen Sie dann den modifizierten Befehl aus, um die Datei zu erstellen. `eks-nodegroup.yaml` Mehrere Einstellungen, die Sie bei der Bereitstellung ohne Startvorlage angeben, werden in die Startvorlage verschoben. Wenn Sie keine `version` angeben, wird die Standardversion verwendet.

   ```
   cat >eks-nodegroup.yaml <<EOF
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   metadata:
     name: my-cluster
     region: region-code
   managedNodeGroups:
   - name: my-mng
     launchTemplate:
       id: lt-id
       version: "1"
   EOF
   ```

   Eine vollständige Liste der `eksctl` Konfigurationsdateieinstellungen finden Sie unter [Konfigurationsdateischema](https://eksctl.io/usage/schema/) in der `eksctl` Dokumentation. Ihre Instances können Pods optional eine deutlich höhere Anzahl von IP-Adressen zuweisen, Pods IP-Adressen aus einem anderen CIDR-Block als dem der Instance zuweisen und in einem Cluster ohne ausgehenden Internetzugang bereitgestellt werden. Weitere Informationen dazu finden Sie unter [Zuweisung weiterer IP-Adressen mit Präfixen zu Amazon-EKS-Knoten](cni-increase-ip-addresses.md), [Bereitstellung von Pods in alternativen Subnetzen mit benutzerdefiniertem Netzwerk](cni-custom-network.md) und [Bereitstellung privater Cluster mit eingeschränktem Internetzugang](private-clusters.md) für zusätzliche Optionen, die der Konfigurationsdatei hinzugefügt werden.

   Wenn Sie in Ihrer Startvorlage keine AMI-ID angegeben haben, berechnet „verwaltete Knotengruppen“ einen einzelnen Wert für die maximale Anzahl von Pods, die auf jedem Knoten Ihrer Knotengruppe ausgeführt werden können, basierend auf Instance-Typ. Wenn Sie eine Knotengruppe mit unterschiedlichen Instance-Typen erstellen, wird der kleinste Wert, der für alle Instance-Typen berechnet wird, als die maximale Anzahl von Pods angewendet, die für jeden Instance-Typ in der Knotengruppe ausgeführt werden können. Verwaltete Knotengruppen berechnen den Wert mithilfe des Skripts, auf das in den von  verwiesen wird.

   Wenn Sie eine AMI-ID in Ihrer Startvorlage angegeben haben, geben Sie die maximale Anzahl von Pods an, die auf jedem Knoten Ihrer Knotengruppe ausgeführt werden können, wenn Sie [Benutzerdefinierte Netzwerke](cni-custom-network.md) verwenden oder [die Anzahl der Ihrer Instance zugewiesenen IP-Adressen erhöhen möchten](cni-increase-ip-addresses.md). Weitere Informationen finden Sie unter .

1. Stellen Sie die Knotengruppe mit dem folgenden Befehl bereit.

   ```
   eksctl create nodegroup --config-file eks-nodegroup.yaml
   ```

## AWS-Managementkonsole
<a name="console_create_managed_nodegroup"></a>

 **Verwaltete Knotengruppe mithilfe von AWS-Managementkonsole erstellen ** 

1. Warten Sie, bis der Status des Clusters als `ACTIVE` angezeigt wird. Sie können keine verwaltete Knotengruppe für einen Cluster erstellen, der noch nicht `ACTIVE` ist.

1. Öffnen Sie die [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

1. Wählen Sie den Namen des Clusters aus, in dem Sie eine verwaltete Knotengruppe erstellen möchten.

1. Wählen Sie die Registerkarte **Compute** (Datenverarbeitung) aus.

1. Wählen Sie **Add Node Group** (Knotengruppe hinzufügen) aus.

1. Geben Sie auf der Seite **Configure node group (Knotengruppe konfigurieren)** die Parameter entsprechend aus, und wählen Sie dann **Next (Weiter)**.
   +  **Name** – Geben Sie einen eindeutigen Namen für die verwaltete Knotengruppe ein. Der Name der Knotengruppe darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten.
   +  **Node IAM role** (Knoten-IAM-Rolle) – Wählen Sie die Knoten-Instance-Rolle aus, die mit Ihrer Knotengruppe verwendet werden soll. Weitere Informationen finden Sie unter [Amazon-EKS-Knoten-IAM-Rolle](create-node-role.md).
**Wichtig**  
Sie können nicht dieselbe Rolle verwenden, die zum Erstellen von Clustern verwendet wurde.
Es wird empfohlen, eine Rolle zu verwenden, die derzeit nicht von einer selbstverwalteten Knotengruppe genutzt wird. Andernfalls planen Sie die Verwendung mit einer neuen selbstverwalteten Knotengruppe. Weitere Informationen finden Sie unter [Verwaltete Knotengruppe aus Ihrem Cluster löschen](delete-managed-node-group.md).
   +  **Startvorlage verwenden** – (Optional) Wählen Sie aus, ob Sie eine bestehende Startvorlage verwenden möchten. Wählen Sie einen **Namen für die Startvorlage** aus. Wählen Sie dann eine **Launch template version** (Startvorlagenversion) aus. Wenn Sie keine Version auswählen, verwendet Amazon EKS die Standardversion der Vorlage. Startvorlagen ermöglichen eine stärkere Anpassung Ihrer Knotengruppe, z. B. die Bereitstellung eines benutzerdefinierten AMI, die Zuordnung einer deutlich höheren Anzahl von IP-Adressen zu Pods, die Zuordnung von IP-Adressen zu Pods aus einem anderen CIDR-Block als dem der Instance und die Bereitstellung von Knoten in einem Cluster ohne ausgehenden Internetzugang. Weitere Informationen finden Sie unter [Zuweisung weiterer IP-Adressen mit Präfixen zu Amazon-EKS-Knoten](cni-increase-ip-addresses.md), [Bereitstellung von Pods in alternativen Subnetzen mit benutzerdefiniertem Netzwerk](cni-custom-network.md) und [Bereitstellung privater Cluster mit eingeschränktem Internetzugang](private-clusters.md).

     Die Startvorlage muss die Anforderungen unter [Verwaltete Knoten mit Startvorlagen anpassen](launch-templates.md) erfüllen Wenn Sie keine eigene Startvorlage verwenden, erstellt die Amazon-EKS-API eine standardmäßige Amazon-EC2-Startvorlage in Ihrem Konto und stellt die Knotengruppe mithilfe der Standard-Startvorlage bereit.

     Wenn Sie [IAM-Rollen für Dienstkonten](iam-roles-for-service-accounts.md) implementieren, die erforderlichen Berechtigungen direkt jedem Pod zuweisen, der Zugriff auf AWS Dienste benötigt, und keine Pods in Ihrem Cluster aus anderen Gründen Zugriff auf IMDS benötigen, z. B. zum Abrufen der aktuellen AWS Region, können Sie den Zugriff auf IMDS auch für Pods deaktivieren, die kein Host-Netzwerk in einer Startvorlage verwenden. Weitere Informationen finden Sie unter [Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).
   +  **Kubernetes labels** – (Optional) Sie können Kubernetes-Labels auf die Knoten in Ihrer verwalteten Knotengruppe anwenden.
   +  **Kubernetes-Taints** – (Optional) Sie können Kubernetes-Taints auf die Knoten in Ihrer verwalteten Knotengruppe anwenden. Die verfügbaren Optionen im Menü **Effect** (Effekt) sind ` NoSchedule `, ` NoExecute ` und ` PreferNoSchedule `. Weitere Informationen finden Sie unter [Anleitung: Verhindern, dass Pods auf bestimmten Knoten geplant werden](node-taints-managed-node-groups.md).
   +  **Tags** – (Optional) Sie können wählen, ob Sie Ihre mit Amazon EKS verwaltete Knotengruppe taggen möchten. Diese Tags werden nicht an andere Ressourcen in der Knotengruppe, z. B. Auto-Scaling-Gruppen oder Instances, bekannt gegeben. Weitere Informationen finden Sie unter [Organisation von Amazon-EKS-Ressourcen mit Tags](eks-using-tags.md).

1. Geben Sie auf der Seite **Set compute configuration (Datenverarbeitung-Konfiguration einrichten)** die Parameter entsprechend ein, und wählen Sie dann **Next (Weiter)**.
   +  **AMI-Typ** – Wählen Sie einen AMI-Typ aus. Wenn Sie Arm-Instances bereitstellen, sollten Sie AMIs vor der Bereitstellung unbedingt die Überlegungen unter [Amazon EKS-optimiertes Arm Amazon Linux](eks-optimized-ami.md#arm-ami) lesen.

     Wenn Sie auf der vorherigen Seite eine Startvorlage angegeben haben und in der Startvorlage ein AMI angegeben haben, können Sie keinen Wert auswählen. Der Wert aus der Vorlage wird angezeigt. Das in der Vorlage angegebene AMI muss die Anforderungen unter [Angabe eines AMI](launch-templates.md#launch-template-custom-ami) erfüllen.
   +  **Capacity type** (Kapazitätstyp) — Wählen Sie einen Kapazitätstyp aus. Weitere Informationen zur Auswahl eines Kapazitätstyps finden Sie unter [Kapazitätstypen für verwaltete Knotengruppen](managed-node-groups.md#managed-node-group-capacity-types). Es ist nicht möglich, verschiedene Kapazitätstypen innerhalb derselben Knotengruppe zu mischen. Wenn Sie beide Kapazitätstypen verwenden möchten, erstellen Sie separate Knotengruppen mit jeweils eigenen Kapazitäts- und Instance-Typen. Informationen [ GPUs zur Bereitstellung und Skalierung von GPU-beschleunigten Worker-Knoten finden Sie unter Für verwaltete Knotengruppen reservieren](https://docs.aws.amazon.com/eks/latest/userguide/capacity-blocks-mng.html).
   +  **Instance-Typen**- Standardmäßig wird ein oder mehrere Instance-Typen angegeben. Um einen Standard-Instance-Typ zu entfernen, wählen Sie `X` auf der rechten Seite des Instance-Typs. Wählen Sie den Instance-Typ aus, der in der verwalteten Knotengruppe verwendet werden soll. Weitere Informationen finden Sie unter [Auswahl eines optimalen Amazon-EC2-Knoten-Instance-Typs](choosing-instance-type.md).

     Die Konsole zeigt eine Reihe von häufig verwendeten Instance-Typen an. Wenn Sie eine verwaltete Knotengruppe mit einem Instanztyp erstellen müssen, der nicht angezeigt wird`eksctl`, verwenden Sie die AWS CLI oder ein SDK AWS CloudFormation, um die Knotengruppe zu erstellen. Wenn Sie auf der vorherigen Seite eine Startvorlage angegeben haben, können Sie keinen Wert auswählen, da der Instance-Typ in der Startvorlage angegeben werden muss. Der Wert aus der Startvorlage wird angezeigt. Wenn Sie die Option**Spot-Instances**für**Capacity type (Kapazitätstyp)**Wir empfehlen Ihnen, mehrere Instance-Typen anzugeben, um die Verfügbarkeit zu verbessern.
   +  **Datenträgergröße** – Geben Sie die Datenträgergröße (in GiB) ein, die für das Root-Volume des Knotens verwendet werden soll.

     Wenn Sie auf der vorherigen Seite eine Startvorlage angegeben haben, können Sie keinen Wert auswählen, da dieser in der Startvorlage angegeben werden muss.
   +  **Desired size** (Gewünschte Größe) – Geben Sie die aktuelle Anzahl von Knoten an, die die verwaltete Knotengruppe beim Start beibehalten soll.
**Anmerkung**  
Amazon EKS skaliert Ihre Knotengruppe nicht automatisch nach oben oder unten. Sie können jedoch den Kubernetes Cluster Autoscaler so konfigurieren, dass er dies für Sie übernimmt. Weitere Informationen finden Sie unter [Cluster Autoscaler on](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md). AWS
   +  **Minimum size** (Mindestgröße) – Geben Sie die Mindestanzahl von Knoten an, auf die die verwaltete Knotengruppe skaliert werden kann.
   +  **Maximum size** (Maximale Größe) – Geben Sie die maximale Anzahl von Knoten an, auf die die verwaltete Knotengruppe skaliert werden kann.
   +  **Konfiguration der Knotengruppe aktualisieren**— (Optional) Sie können die Anzahl oder den Prozentsatz der Knoten auswählen, die parallel aktualisiert werden sollen. Diese Knoten werden während der Aktualisierung nicht verfügbar sein. Für**Maximal nicht verfügbar**Wählen Sie eine der folgenden Optionen und geben Sie einen**Value**:
     +  **Zahl** – Wählen und geben Sie die Anzahl der Knoten in Ihrer Knotengruppe an, die parallel aktualisiert werden können.
     +  **Prozentsatz** – Wählen und geben Sie den Prozentsatz der Knoten in der Knotengruppe an, die parallel aktualisiert werden können. Dies ist nützlich, wenn Sie eine große Anzahl von Knoten in Ihrer Knotengruppe haben.
   +  **Konfiguration der automatischen Knotenreparatur** – (Optional) Wenn Sie das Kontrollkästchen **Automatische Knotenreparatur aktivieren** aktivieren, ersetzt Amazon EKS automatisch Knoten, wenn erkannte Probleme auftreten. Weitere Informationen finden Sie unter [Erkennen Sie Probleme mit dem Knotenstatus und aktivieren Sie die automatische Knotenreparatur](node-health.md).

1. Füllen Sie auf der Seite **Specify Details** (Details angeben) die Parameter entsprechend aus, und klicken Sie dann auf **Next**.
   +  **Subnets** (Subnetze) – Wählen Sie die Subnetze aus, in die die verwalteten Knoten gestartet werden sollen.
**Wichtig**  
Wenn Sie eine zustandsbehaftete Anwendung über mehrere Availability Zones hinweg ausführen, die von Amazon-EBS-Volumes gesichert wird und den Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) verwendet, sollten Sie mehrere Knotengruppen konfigurieren, die jeweils für eine einzelne Availability Zone gelten. Außerdem sollten Sie das `--balance-similar-node-groups`-Feature aktivieren.
**Wichtig**  
Wenn Sie ein öffentliches Subnetz wählen und in Ihrem Cluster nur der öffentliche API-Server-Endpunkt aktiviert ist, muss das Subnetz `MapPublicIPOnLaunch` auf `true` eingestellt sein, damit die Instances erfolgreich einem Cluster zugeordnet werden können. Wenn das Subnetz am `eksctl` oder nach dem 26. März 2020 mithilfe der von [Amazon EKS bereitgestellten AWS CloudFormation Vorlagen](creating-a-vpc.md) erstellt wurde, ist diese Einstellung bereits auf gesetzt. `true` Wenn die Subnetze mit `eksctl` oder den AWS CloudFormation Vorlagen vor dem 26. März 2020 erstellt wurden, müssen Sie die Einstellung manuell ändern. Weitere Informationen finden Sie unter [Ändern des Attributs für die öffentliche IPv4 Adressierung für Ihr Subnetz](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip).
Wenn Sie eine Startvorlage verwenden und mehrere Netzwerkschnittstellen angeben, weist Amazon EC2 keine öffentliche `IPv4`-Adresse automatisch zu, selbst wenn `MapPublicIpOnLaunch` auf `true` festgelegt ist. Damit Knoten dem Cluster in diesem Szenario beitreten können, müssen Sie entweder den privaten API-Serverendpunkt des Clusters aktivieren oder Knoten in einem privaten Subnetz mit ausgehendem Internetzugriff starten, der über eine alternative Methode wie ein NAT-Gateway bereitgestellt wird. Weitere Informationen dazu finden Sie unter [Amazon-EC2-Instance-IP-Adressen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html) im *Amazon-EC2-Benutzerhandbuch*.
   +  **Konfigurieren des SSH-Zugriffs auf Knoten** (Optional). Mit der Aktivierung von SSH können Sie eine Verbindung zu Ihren Instances herstellen und Diagnoseinformationen erfassen, wenn Probleme auftreten. Wir empfehlen dringend, den Fernzugriff zu aktivieren, sobald Sie eine Knotengruppe erstellen. Sie können den Fernzugriff nicht mehr aktivieren, nachdem die Knotengruppe erstellt wurde.

     Wenn Sie eine Startvorlage verwenden möchten, wird diese Option nicht angezeigt. Um den Remotezugriff auf Ihre Knoten zu aktivieren, geben Sie in der Startvorlage ein Schlüsselpaar an und stellen Sie sicher, dass die richtige Schnittstelle für die Knoten in den Sicherheitsgruppen geöffnet ist, die Sie in der Startvorlage angeben. Weitere Informationen finden Sie unter [Benutzerdefinierte Sicherheitsgruppen](launch-templates.md#launch-template-security-groups).
**Anmerkung**  
Für Windows aktiviert dieser Befehl SSH nicht. Stattdessen wird das Amazon-EC2-Schlüsselpaar mit der Instance verknüpft. Außerdem ermöglicht dies eine RDP-Verbindung mit der Instance.
   + Für **SSH-Schlüsselpaar** (optional) wählen Sie einen Amazon-EC2-SSH-Schlüssel aus, der verwendet werden soll. Informationen zu Linux finden Sie unter [Amazon-EC2-Schlüsselpaare und Linux-Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) im *Benutzerhandbuch von Amazon EC2*. Informationen zu Windows finden Sie unter [Amazon-EC2-Schlüsselpaare und Windows-Instances](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html) im *Benutzerhandbuch von Amazon EC2*. Wenn Sie eine Startvorlage verwenden möchten, können Sie keine auswählen. Wenn ein Amazon EC2 EC2-SSH-Schlüssel für Knotengruppen bereitgestellt wird, die Bottlerocket verwenden AMIs, ist der administrative Container ebenfalls aktiviert. Weitere Informationen finden Sie unter [Administrator-Container](https://github.com/bottlerocket-os/bottlerocket#admin-container) auf GitHub.
   + Für **Zulassen des SSH-Remote-Zugriffs von**, wenn Sie den Zugriff auf bestimmte Instances beschränken möchten, wählen Sie die Sicherheitsgruppen aus, die diesen Instances zugeordnet sind. Wenn Sie keine bestimmten Sicherheitsgruppen auswählen, ist SSH-Zugriff von überall im Internet erlaubt (`0.0.0.0/0`).

1. Überprüfen Sie auf der Seite **Review and create (Überprüfen und Erstellen)** die Konfiguration der verwalteten Knoten, und wählen Sie **Create (Erstellen)**.

   Sollten Knoten nicht in den Cluster aufgenommen werden können, finden Sie weitere Informationen unter [Knoten können nicht mit dem Cluster verknüpft werden](troubleshooting.md#worker-node-fail) im Kapitel zur Fehlerbehebung.

1. Sehen Sie sich den Status Ihrer Knoten an und warten Sie, bis diese in den `Ready`-Status eintreten.

   ```
   kubectl get nodes --watch
   ```

1. (Nur GPU-Knoten) Wenn Sie einen GPU-Instance-Typ und ein für Amazon EKS optimiertes beschleunigtes AMI ausgewählt haben, müssen Sie das [NVIDIA-Geräte-Plug-In für Kubernetes](https://github.com/NVIDIA/k8s-device-plugin) als DaemonSet auf Ihrem Cluster anwenden. Ersetzen Sie es *vX.X.X* durch die gewünschte [s-device-pluginNVIDIA/K8-Version](https://github.com/NVIDIA/k8s-device-plugin/releases), bevor Sie den folgenden Befehl ausführen.

   ```
   kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml
   ```

## Kubernetes-Add-Ons installieren
<a name="_install_kubernetes_add_ons"></a>

Nachdem Sie nun über einen funktionierenden Amazon-EKS-Cluster mit Worker-Knoten verfügen, können Sie mit der Installation von Kubernetes-Add-Ons und -Anwendungen auf Ihrem Cluster beginnen. Die folgenden Dokumentationsthemen helfen Ihnen bei der Erweiterung der Funktionalität Ihres Clusters.
+ Der [IAM-Prinzipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal), der den Cluster erstellt hat, ist der einzige Prinzipal, der Aufrufe an den Kubernetes-API-Server mit `kubectl` oder AWS-Managementkonsole tätigen kann. Wenn Sie möchten, dass andere IAM-Prinzipale Zugriff auf Ihren Cluster haben, müssen Sie sie hinzufügen. Weitere Informationen erhalten Sie unter [Gewähren Sie IAM-Benutzern und -Rollen Zugriff auf Kubernetes APIs](grant-k8s-access.md) und [Erforderliche Berechtigungen](view-kubernetes-resources.md#view-kubernetes-resources-permissions).
+ Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:
  + Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.
  + Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 EC2-Instance-Metadaten-Service (IMDS), z. B. zum Abrufen der aktuellen Region. AWS 

  Weitere Informationen finden Sie unter [Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).
+ Konfigurieren Sie den Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md), um die Anzahl der Knoten in Ihren Knotengruppen automatisch anzupassen.
+ Stellen Sie eine [Beispielanwendung](sample-deployment.md) für Ihr Cluster bereit.
+  [Organisieren und überwachen Sie Cluster-Ressourcen](eks-managing.md) mit wichtigen Tools für die Verwaltung Ihres Clusters.

# Eine verwaltete Knotengruppe für Ihren Cluster aktualisieren
<a name="update-managed-node-group"></a>

Wenn Sie eine Aktualisierung der verwalteten Knotengruppe initiieren, aktualisiert Amazon EKS Ihre Knoten automatisch für Sie. Führen Sie die Schritte aus, die unter [Jede Phase der Knotenaktualisierungen verstehen](managed-node-update-behavior.md) aufgelistet sind. Wenn Sie ein Amazon-EKS-optimiertes AMI verwenden, wendet Amazon EKS automatisch die neuesten Sicherheits-Patches und Betriebssystem-Aktualisierungen auf Ihre Knoten als Teil der neuesten AMI-Versionsversion an.

Es gibt mehrere Szenarien, in denen Sie die Version oder Konfiguration Ihrer verwalteten Amazon-EKS-Knotengruppe aktualisieren:
+ Sie haben die Kubernetes-Version für Ihren Amazon-EKS-Cluster aktualisiert und möchten Ihre Arbeitsknoten so aktualisieren, dass sie dieselbe Kubernetes-Version verwenden.
+ Eine neue AMI-Version ist für Ihre verwaltete Knotengruppe verfügbar. Weitere Informationen zu AMI-Versionen finden Sie unter diesen Abschnitten:
  +  [Abrufen der Versionsinformationen zu Amazon-Linux-AMI](eks-linux-ami-versions.md) 
  +  [Erstellen Sie Knoten mit optimiertem Bottlerocket AMIs](eks-optimized-ami-bottlerocket.md) 
  +  [Abrufen der Windows-AMI-Versionsinformationen](eks-ami-versions-windows.md) 
+ Sie möchten die minimale, maximale oder gewünschte Anzahl der Instances in Ihrer verwalteten Knotengruppe anpassen.
+ Sie möchten Kubernetes-Labels hinzufügen oder aus den Instances in Ihrer verwalteten Knotengruppe entfernen.
+ Sie möchten Ihrer verwalteten Knotengruppe AWS Tags hinzufügen oder daraus entfernen.
+ Sie müssen eine neue Version einer Startvorlage mit Konfigurationsänderungen bereitstellen, z. B. ein aktualisiertes benutzerdefiniertes AMI.
+ Sie haben Version `1.9.0` oder höher des Amazon VPC CNI-Add-ons bereitgestellt, das Add-on für die Präfix-Delegierung aktiviert und möchten, dass neue AWS Nitro System-Instances in einer Knotengruppe eine deutlich höhere Anzahl von Pods unterstützen. Weitere Informationen finden Sie unter [Zuweisung weiterer IP-Adressen mit Präfixen zu Amazon-EKS-Knoten](cni-increase-ip-addresses.md).
+ Sie haben die IP-Präfix-Delegierung für Windows-Knoten aktiviert und möchten, dass neue AWS Nitro System-Instances in einer Knotengruppe eine deutlich höhere Anzahl von Pods unterstützen. Weitere Informationen finden Sie unter [Zuweisung weiterer IP-Adressen mit Präfixen zu Amazon-EKS-Knoten](cni-increase-ip-addresses.md).

Wenn es eine neuere AMI-Version für die Kubernetes-Version Ihrer verwalteten Knotengruppe gibt als die, welche Ihre Knotengruppe derzeit ausführt, können Sie sie aktualisieren, um diese neue AMI-Version zu verwenden. Wenn Ihr Cluster eine neuere Kubernetes-Version als Ihre Knotengruppe ausführt, können Sie die Knotengruppe so aktualisieren, dass sie die neueste AMI-Version verwendet, welche der Kubernetes-Version Ihres Clusters entspricht.

Wenn ein Knoten in einer verwalteten Knotengruppe aufgrund eines Skalierungsvorgangs oder Aktualisierung beendet wird, werden die Pods in diesem Knoten zuerst geleert. Weitere Informationen finden Sie unter [Alle Phasen der Knotenaktualisierung verstehen](managed-node-update-behavior.md).

## Aktualisieren einer Knotengruppenversion
<a name="mng-update"></a>

Sie können eine Knotengruppen-Version mit einer der folgenden Methoden aktualisieren:
+  [`eksctl`](#eksctl_update_managed_nodegroup) 
+  [AWS-Managementkonsole](#console_update_managed_nodegroup) 

Die Version, auf die Sie aktualisieren, darf nicht höher sein als die Version der Steuerebene.

## `eksctl`
<a name="eksctl_update_managed_nodegroup"></a>

 **Aktualisierung einer verwalteten Knotengruppe mithilfe von `eksctl`** 

Aktualisieren Sie eine verwaltete Knotengruppe mit dem folgenden Befehl auf die neueste AMI-Version derselben Kubernetes-Version, die derzeit auf den Knoten bereitgestellt wird. Ersetzen Sie jede *example value* durch Ihre eigenen Werte.

```
eksctl upgrade nodegroup \
  --name=node-group-name \
  --cluster=my-cluster \
  --region=region-code
```

**Anmerkung**  
Wenn Sie eine Knotengruppe, die mit einer Startvorlage bereitgestellt wurde, auf eine neue Version der Startvorlage aktualisieren, fügen Sie `--launch-template-version version-number ` dem vorangehenden Befehl hinzu. Die Startvorlage muss die unter [Anpassen verwalteter Knoten mit Startvorlagen](launch-templates.md) beschriebenen Anforderungen erfüllen. Wenn die Startvorlage eine benutzerdefinierte AMI enthält, muss die AMI die Anforderungen unter [Angabe einer AMI](launch-templates.md#launch-template-custom-ami) erfüllen. Wenn Sie Ihre Knotengruppe auf eine neuere Version Ihrer Startvorlage aktualisieren, wird jeder Knoten wiederverwertet, um mit der neuen Konfiguration der angegebenen Startvorlagenversion übereinzustimmen.

Sie können eine Knotengruppe, die ohne eine Startvorlage bereitgestellt wird, nicht direkt auf eine neue Startvorlagenversion aktualisieren. Stattdessen müssen Sie mithilfe der Startvorlage eine neue Knotengruppe bereitstellen, um die Knotengruppe auf eine neue Version der Startvorlage zu aktualisieren.

Sie können eine Knotengruppe auf dieselbe Version aktualisieren wie die Kubernetes-Version der Steuerebene. Wenn Sie beispielsweise über einen Cluster mit Kubernetes `1.35` verfügen, können Sie Knoten, auf denen derzeit Kubernetes `1.34` ausgeführt wird, mit dem folgenden Befehl auf Version `1.35` aktualisieren.

```
eksctl upgrade nodegroup \
  --name=node-group-name \
  --cluster=my-cluster \
  --region=region-code \
  --kubernetes-version=1.35
```

## AWS-Managementkonsole
<a name="console_update_managed_nodegroup"></a>

 **Aktualisierung einer verwalteten Knotengruppe mithilfe von AWS-Managementkonsole ** 

1. Öffnen Sie die [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

1. Wählen Sie den Cluster aus, der die zu aktualisierende Knotengruppe enthält.

1. Wenn mindestens eine Knotengruppe über ein verfügbares Update verfügt, wird oben auf der Seite ein Feld angezeigt, in dem Sie über das verfügbare Update informiert werden. Wenn Sie die Registerkarte **Datenverarbeitung** wählen, finden Sie den Eintrag **Jetzt aktualisieren** in der Spalte **AMI-Vorversion** in der Tabelle **Knotengruppen** für die Knotengruppe, für die eine Aktualisierung verfügbar ist. Um die Knotengruppe zu aktualisieren, wählen Sie **Update now** (Jetzt aktualisieren).

   Es wird keine Benachrichtigung für Knotengruppen angezeigt, die mit einem benutzerdefinierten AMI bereitgestellt wurden. Wenn Ihre Knoten mit einem benutzerdefinierten AMI bereitgestellt werden, führen Sie die folgenden Schritte aus, um ein neues aktualisiertes benutzerdefiniertes AMI bereitzustellen.

   1. Erstellen Sie eine neue Version Ihres AMI.

   1. Erstellen Sie eine neue Version der Startvorlage mit der neuen AMI-ID.

   1. Aktualisieren Sie die Knoten auf die neue Version der Startvorlage.

1. Aktivieren oder deaktivieren Sie im Dialogfeld **Update node group version** (Knotengruppenversion aktualisieren) die folgenden Optionen:
   +  **Update node group version** (Knotengruppenversion aktualisieren) – Diese Option ist nicht verfügbar, wenn Sie ein benutzerdefiniertes AMI bereitgestellt haben oder Ihr Amazon EKS-optimiertes AMI derzeit über die neueste Version für Ihren Cluster verfügt.
   +  **Change launch template version** (Startvorlagenversion ändern) – Diese Option ist nicht verfügbar, wenn die Knotengruppe ohne eine benutzerdefinierte Startvorlage bereitgestellt wird. Sie können die Version der Startvorlage nur für eine Knotengruppe aktualisieren, die mit einer benutzerdefinierten Startvorlage bereitgestellt wurde. Wählen Sie die **Launch template version** (Startvorlagenversion) aus, auf die Sie die Knotengruppe aktualisieren möchten. Wenn Ihre Knotengruppe mit einem benutzerdefinierten AMI konfiguriert ist, muss die ausgewählte Version auch ein AMI angeben. Wenn Sie ein Upgrade auf eine neuere Version Ihrer Startvorlage durchführen, wird jeder Knoten wiederverwertet, damit er der neuen Konfiguration der angegebenen Startvorlagenversion entspricht.

1. Wählen Sie für **Update strategy** (Aktualisierungsstrategie) eine der folgenden Optionen aus:
   +  **Fortlaufende Aktualisierung** – Diese Option berücksichtigt die Budgets für die Pod-Unterbrechung Ihres Clusters. Aktualisierungen schlagen fehl, wenn ein Problem mit einem Budget für Pod-Unterbrechung auftritt, das dazu führt, dass Amazon EKS die Pods, die auf dieser Knotengruppe ausgeführt werden, nicht ordnungsgemäß entleert werden kann.
   +  **Aktualisierung erzwingen** – Bei dieser Option werden Budgets für Pod-Unterbrechungen nicht berücksichtigt. Aktualisierungen erfolgen unabhängig von Problemen mit Budgets für Pod-Unterbrechung, indem Knoten-Neustarts erzwungen werden.

1. Wählen Sie **Aktualisieren** aus.

## Bearbeiten einer Knotengruppenkonfiguration
<a name="mng-edit"></a>

Sie können einige Konfigurationen einer verwalteten Knotengruppe ändern.

1. Öffnen Sie die [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

1. Wählen Sie den Cluster aus, der die zu bearbeitende Knotengruppe enthält.

1. Wählen Sie die Registerkarte **Compute** (Datenverarbeitung) aus.

1. Wählen Sie die zu bearbeitende Knotengruppe aus und wählen Sie dann **Edit** (Bearbeiten).

1. (Optional) Gehen Sie auf der Seite **Edit node group** (Knotengruppe bearbeiten) wie folgt vor:

   1. Bearbeiten Sie die **Node group scaling configuration** (Skalierungskonfiguration der Knotengruppe).
      +  **Desired size** (Gewünschte Größe) – Geben Sie die aktuelle Anzahl von Knoten an, die die verwaltete Knotengruppe beibehalten soll.
      +  **Minimum size** (Mindestgröße) – Geben Sie die Mindestanzahl von Knoten an, auf die die verwaltete Knotengruppe skaliert werden kann.
      +  **Maximum size** (Maximale Größe) – Geben Sie die maximale Anzahl von Knoten an, auf die die verwaltete Knotengruppe skaliert werden kann. Die maximale Anzahl von Knoten, die in einer Knotengruppe unterstützt werden, finden Sie unter [Service Quotas für Amazon EKS und Fargate anzeigen und verwalten](service-quotas.md).

   1. (Optional) Fügen Sie den Knoten in Ihrer Knotengruppe **Kubernetes-Labels** hinzu oder entfernen Sie sie. Die hier gezeigten Labels sind nur die Labels, die Sie mit Amazon EKS angewendet haben. Andere Labels können auf Ihren Knoten vorhanden sein, die hier nicht angezeigt werden.

   1. (Optional) Fügen Sie den Knoten in Ihrer Knotengruppe **Kubernetes-Taints** hinzu oder entfernen Sie sie. Hinzugefügte Färbungen können die Wirkung von ` NoSchedule `,` NoExecute `, oder` PreferNoSchedule ` haben. Weitere Informationen finden Sie unter [Anleitung: Verhindern, dass Pods auf bestimmten Knoten geplant werden](node-taints-managed-node-groups.md).

   1. (Optional) Fügen Sie **Tags** zu Ihrer Knotengruppenressource hinzu oder entfernen Sie sie. Diese Markierungen werden nur auf die Amazon-EKS-Knotengruppe angewendet. Knotengruppen-Tags werden nicht auf andere Ressourcen übertragen, die der Knotengruppe zugeordnet sind, z. B. die Amazon-EC2-Instances oder Subnetze.

   1. (Optional) Bearbeiten Sie **Konfiguration der Knotengruppe aktualisieren**. Wählen Sie entweder **Zahl** oder **Prozentanteil** aus.
      +  **Zahl** – Wählen und geben Sie die Anzahl der Knoten in Ihrer Knotengruppe an, die parallel aktualisiert werden können. Diese Knoten sind während der Aktualisierung nicht verfügbar.
      +  **Prozentsatz** – Wählen und geben Sie den Prozentsatz der Knoten in der Knotengruppe an, die parallel aktualisiert werden können. Diese Knoten sind während der Aktualisierung nicht verfügbar. Dies ist nützlich, wenn Sie viele Knoten in Ihrer Knotengruppe haben.

   1. Wenn Sie mit der Bearbeitung fertig sind, wählen Sie **Änderungen speichern** aus.

**Wichtig**  
Bei der Aktualisierung der Knotengruppenkonfiguration werden bei der Änderung der [https://docs.aws.amazon.com/eks/latest/APIReference/API_NodegroupScalingConfig.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_NodegroupScalingConfig.html)nicht die Budgets für Pod-Unterbrechungen berücksichtigt (PDBs). Im Gegensatz zum Prozess zum [Aktualisieren von Knotengruppen](managed-node-update-behavior.md) (bei dem PDBs während der Upgrade-Phase Knoten leer und respektiert werden) führt die Aktualisierung der Skalierungskonfiguration dazu, dass Knoten sofort durch einen Auto Scaling Scale-Down-Aufruf (ASG) beendet werden. Dies geschieht ohne weitere Überlegungen PDBs, unabhängig von der Zielgröße, auf die Sie herunterskalieren. Das heißt, wenn Sie die Anzahl einer `desiredSize` von Amazon EKS verwalteten Knotengruppe reduzieren, werden Pods entfernt, sobald die Knoten beendet werden, ohne dass sie berücksichtigt werden. PDBs

# Alle Phasen der Knotenaktualisierung verstehen
<a name="managed-node-update-behavior"></a>

Die Upgrade-Strategie für verwaltete Amazon-EKS-Worker-Knoten umfasst vier verschiedene Phasen, die in den folgenden Abschnitten beschrieben werden.

## Einrichtungsphase
<a name="managed-node-update-set-up"></a>

Die Einrichtungsphase umfasst folgende Schritte:

1. Erstellt eine neue Amazon-EC2-Startvorlage für die Auto-Scaling-Gruppe, die Ihrer Knotengruppe zugeordnet ist. Die neue Version der Startvorlage verwendet das Ziel-AMI oder die vom Kunden bereitgestellte Startvorlagenversion für die Aktualisierung.

1. Die Auto-Scaling-Gruppe wird so aktualisiert, dass sie die neueste Startvorlage verwendet.

1. Es bestimmt die maximale Anzahl der parallel zu aktualisierenden Knoten mithilfe der `updateConfig`-Eigenschaft für die Knotengruppe. Der maximal nicht verfügbare Wert hat ein Kontingent von 100 Knoten. Der Standardwert beträgt einen Knoten. Weitere Informationen dazu finden Sie unter der Eigenschaft [updateConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateNodegroupConfig.html#API_UpdateNodegroupConfig_RequestSyntax) in der *Amazon-EKS-API-Referenz*.

## Aufskalierungsphase
<a name="managed-node-update-scale-up"></a>

Beim Upgrade der Knoten in einer verwalteten Knotengruppe werden die aktualisierten Knoten in derselben Availability Zone gestartet wie diejenigen, die aktualisiert werden. Um diese Platzierung zu garantieren, verwenden wir das Availability Zone Rebalancing von Amazon EC2. Weitere Informationen dazu finden Sie unter [Availability-Zone-Rebalancing](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-benefits.html#AutoScalingBehavior.InstanceUsage) im *Amazon-EC2-Auto-Scaling-Benutzerhandbuch*. Um diese Anforderung zu erfüllen, ist es möglich, dass wir bis zu zwei Instances pro Availability Zone in Ihrer verwalteten Knotengruppe starten.

Die Aufskalierungsphase umfasst folgende Schritte:

1. Es erhöht die maximale Größe und die gewünschte Größe der Auto-Scaling-Gruppe um den jeweils größeren Wert:
   + Bis zu doppelt so viele Availability Zones, in denen die Auto-Scaling-Gruppe bereitgestellt wird.
   + Die maximale Nichtverfügbarkeit der Aktualisierung.

     Wenn Ihre Knotengruppe beispielsweise über fünf Availability Zones und `maxUnavailable` als eine verfügt, kann der Upgrade-Prozess maximal zehn Knoten starten. Wenn jedoch `maxUnavailable` 20 ist (oder etwas größer als 10, würde der Prozess 20 neue Knoten starten).

1. Nach dem Skalieren der Auto-Scaling-Gruppe wird überprüft, ob die Knoten, die die neueste Konfiguration verwenden, in der Knotengruppe vorhanden sind. Dieser Schritt ist nur erfolgreich, wenn er diese Kriterien erfüllt:
   + Mindestens ein neuer Knoten wird in jeder Availability Zone gestartet, in der der Knoten existiert.
   + Jeder neue Knoten sollte im `Ready`-Zustand sein.
   + Neue Knoten sollten Amazon-EKS-Labels angewandt haben.

     Dies sind die von Amazon EKS auf die Worker-Knoten in einer regulären Knotengruppe angewandten Labels:
     +  `eks.amazonaws.com/nodegroup-image=$amiName` 
     +  `eks.amazonaws.com/nodegroup=$nodeGroupName` 

     Dies sind die von Amazon EKS angewendeten Labels auf den Worker-Knoten in einer benutzerdefinierten Startvorlage oder AMI-Knotengruppe:
     +  `eks.amazonaws.com/nodegroup-image=$amiName` 
     +  `eks.amazonaws.com/nodegroup=$nodeGroupName` 
     +  `eks.amazonaws.com/sourceLaunchTemplateId=$launchTemplateId` 
     +  `eks.amazonaws.com/sourceLaunchTemplateVersion=$launchTemplateVersion` 

1. Es markiert Knoten als nicht planbar, um die Planung neuer Pods zu vermeiden. Es kennzeichnet Knoten auch mit `node.kubernetes.io/exclude-from-external-load-balancers=true`, um die Knoten aus den Load Balancern zu entfernen, bevor die Knoten beendet werden.

Die folgenden sind bekannte Gründe, die zu einem `NodeCreationFailure`-Fehler in dieser Phase führen:

 **Nicht genügend Kapazität in der Availability Zone**   
Es besteht die Möglichkeit, dass die Availability Zone nicht über die Kapazität der angeforderten Instance-Typen verfügt. Es wird empfohlen, beim Erstellen einer verwalteten Knotengruppe mehrere Instance-Typen zu konfigurieren.

 **EC2-Instance-Limits in Ihrem Konto**   
Möglicherweise müssen Sie die Anzahl der Amazon-EC2-Instances erhöhen, die Ihr Konto gleichzeitig mit Service Quotas ausführen kann. Weitere Informationen dazu finden Sie unter [EC2-Service-Quotas](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html) im *Amazon-Elastic-Compute-Cloud-Benutzerhandbuch für Linux-Instances*.

 **Anwenderbezogene Benutzerdaten**   
Anwenderbezogene Benutzerdaten können manchmal den Bootstrap-Prozess stören. Dieses Szenario kann dazu führen, dass `kubelet` nicht auf dem Knoten startet oder Knoten nicht die erwarteten Amazon-EKS-Labels auf ihnen erhalten. Weitere Informationen finden Sie unter [Angeben eines AMI](launch-templates.md#launch-template-custom-ami).

 **Alle Änderungen, die dazu führen, dass ein Knoten fehlerhaft ist oder nicht bereit ist**   
Knotenfestplattendruck, Speicherdruck und ähnliche Bedingungen können dazu führen, dass ein Knoten nicht in den `Ready`-Zustand wechselt.

 **Jeder Knoten wird in der Regel innerhalb von 15 Minuten gebootet**   
Wenn ein Knoten länger als 15 Minuten zum Bootstrapping und Beitritt zum Cluster benötigt, kommt es zu einer Zeitüberschreitung des Upgrades. Dies ist die Gesamtlaufzeit für das Booten eines neuen Knotens, gemessen von der Zeit, in welcher der neue Knoten benötigt wird, bis zu seinem Beitritt zum Cluster. Bei der Aktualisierung einer verwalteten Knotengruppe beginnt der Zeitzähler zu laufen, sobald die Größe der Auto-Scaling-Gruppe zunimmt.

## Aktualisierungs-Phase
<a name="managed-node-update-upgrade"></a>

Die Aktualisierungsphase verläuft je nach *Aktualisierungsstrategie* auf zwei unterschiedliche Arten. Es gibt zwei Aktualisierungsstrategien: **Standard** und **Minimal**.

Wir empfehlen in den meisten Fällen die Standard-Strategie. Diese erstellt neue Knoten, bevor die alten beendet werden, sodass die verfügbare Kapazität während der Aktualisierungsphase erhalten bleibt. Diese Minimal-Strategie ist in Szenarien sinnvoll, in denen Sie hinsichtlich Ressourcen oder Kosten eingeschränkt sind, beispielsweise bei Hardware-Beschleunigern wie GPUs. Es werden die alten Knoten beendet, bevor neue erstellt werden, sodass die Gesamtkapazität niemals über die von Ihnen konfigurierte Menge hinausgeht.

Die *Standard*-Aktualisierungsstrategie umfasst folgende Schritte:

1. Die Anzahl der Knoten (gewünschte Anzahl) in der Auto-Scaling-Gruppe wird erhöht, wodurch die Knotengruppe zusätzliche Knoten erstellt.

1. Es wählt nach dem Zufallsprinzip einen Knoten aus, der aktualisiert werden muss, bis zum Maximum der für die Knotengruppe nicht verfügbar ist.

1. Es entleert die Pods vom Knoten. Wenn die Pods den Knoten nicht innerhalb von 15 Minuten verlassen und es kein Erzwingungs-Flag gibt, scheitert die Aktualisierungsphase mit einem `PodEvictionFailure`-Fehler. Für dieses Szenario können Sie das Erzwingungs-Flag mit der `update-nodegroup-version`-Anforderung anwenden, um die Pods zu löschen.

1. Der Knoten wird nach dem Entfernen jedes Pods gesperrt und wartet 60 Sekunden lang. Dies geschieht, damit der Service-Controller keine neuen Anfragen an diesen Knoten sendet und diesen Knoten aus seiner Liste der aktiven Knoten entfernt.

1. Es sendet eine Beendigungsanforderung an die Auto-Scaling-Gruppe für den abgesperrten Knoten.

1. Es wiederholt die vorherigen Aktualisierungsschritte, bis keine Knoten in der Knotengruppe mehr vorhanden sind, die mit der früheren Version der Startvorlage bereitgestellt wurden.

Die *Minimal*-Aktualisierungsstrategie umfasst folgende Schritte:

1. Zunächst werden alle Knoten der Knotengruppe gesperrt, sodass der Service-Controller keine neuen Anfragen an diese Knoten sendet.

1. Es wählt nach dem Zufallsprinzip einen Knoten aus, der aktualisiert werden muss, bis zum Maximum der für die Knotengruppe nicht verfügbar ist.

1. Es entleert die Pods aus den ausgewählten Knoten. Wenn die Pods den Knoten nicht innerhalb von 15 Minuten verlassen und es kein Erzwingungs-Flag gibt, scheitert die Aktualisierungsphase mit einem `PodEvictionFailure`-Fehler. Für dieses Szenario können Sie das Erzwingungs-Flag mit der `update-nodegroup-version`-Anforderung anwenden, um die Pods zu löschen.

1. Nachdem jeder Pod entfernt wurde und 60 Sekunden gewartet hat, sendet er eine Beendigungsanforderung an die Auto-Scaling-Gruppe für die ausgewählten Knoten. Die Auto-Scaling-Gruppe erstellt neue Knoten (entsprechend der Anzahl der ausgewählten Knoten), um die fehlende Kapazität zu ersetzen.

1. Es wiederholt die vorherigen Aktualisierungsschritte, bis keine Knoten in der Knotengruppe mehr vorhanden sind, die mit der früheren Version der Startvorlage bereitgestellt wurden.

### `PodEvictionFailure`-Fehler während der Aktualisierungsphase
<a name="_podevictionfailure_errors_during_the_upgrade_phase"></a>

Die folgenden sind bekannte Gründe, die zu einem `PodEvictionFailure`-Fehler in dieser Phase führen:

 **Aggressive PDB**   
Aggressive PDB ist auf dem Pod definiert oder es gibt mehrere PDBs, die auf denselben Pod zeigen.

 **Bereitstellung unterstützt alle Taints**   
Sobald jeder Pod entfernt wurde, wird erwartet, dass der Knoten leer ist, da der Knoten in den vorherigen Schritten [verunreinigt](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) ist. Wenn die Bereitstellung jedoch jeden Taint toleriert, ist der Knoten eher nicht leer, was zu einem Pod-Bereinigungsfehler führt.

## Abskalierungsphase
<a name="managed-node-update-scale-down"></a>

Die Abskalierungsphase verringert die maximale Größe der Auto-Scaling-Gruppe und die gewünschte Größe um eins, um zu den Werten zurückzukehren, bevor die Aktualisierung gestartet wurde.

Wenn der Upgrade-Workflow feststellt, dass der Cluster-Autoscaler die Knotengruppe während der Herunterskalierungsphase des Workflows skaliert, wird er sofort beendet, ohne die Knotengruppe wieder auf ihre ursprüngliche Größe zu bringen.

# Verwaltete Knoten mit Startvorlagen anpassen
<a name="launch-templates"></a>

Für ein Höchstmaß an Anpassung können Sie verwaltete Knoten mit Ihrer eigenen Startvorlage bereitstellen, die auf den Schritten auf dieser Seite basiert. Die Verwendung einer Startvorlage ermöglicht Funktionen wie das Bereitstellen von Bootstrap-Argumenten während der Bereitstellung eines Knotens (z. B. zusätzliche [Kubelet-Argumente](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/)), das Zuweisen von IP-Adressen zu Pods aus einem anderen CIDR-Block als der dem Knoten zugewiesenen IP-Adresse, das Bereitstellen Ihres eigenen benutzerdefinierten AMI für Knoten oder das Bereitstellen Ihres eigenen benutzerdefinierten CNI für Knoten.

Wenn Sie beim ersten Erstellen einer verwalteten Knotengruppe Ihre eigene Startvorlage angeben, haben Sie auch später mehr Flexibilität. Wenn Sie eine verwaltete Knotengruppe mit Ihrer eigenen Startvorlage bereitstellen, können Sie sie schrittweise mit einer anderen Version derselben Startvorlage aktualisieren. Wenn Sie Ihre Knotengruppe auf eine andere Version Ihrer Startvorlage aktualisieren, werden alle Knoten in der Gruppe wiederverwertet, damit sie der neuen Konfiguration der angegebenen Startvorlagenversion entsprechen.

Verwaltete Knotengruppen werden immer mit einer Startvorlage bereitgestellt, die mit der Amazon-EC2-Auto-Scaling-Gruppe verwendet werden soll. Wenn Sie keine Startvorlage bereitstellen, erstellt die Amazon-EKS-API automatisch eine mit Standardwerten in Ihrem Konto. Es wird jedoch nicht empfohlen, automatisch generierte Startvorlagen zu ändern. Außerdem können vorhandene Knotengruppen, die keine benutzerdefinierte Startvorlage verwenden, nicht direkt aktualisiert werden. Stattdessen müssen Sie eine neue Knotengruppe mit einer benutzerdefinierten Startvorlage erstellen.

## Grundlagen der Konfiguration der Vorlage starten
<a name="launch-template-basics"></a>

Sie können eine Amazon EC2 Auto Scaling Scaling-Startvorlage mit der AWS-Managementkonsole AWS CLI oder einem AWS SDK erstellen. Weitere Informationen finden Sie unter [Erstellen einer Startvorlage für eine Auto-Scaling-Gruppe](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) im *Amazon-EC2-Auto-Scaling-Benutzerhandbuch*. Einige der Einstellungen in einer Startvorlage ähneln den Einstellungen, die für die Konfiguration verwalteter Knoten verwendet werden. Beim Bereitstellen oder Aktualisieren einer Knotengruppe mit einer Startvorlage müssen einige Einstellungen entweder in der Knotengruppenkonfiguration oder in der Startvorlage angegeben werden. Geben Sie eine Einstellung nicht an beiden Stellen an. Wenn eine Einstellung vorhanden ist, wo sie nicht sollte, schlagen Vorgänge wie das Erstellen oder Aktualisieren einer Knotengruppe fehl.

In der folgenden Tabelle werden die Einstellungen aufgelistet, die in einer Startvorlage nicht zulässig sind. Es listet auch ähnliche Einstellungen auf, falls verfügbar, die in der Konfiguration der verwalteten Knotengruppe erforderlich sind. Die aufgelisteten Einstellungen sind die Einstellungen, die in der Konsole angezeigt werden. Sie haben möglicherweise ähnliche, aber unterschiedliche Namen in der AWS CLI und im SDK.


| Startvorlage - Verboten | Amazon-EKS-Knotengruppenkonfiguration | 
| --- | --- | 
|   **Subnetz** in **Netzwerkschnittstellen** (**Hinzufügen einer Netzwerkschnittstelle**)  |   **Subnets** (Subnetze) unter **Node group network configuration** (Netzwerkkonfiguration der Knotengruppe) auf der Seite **Specify networking** (Netzwerk angeben)  | 
|   **IAM-Instance-Profil** in **Erweiterte Details**   |   **Node IAM role** (Knoten-IAM-Rolle) unter **Node group configuration** (Knotengruppenkonfiguration) auf der Seite **Configure Node group** (Knotengruppe konfigurieren)  | 
|   **Verhalten beim Herunterfahren** und **Stop – Ruhezustand Verhalten** in **Erweiterte Details**. Standardeinstellung **Nicht in Startvorlage einschließen** für beide Einstellungen beibehalten.  |  Keine Entsprechung Amazon EKS muss den Instance-Lebenszyklus steuern, nicht die Auto-Scaling-Gruppe.  | 

In der folgenden Tabelle sind die unzulässigen Einstellungen in einer Konfiguration einer verwalteten Knotengruppe aufgeführt. Sie listet auch ähnliche Einstellungen auf, falls vorhanden, die in einer Startvorlage erforderlich sind. Die aufgelisteten Einstellungen sind die Einstellungen, die in der Konsole angezeigt werden. Sie haben möglicherweise ähnliche Namen in der AWS CLI und im SDK.


| Konfiguration der Amazon-EKS-Knotengruppe — Verboten | Startvorlage | 
| --- | --- | 
|  (Nur wenn Sie ein benutzerdefiniertes AMI in einer Startvorlage angegeben haben) **AMI type** (AMI-Typ) unter **Node Group compute configuration** (Computing-Konfiguration der Knotengruppe) auf der Seite **Set compute and scaling configuration** (Computing- und Skalierungskonfiguration festlegen) – Die Konsole zeigt **Specified in launch template** (In Startvorlage angegeben) und die angegebene AMI-ID an. Wenn **Anwendungs- und Betriebssystem-Images (Amazon Machine Image)** nicht in der Startvorlage kein AMI-Typ angegeben wurde, können Sie in der Knotengruppenkonfiguration ein AMI auswählen.  |   **Application and OS Images (Amazon Machine Image)** (Anwendungs- und Betriebssystem-Images (Amazon Machine Image)) unter **Inhalt der Startvorlage** – Sie müssen eine ID angeben, wenn Sie eine der folgenden Anforderungen haben: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/launch-templates.html)  | 
|   **Datenträgergröße** unter **Node Group compute configuration** (Computing-Konfiguration der Knotengruppe) auf der Seite **Set compute and scaling configuration** – Die Konsole zeigt **Specified in launch template** (In Startvorlage angegeben) an.  |   **Größe** unter **Speicher (Volumes)** (**Hinzufügen eines neuen Volumes**) enthalten. Sie müssen dies in der Startvorlage angeben.  | 
|   **SSH key pair** (SSH-Schlüsselpaar) unter **Node group configuration** (Knotengruppenkonfiguration) auf der Seite **Specify Networking** (Netzwerk angeben) – Die Konsole zeigt den in der Startvorlage angegebenen Schlüssel an oder **Not specified in launch template** (Nicht in der Startvorlage angegeben).  |   **Schlüsselpaarname** in **Schlüsselpaar (Login)**.  | 
|  Bei Verwendung einer Startvorlage können Sie keine Quell-Sicherheitsgruppen angeben, für die der Fernzugriff zulässig ist.  |   **Sicherheitsgruppen** unter **Netzwerkeinstellungen** für die Instance oder **Sicherheitsgruppen** unter **Netzwerkschnittstellen** (**Netzwerkschnittstelle hinzufügen**), aber nicht beides. Weitere Informationen finden Sie unter [Benutzerdefinierte Sicherheitsgruppen](#launch-template-security-groups).  | 

**Anmerkung**  
Wenn Sie eine Knotengruppe mithilfe einer Startvorlage bereitstellen, geben Sie in einer Startvorlage unter **Inhalt der Startvorlage** null oder einen **Instance-Typ** an. Alternativ können Sie 0 bis 20 Instance-Typen für **Instance-Typen** auf der Seite **Einstellen von Compute- und Skalierungskonfiguration** in der Konsole angeben. Oder Sie können dies mit anderen Tools tun, die die Amazon EKS API verwenden. Wenn Sie in einer Startvorlage einen Instance-Typ angeben und diese Startvorlage zum Bereitstellen Ihrer Knotengruppe verwenden, können Sie keine Instance-Typen in der Konsole oder mit anderen Tools angeben, welche die Amazon-EKS-API verwenden. Wenn Sie für eine Startvorlage, in der Konsole oder mit anderen Tools, welche die Amazon-EKS-API verwenden, keinen Instance-Typ angeben, wird der `t3.medium`-Instance-Typ verwendet. Wenn Ihre Knotengruppe den Spot-Kapazitätstyp verwendet, empfehlen wir, mehrere Instance-Typen über die Konsole anzugeben. Weitere Informationen finden Sie unter [Kapazitätstypen für verwaltete Knotengruppen](managed-node-groups.md#managed-node-group-capacity-types).
Wenn Container, die Sie für die Knotengruppe bereitstellen, den Instance-Metadaten-Service Version 2 verwenden, stellen Sie sicher, dass Sie die **Hop-Limits für Metadaten** auf `2` in Ihrer Startvorlage festsetzen. Weitere Informationen finden Sie unter [Instance-Metadaten und Benutzerdaten](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) im *Amazon-EC2-Benutzerhandbuch*.
Startvorlagen unterstützen das `InstanceRequirements`-Feature zur flexiblen Auswahl des Instance-Typs nicht.

## Markieren von Amazon-EC2-Instances
<a name="launch-template-tagging"></a>

Sie können das `TagSpecification`-Parameter einer Startvorlage verwenden, um anzugeben, welche Markierungen auf Amazon-EC2-Instances in Ihrer Knotengruppe angewendet werden sollen. Die IAM-Entität, die `CreateNodegroup` oder aufruft, `UpdateNodegroupVersion` APIs muss über Berechtigungen für `ec2:RunInstances` und verfügen`ec2:CreateTags`, und die Tags müssen der Startvorlage hinzugefügt werden.

## Benutzerdefinierte Sicherheitsgruppen
<a name="launch-template-security-groups"></a>

Sie können eine Startvorlage verwenden, um benutzerdefinierte Amazon-EC2-[Sicherheitsgruppen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html) anzugeben die auf Instances in Ihrer Knotengruppe angewendet werden. Dies kann entweder im Parameter für Sicherheitsgruppen auf Instance-Ebene oder als Teil der Konfigurationsparameter der Netzwerkschnittstelle sein. Sie können eine Instance nicht über eine Startvorlage starten, die Sicherheitsgruppen und eine Netzwerkschnittstelle angibt. Beachten Sie die folgenden Bedingungen, die für die Verwendung benutzerdefinierter Sicherheitsgruppen mit verwalteten Knotengruppen gelten:
+ Bei Verwendung von erlaubt Amazon EKS nur Startvorlagen mit einer einzigen Netzwerkschnittstellenspezifikation. AWS-Managementkonsole
+ Standardmäßig wendet Amazon EKS die [Cluster-Sicherheitsgruppe](sec-group-reqs.md) zu den Instances in Ihrer Knotengruppe hinzu, um die Kommunikation zwischen Knoten und der Steuerungsebene zu erleichtern. Wenn Sie benutzerdefinierte Sicherheitsgruppen in der Startvorlage mit einer der oben genannten Optionen angeben, fügt Amazon EKS die Cluster-Sicherheitsgruppe nicht hinzu. Sie müssen daher sicherstellen, dass die eingehenden und ausgehenden Regeln Ihrer Sicherheitsgruppen die Kommunikation mit dem Endpunkt Ihres Clusters ermöglichen. Wenn Ihre Sicherheitsgruppenregeln falsch sind, können die Worker-Knoten dem Cluster nicht beitreten. Weitere Informationen zu Sicherheitsgruppenregeln finden Sie unter [Anforderungen der Amazon-EKS-Sicherheitsgruppe für Cluster anzeigen](sec-group-reqs.md).
+ Wenn Sie SSH-Zugriff auf die Instances in Ihrer Knotengruppe benötigen, müssen Sie eine Sicherheitsgruppe einschließen, die diesen Zugriff zulässt.

## Amazon-EC2-Benutzerdaten
<a name="launch-template-user-data"></a>

Die Startvorlage enthält einen Abschnitt für benutzerdefinierte Benutzerdaten. In diesem Abschnitt können Sie die Konfigurationseinstellungen für Ihre Knotengruppe angeben, ohne manuell individuelle benutzerdefinierte Einstellungen erstellen zu müssen AMIs. Weitere Informationen zu den für Bottlerocket verfügbaren Einstellungen finden Sie unter [Benutzerdaten verwenden](https://github.com/bottlerocket-os/bottlerocket#using-user-data) am. GitHub

Sie können Amazon-EC2-Benutzerdaten in Ihrer Startvorlage mithilfe von`cloud-init`, wenn Sie Ihre Instances starten. Weitere Informationen dazu finden Sie in der [cloud-init-Dokumentation](https://cloudinit.readthedocs.io/en/latest/index.html). Ihre Benutzerdaten können verwendet werden, um allgemeine Konfigurationsvorgänge durchzuführen. Dieser Filter umfasst die folgenden Optionen:
+  [Einschließen von Benutzern oder Gruppen](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#including-users-and-groups) 
+  [Installieren von Paketen](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#install-arbitrary-packages) 

Amazon EC2 EC2-Benutzerdaten in Startvorlagen, die mit verwalteten Knotengruppen verwendet werden, müssen im [mehrteiligen MIME-Archivformat](https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive) für Amazon Linux AMIs und im TOML-Format für Bottlerocket vorliegen. AMIs Dies liegt daran, dass Ihre Benutzerdaten mit Amazon-EKS-Benutzerdaten zusammengeführt werden, die für Knoten erforderlich sind, um dem Cluster beizutreten. Geben Sie keine Befehle in Ihren Benutzerdaten an, die `kubelet` starten oder ändern. Dies wird als Teil der von Amazon EKS zusammengeführten Benutzerdaten durchgeführt. Bestimmte `kubelet`-Parameter, z. B. das Festlegen von Beschriftungen auf Knoten, können direkt über die API für verwaltete Knotengruppen konfiguriert werden.

**Anmerkung**  
Weitere Hinweise zur erweiterten `kubelet`-Anpassung, einschließlich des manuellen Startens oder Übergebens benutzerdefinierter Konfigurationsparameter, finden Sie unter [Angeben eines AMI](#launch-template-custom-ami). Wenn in einer Startvorlage eine benutzerdefinierte AMI-ID angegeben ist, führt Amazon EKS keine Benutzerdaten zusammen.

Die folgenden Details enthalten weitere Informationen zum Abschnitt Benutzerdaten.

 **Benutzerdaten von Amazon Linux 2**   
Sie können mehrere Benutzerdatenblöcke in einer einzelnen mehrteiligen MIME-Datei kombinieren. So können Sie beispielsweise einen Cloud-Boothook, der den Docker-Daemon konfiguriert, mit einem Benutzerdaten-Shell-Skript kombinieren, das ein benutzerdefiniertes Paket installiert. Eine mehrteilige MIME-Datei umfasst folgende Komponenten:  
+ Deklaration von Inhaltstyp und Teilgrenze – `Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="` 
+ Deklaration der MIME-Version – `MIME-Version: 1.0` 
+ Ein oder mehrere Benutzerdatenblöcke mit folgenden Komponenten:
  + Eröffnungsgrenze, die den Beginn eines Benutzerdatenblocks signalisiert – `--==MYBOUNDARY==` 
  + Die Inhaltstypdeklaration für den Block: `Content-Type: text/cloud-config; charset="us-ascii"`. Weitere Informationen zu Inhaltstypen finden Sie in der [Cloud-Init-Dokumentation](https://cloudinit.readthedocs.io/en/latest/topics/format.html).
  + Der Inhalt der Benutzerdaten (z. B. eine Liste von Shell-Befehlen oder `cloud-init`-Direktiven).
  + Abschlussgrenze, die das Ende der mehrteiligen MIME-Datei signalisiert: `--==MYBOUNDARY==--` 

  Im Folgenden finden Sie ein Beispiel für eine mehrteilige MIME-Datei, die Sie verwenden können, um Ihre eigene zu erstellen.

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
echo "Running custom user data script"

--==MYBOUNDARY==--
```

 **Benutzerdaten von Amazon Linux 2023**   
Amazon Linux 2023 (AL2023) führt einen neuen Knoteninitialisierungsprozess ein`nodeadm`, der ein YAML-Konfigurationsschema verwendet. Wenn Sie selbstverwaltete Knotengruppen oder eine AMI mit einer Startvorlage verwenden, müssen Sie nun beim Erstellen einer neuen Knotengruppe explizit zusätzliche Cluster-Metadaten angeben. Ein [Beispiel](https://awslabs.github.io/amazon-eks-ami/nodeadm/) für die mindestens erforderlichen Parameter ist wie folgt, wobei jetzt `apiServerEndpoint`, `certificateAuthority` und Service-`cidr` erforderlich sind:  

```
---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: my-cluster
    apiServerEndpoint: https://example.com
    certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
    cidr: 10.100.0.0/16
```
Normalerweise legen Sie diese Konfiguration in Ihren Benutzerdaten fest, entweder unverändert oder eingebettet in ein MIME-Multipart-Dokument:  

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: application/node.eks.aws

---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig spec: [...]

--BOUNDARY--
```
 AL2In wurden die Metadaten dieser Parameter aus dem Amazon `DescribeCluster` EKS-API-Aufruf ermittelt. Mit hat sich dieses Verhalten geändert AL2023, da durch den zusätzlichen API-Aufruf die Gefahr einer Drosselung bei der Skalierung großer Knoten besteht. Diese Änderung betrifft Sie nicht, wenn Sie verwaltete Knotengruppen ohne Startvorlage verwenden oder wenn Sie Karpenter verwenden. Weitere Informationen zu `certificateAuthority` und Service `cidr` finden Sie unter [https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html) in der *API-Referenz von Amazon EKS*.  
Hier ist ein vollständiges Beispiel für AL2023 Benutzerdaten, das ein Shell-Skript für die Anpassung des Nodes (wie die Installation von Paketen oder das Pre-Caching von Container-Images) mit der erforderlichen Konfiguration kombiniert. `nodeadm` Dieses Beispiel veranschaulicht gängige Anpassungen, darunter: \$1 Installation zusätzlicher Systempakete \$1 Vorab-Caching von Container-Images zur Verbesserung der Pod-Startup-Zeit \$1 Einrichtung der HTTP-Proxy-Konfiguration \$1 Konfiguration von `kubelet`-Flags für die Knotenbeschriftung  

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
set -o errexit
set -o pipefail
set -o nounset

# Install additional packages
yum install -y htop jq iptables-services

# Pre-cache commonly used container images
nohup docker pull public.ecr.aws/eks-distro/kubernetes/pause:3.2 &

# Configure HTTP proxy if needed
cat > /etc/profile.d/http-proxy.sh << 'EOF'
export HTTP_PROXY="http://proxy.example.com:3128"
export HTTPS_PROXY="http://proxy.example.com:3128"
export NO_PROXY="localhost,127.0.0.1,169.254.169.254,.internal"
EOF

--BOUNDARY
Content-Type: application/node.eks.aws

apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: my-cluster
    apiServerEndpoint: https://example.com
    certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
    cidr: 10.100.0.0/16
  kubelet:
    config:
      clusterDNS:
      - 10.100.0.10
    flags:
    - --node-labels=app=my-app,environment=production

--BOUNDARY--
```

 **Bottlerocket-Benutzerdaten**   
Bottlerocket strukturiert Benutzerdaten im TOML-Format. Sie können Benutzerdaten angeben, die mit den von Amazon EKS bereitgestellten Benutzerdaten zusammengeführt werden sollen. Zum Beispiel können Sie zusätzliche `kubelet`-Einstellungen bereitstellen.  

```
[settings.kubernetes.system-reserved]
cpu = "10m"
memory = "100Mi"
ephemeral-storage= "1Gi"
```
Weitere Informationen zu unterstützten Einstellungen finden Sie in der [Bottlerocket-Dokumentation](https://github.com/bottlerocket-os/bottlerocket). Sie können Knotenbezeichnungen und [Taints](node-taints-managed-node-groups.md) in Ihren Benutzerdaten konfigurieren. Es wird jedoch empfohlen, diese stattdessen in Ihrer Knotengruppe zu konfigurieren. Amazon EKS wendet diese Konfigurationen an, wenn Sie dies tun.  
Wenn Benutzerdaten zusammengeführt werden, wird die Formatierung nicht beibehalten, der Inhalt bleibt jedoch unverändert. Die Konfiguration, die Sie in Ihren Benutzerdaten angeben, überschreibt alle Einstellungen, die von Amazon EKS konfiguriert wurden. Wenn Sie also `settings.kubernetes.max-pods` oder `settings.kubernetes.cluster-dns-ip` festlegen, werden diese Werte in Ihren Benutzerdaten auf die Knoten angewendet.  
Amazon EKS unterstützt nicht alle gültigen TOML. Im Folgenden finden Sie eine Liste bekannter nicht unterstützter Formate:  
+ Zitate in Anführungszeichen: `'quoted "value"' = "value"` 
+ Anführungszeichen mit Escapezeichen in Werten: `str = "I’m a string. \"You can quote me\""` 
+ Gemischte Gleitkommazahlen und ganze Zahlen: `numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ]` 
+ Gemischte Typen in Arrays: `contributors = ["[foo@example.com](mailto:foo@example.com)", { name = "Baz", email = "[baz@example.com](mailto:baz@example.com)" }]` 
+ Kopfzeilen in Klammern mit Anführungszeichen: `[foo."bar.baz"]` 

 **Windows-Benutzerdaten**   
Windows-Benutzerdaten verwenden Befehle. PowerShell Beim Erstellen einer verwalteten Knotengruppe werden Ihre benutzerdefinierten Benutzerdaten mit den von Amazon EKS verwalteten Benutzerdaten kombiniert. Ihre PowerShell Befehle stehen an erster Stelle, gefolgt von den Befehlen für verwaltete Benutzerdaten, alles innerhalb eines `<powershell></powershell>` Tags.  
Beim Erstellen von Windows-Knotengruppen aktualisiert Amazon EKS die `aws-auth` `ConfigMap`, damit Linux-basierte Knoten dem Cluster beitreten können. Der Dienst konfiguriert die Berechtigungen für Windows nicht automatisch AMIs. Wenn Sie Windows-Knoten verwenden, müssen Sie den Zugriff entweder über die Zugriffseintrag-API oder durch direkte Aktualisierung der `aws-auth` `ConfigMap` verwalten. Weitere Informationen finden Sie unter [Bereitstellung von Windows-Knoten in EKS-Clustern](windows-support.md).
Wenn in der Startvorlage keine AMI-ID angegeben ist, verwenden Sie nicht das Amazon-EKS-Bootstrap-Skript von Windows in den Benutzerdaten, um Amazon EKS zu konfigurieren.
Beispielbenutzerdaten lauten wie folgt.  

```
<powershell>
Write-Host "Running custom user data script"
</powershell>
```

## Angeben eines AMI
<a name="launch-template-custom-ami"></a>

Wenn Sie eine der folgenden Anforderungen haben, geben Sie eine AMI-ID in der `ImageId`-Startvorlage. Wählen Sie die Anforderung, die Sie für zusätzliche Informationen haben.

### Geben Sie Benutzerdaten an, um Argumente an die `bootstrap.sh` Datei zu übergeben, die in einem Amazon EKS-optimierten Linux/Bottlerocket AMI enthalten ist
<a name="mng-specify-eks-ami"></a>

Bootstrapping ist ein Begriff, der verwendet wird, um das Hinzufügen von Befehlen zu beschreiben, die beim Start einer Instance ausgeführt werden können. Bootstrapping ermöglicht beispielsweise die Verwendung zusätzlicher [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/)-Argumente. Sie können Argumente mithilfe von `eksctl` an das `bootstrap.sh`-Skript übergeben, ohne eine Startvorlage anzugeben. Oder Sie können dies tun, indem Sie die Informationen im Abschnitt Benutzerdaten einer Startvorlage angeben.

 **eksctl ohne Angabe einer Startvorlage**   
Erstellen Sie eine Datei mit dem Namen *my-nodegroup.yaml* und dem folgenden Inhalt. Ersetzen Sie jede *example value* durch Ihre eigenen Werte. Die Argumente `--apiserver-endpoint`, `--b64-cluster-ca` und `--dns-cluster-ip` sind optional. Wenn sie definiert werden, verhindert dies jedoch, dass das `bootstrap.sh`-Skript einen `describeCluster`-Aufruf durchführt. Dies ist nützlich in privaten Cluster-Konfigurationen oder Clustern, in denen Sie häufig Knoten ab- und ausskalieren. Weitere Informationen zum `bootstrap.sh` Skript finden Sie in der Datei [bootstrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) unter GitHub.  
+ Das einzige erforderliche Argument ist der Clustername (*my-cluster*).
+ Informationen zum Abrufen einer optimierten AMI-ID für `ami-1234567890abcdef0 ` finden Sie in den folgenden Abschnitten:
  +  [Rufen Sie das empfohlene Amazon Linux AMI ab IDs](retrieve-ami-id.md) 
  +  [Empfohlenes Bottlerocket-AMI abrufen IDs](retrieve-ami-id-bottlerocket.md) 
  +  [Rufen Sie das empfohlene Microsoft Windows AMI ab IDs](retrieve-windows-ami-id.md) 
+ Um die *certificate-authority* für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus.

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ Um den *api-server-endpoint* für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus.

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ Der Wert für`--dns-cluster-ip`ist Ihr Service CIDR mit`.10`am Ende. Um das *service-cidr* für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus. Wenn der zurückgegebene Wert beispielsweise `ipv4 10.100.0.0/16` ist, ist Ihr Wert *10.100.0.10*.

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ Dieses Beispiel umfasst ein `kubelet`-Argument, mit dem ein benutzerdefinierter `max-pods`-Wert anhand des `bootstrap.sh`-Skripts festgelegt wird, das im Amazon-EKS-optimierten AMI enthalten ist. Der Name der Knotengruppe darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten. Hilfe zur Auswahl von *my-max-pods-value* finden Sie unter . Weitere Informationen darüber, wie festgelegt `maxPods` wird, wenn verwaltete Knotengruppen verwendet werden, finden Sie unter[Wie wird MaxPods bestimmt](choosing-instance-type.md#max-pods-precedence).

  ```
  ---
  apiVersion: eksctl.io/v1alpha5
  kind: ClusterConfig
  
  metadata:
    name: my-cluster
    region: region-code
  
  managedNodeGroups:
    - name: my-nodegroup
      ami: ami-1234567890abcdef0
      instanceType: m5.large
      privateNetworking: true
      disableIMDSv1: true
      labels: { x86-al2-specified-mng }
      overrideBootstrapCommand: |
        #!/bin/bash
        /etc/eks/bootstrap.sh my-cluster \
          --b64-cluster-ca certificate-authority \
          --apiserver-endpoint api-server-endpoint \
          --dns-cluster-ip service-cidr.10 \
          --kubelet-extra-args '--max-pods=my-max-pods-value' \
          --use-max-pods false
  ```

  Informationen zu allen verfügbaren `eksctl`-`config`-Dateioptionen finden Sie im [Config file schema](https://eksctl.io/usage/schema/) (Config-Datei-Schema) in der `eksctl`-Dokumentation. Das `eksctl`-Dienstprogramm erstellt eine Startvorlage für Sie und füllt die Benutzerdaten mit den Daten aus, die Sie in der `config`-Datei angeben.

  Erstellen Sie eine Knoten-Gruppe mit dem folgenden Befehl.

  ```
  eksctl create nodegroup --config-file=my-nodegroup.yaml
  ```

 **Benutzerdaten in einer Startvorlage**   
Geben Sie die folgenden Informationen im Abschnitt Benutzerdaten Ihrer Startvorlage an. Ersetzen Sie jede *example value* durch Ihre eigenen Werte. Die Argumente `--apiserver-endpoint`, `--b64-cluster-ca` und `--dns-cluster-ip` sind optional. Wenn sie definiert werden, verhindert dies jedoch, dass das `bootstrap.sh`-Skript einen `describeCluster`-Aufruf durchführt. Dies ist nützlich in privaten Cluster-Konfigurationen oder Clustern, in denen Sie häufig Knoten ab- und ausskalieren. Weitere Informationen zum `bootstrap.sh` Skript finden Sie in der Datei [bootstrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) unter GitHub.  
+ Das einzige erforderliche Argument ist der Clustername (*my-cluster*).
+ Um die *certificate-authority* für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus.

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ Um den *api-server-endpoint* für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus.

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ Der Wert für`--dns-cluster-ip`ist Ihr Service CIDR mit`.10`am Ende. Um das *service-cidr* für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus. Wenn der zurückgegebene Wert beispielsweise `ipv4 10.100.0.0/16` ist, ist Ihr Wert *10.100.0.10*.

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ Dieses Beispiel umfasst ein `kubelet`-Argument, mit dem ein benutzerdefinierter `max-pods`-Wert anhand des `bootstrap.sh`-Skripts festgelegt wird, das im Amazon-EKS-optimierten AMI enthalten ist. Hilfe zur Auswahl von *my-max-pods-value* finden Sie unter . Weitere Informationen darüber, wie festgelegt `maxPods` wird, wenn verwaltete Knotengruppen verwendet werden, finden Sie unter[Wie wird MaxPods bestimmt](choosing-instance-type.md#max-pods-precedence).

  ```
  MIME-Version: 1.0
  Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
  
  --==MYBOUNDARY==
  Content-Type: text/x-shellscript; charset="us-ascii"
  
  #!/bin/bash
  set -ex
  /etc/eks/bootstrap.sh my-cluster \
    --b64-cluster-ca certificate-authority \
    --apiserver-endpoint api-server-endpoint \
    --dns-cluster-ip service-cidr.10 \
    --kubelet-extra-args '--max-pods=my-max-pods-value' \
    --use-max-pods false
  
  --==MYBOUNDARY==--
  ```

### Stellen Sie Benutzerdaten bereit, um Argumente an die `Start-EKSBootstrap.ps1`-Datei zu übergeben, die in einer für Amazon EKS optimierten Windows-AMI enthalten ist.
<a name="mng-specify-eks-ami-windows"></a>

Bootstrapping ist ein Begriff, der verwendet wird, um das Hinzufügen von Befehlen zu beschreiben, die beim Start einer Instance ausgeführt werden können. Sie können Argumente mithilfe von `eksctl` an das `Start-EKSBootstrap.ps1`-Skript übergeben, ohne eine Startvorlage anzugeben. Oder Sie können dies tun, indem Sie die Informationen im Abschnitt Benutzerdaten einer Startvorlage angeben.

Beachten Sie beim Angeben einer benutzerdefinierten Windows-AMI-ID die folgenden Überlegungen:
+ Sie müssen eine Startvorlage verwenden und die erforderlichen Bootstrap-Befehle im Abschnitt Benutzerdaten angeben. Um Ihre gewünschte Windows-ID abzurufen, können Sie die Tabelle unter [Knoten mit optimiertem Windows erstellen](eks-optimized-windows-ami.md) verwenden AMIs.
+ Es gibt verschiedene Grenzwerte und Bedingungen. Sie müssen beispielsweise `eks:kube-proxy-windows` zu Ihrer AWS IAM Authenticator-Konfigurationsübersicht etwas hinzufügen. Weitere Informationen finden Sie unter [Grenzen und Bedingungen bei der Angabe einer AMI-ID](#mng-ami-id-conditions).

Geben Sie die folgenden Informationen im Abschnitt Benutzerdaten Ihrer Startvorlage an. Ersetzen Sie jede *example value* durch Ihre eigenen Werte. Die Argumente `-APIServerEndpoint`, `-Base64ClusterCA` und `-DNSClusterIP` sind optional. Wenn sie definiert werden, verhindert dies jedoch, dass das `Start-EKSBootstrap.ps1`-Skript einen `describeCluster`-Aufruf durchführt.
+ Das einzige erforderliche Argument ist der Clustername (*my-cluster*).
+ Um die *certificate-authority* für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus.

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ Um den *api-server-endpoint* für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus.

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ Der Wert für`--dns-cluster-ip`ist Ihr Service CIDR mit`.10`am Ende. Um das *service-cidr* für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus. Wenn der zurückgegebene Wert beispielsweise `ipv4 10.100.0.0/16` ist, ist Ihr Wert *10.100.0.10*.

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ Weitere Argumente finden Sie unter [Bootstrap-Skript-Konfigurationsparameter](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters).
**Anmerkung**  
Wenn Sie CIDR für den benutzerdefinierten Service verwenden, müssen Sie diesen mithilfe des `-ServiceCIDR`-Parameters angeben. Andernfalls schlägt die DNS-Auflösung für Pods im Cluster fehl.

```
<powershell>
[string]$EKSBootstrapScriptFile = "$env:ProgramFiles\Amazon\EKS\Start-EKSBootstrap.ps1"
& $EKSBootstrapScriptFile -EKSClusterName my-cluster `
	 -Base64ClusterCA certificate-authority `
	 -APIServerEndpoint api-server-endpoint `
	 -DNSClusterIP service-cidr.10
</powershell>
```

### Führen Sie ein benutzerdefiniertes AMI aufgrund bestimmter Sicherheits-, Compliance- oder interner Richtlinienanforderungen aus
<a name="mng-specify-custom-ami"></a>

Weitere Informationen dazu finden Sie unter [Amazon Machine Images (AMI)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) im *Benutzerhandbuch für Amazon EC2*. Die Amazon-EKS-AMI-Entwicklungsspezifikation enthält Ressourcen und Konfigurationsskripte für die Erstellung eines benutzerdefinierten Amazon EKS AMI basierend auf Amazon Linux. Weitere Informationen finden Sie unter [Amazon-EKS-AMI-Build-Spezifikation](https://github.com/awslabs/amazon-eks-ami/) auf GitHub. Informationen zum Erstellen benutzerdefinierter AMIs Installationen mit anderen Betriebssystemen finden Sie unter [Amazon EKS Sample Custom AMIs](https://github.com/aws-samples/amazon-eks-custom-amis) unter GitHub.

Sie können keine dynamischen Parameterreferenzen für AMI IDs in Startvorlagen verwenden, die mit verwalteten Knotengruppen verwendet werden.

**Wichtig**  
Wenn Sie ein AMI angeben, validiert Amazon EKS die in Ihr AMI eingebettete Kubernetes-Version nicht mit der Version der Kontrollebene Ihres Clusters. Sie sind dafür verantwortlich, sicherzustellen, dass die Kubernetes-Version Ihres benutzerdefinierten AMI der [Kubernetes-Richtlinie für Versionsverzerrungen](https://kubernetes.io/releases/version-skew-policy) entspricht:  
Die `kubelet` Version auf Ihren Knoten darf nicht neuer als Ihre Cluster-Version sein
Die `kubelet` Version auf Ihren Knoten muss mindestens 3 Nebenversionen hinter Ihrer Cluster-Version (für Kubernetes-Version `1.28` oder höher) oder bis zu 2 Nebenversionen hinter Ihrer Cluster-Version (für Kubernetes-Version oder niedriger) sein `1.27`  
Das Erstellen von verwalteten Knotengruppen mit Verstößen gegen den Versionsunterschied kann zu folgenden Ergebnissen führen:
Knoten können dem Cluster nicht beitreten
Undefiniertes Verhalten oder API-Inkompatibilitäten
Cluster-Instabilität oder Workload-Ausfälle
Bei der Angabe eines AMI führt Amazon EKS keine Benutzerdaten zusammen. Vielmehr sind Sie verantwortlich für die Bereitstellung der erforderlichen `bootstrap`-Befehle für Knoten, um dem Cluster beizutreten. Wenn Ihre Knoten dem Cluster nicht beitreten können, wird Amazon EKS `CreateNodegroup` und `UpdateNodegroupVersion`-Aktionen ebenfalls fehlschlagen.

## Grenzen und Bedingungen bei der Angabe einer AMI-ID
<a name="mng-ami-id-conditions"></a>

Im Folgenden sind die Grenzen und Bedingungen aufgeführt, die mit der Angabe einer AMI-ID mit verwalteten Knotengruppen verbunden sind:
+ Sie müssen eine neue Knotengruppe erstellen, um zwischen der Angabe einer AMI-ID in einer Startvorlage und der Nicht-Angabe einer AMI-ID zu wechseln.
+ Sie werden in der Konsole nicht benachrichtigt, wenn eine neuere AMI-Version verfügbar ist. Um Ihre Knotengruppe auf eine neuere AMI-Version zu aktualisieren, müssen Sie eine neue Version Ihrer Startvorlage mit einer aktualisierten AMI-ID erstellen. Dann müssen Sie die Knotengruppe mit der neuen Version der Startvorlage aktualisieren.
+ Die folgenden Felder können in der API nicht festgelegt werden, wenn Sie eine AMI-ID angeben:
  +  `amiType` 
  +  `releaseVersion` 
  +  `version` 
+ Alle in der API festgelegten `taints` werden asynchron angewendet, wenn Sie eine AMI-ID angeben. Um Taints anzuwenden, bevor ein Knoten mit dem Cluster verbunden wird, müssen Sie die Taints über das Befehlszeilen-Flag `--register-with-taints` an `kubelet` in Ihren Benutzerdaten weitergeben. Weitere Informationen finden Sie unter [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) in der Kubernetes-Dokumentation.
+ Wenn Sie eine benutzerdefinierte AMI-ID für von Windows verwaltete Knotengruppen angeben, fügen Sie `eks:kube-proxy-windows` diese Ihrer AWS IAM Authenticator-Konfigurationsübersicht hinzu. Dies ist erforderlich, damit DNS ordnungsgemäß funktioniert.

  1. Öffnen Sie die AWS IAM Authenticator-Konfigurationsübersicht zur Bearbeitung.

     ```
     kubectl edit -n kube-system cm aws-auth
     ```

  1. Fügen Sie diesen Eintrag zur `groups`-Liste unter jedem `rolearn` hinzu, das Windows-Knoten zugeordnet ist. [Ihre Konfigurationsübersicht sollte ähnlich wie .yaml aussehen. aws-auth-cm-windows](https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm-windows.yaml)

     ```
     - eks:kube-proxy-windows
     ```

  1. Speichern Sie die Datei und beenden Sie den Text-Editor.
+ Für jedes AMI, das eine benutzerdefinierte Startvorlage verwendet, ist das Standard-`HttpPutResponseHopLimit` für verwaltete Knotengruppen auf `2` festgelegt.

# Verwaltete Knotengruppe aus Ihrem Cluster löschen
<a name="delete-managed-node-group"></a>

In diesem Thema wird beschrieben, wie Sie eine verwaltete Amazon-EKS-Knotengruppe löschen. Wenn Sie eine verwaltete Knotengruppe löschen, legt Amazon EKS zunächst die minimale, maximale und gewünschte Größe Ihrer Auto-Scaling-Gruppe auf Null fest. Dies bewirkt dann, dass Ihre Knotengruppe abskaliert wird.

Bevor jede Instance beendet wird, sendet Amazon EKS ein Signal, um diesen Knoten zu entleeren. Während des Drainprozesses führt Kubernetes für jeden Pod auf dem Knoten Folgendes aus: führt alle konfigurierten `preStop` Lifecycle-Hooks aus, sendet `SIGTERM` Signale an die Container und wartet dann auf das ordnungsgemäße Herunterfahren`terminationGracePeriodSeconds`. Wenn der Knoten nach 5 Minuten nicht entleert wurde, lässt Amazon EKS Auto Scaling die erzwungene Beendigung der Instance fortsetzen. Nachdem alle Instanzen beendet wurden, wird die Auto Scaling Scaling-Gruppe gelöscht.

**Wichtig**  
Wenn Sie eine verwaltete Knotengruppe löschen, die eine Knoten-IAM-Rolle verwendet, die von keiner anderen verwalteten Knotengruppe im Cluster genutzt wird, wird die Rolle aus `aws-auth` `ConfigMap` entfernt. Wenn eine der selbstverwalteten Knotengruppen im Cluster dieselbe Knoten-IAM-Rolle verwendet, werden die selbstverwalteten Knoten in den `NotReady`-Status verschoben. Außerdem wird auch der Cluster-Betrieb unterbrochen. Informationen zum Hinzufügen einer Zuordnung für die Rolle, die Sie ausschließlich für selbstverwaltete Knotengruppen verwenden, finden Sie unter [Zugriffseinträge erstellen](creating-access-entries.md). Voraussetzung ist, dass die Plattformversion Ihres Clusters mindestens der im Abschnitt „Voraussetzungen“ unter [IAM-Benutzern Zugriff auf Kubernetes mit EKS-Zugriffseinträgen gewähren](access-entries.md) angegebenen Mindestversion entspricht. Wenn Ihre Plattformversion älter ist als die erforderliche Mindestversion für Zugriffseinträge, können Sie den Eintrag wieder in `aws-auth` `ConfigMap` hinzufügen. Weitere Informationen erhalten Sie durch Eingabe von `eksctl create iamidentitymapping --help` im Terminal.

Sie können eine verwaltete Knotengruppe wie folgt löschen:
+  [`eksctl`](#eksctl-delete-managed-nodegroup) 
+  [AWS-Managementkonsole](#console-delete-managed-nodegroup) 
+  [AWS CLI](#awscli-delete-managed-nodegroup) 

## `eksctl`
<a name="eksctl-delete-managed-nodegroup"></a>

 **Eine verwaltete Knotengruppe mit `eksctl` löschen ** 

Geben Sie den folgenden Befehl ein. Ersetzen Sie jede `<example value>` durch Ihre eigenen Werte.

```
eksctl delete nodegroup \
  --cluster <my-cluster> \
  --name <my-mng> \
  --region <region-code>
```

Weitere Optionen finden Sie unter [Löschen und Löschen von Knotengruppen](https://eksctl.io/usage/nodegroups/#deleting-and-draining-nodegroups) in der `eksctl`-Dokumentation.

## AWS-Managementkonsole
<a name="console-delete-managed-nodegroup"></a>

 **Eine verwaltete Knotengruppe mit AWS-Managementkonsole löschen ** 

1. Öffnen Sie die [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

1. Wählen Sie auf der Seite **Clusters** den Cluster aus, der die zu löschende Knotengruppe enthält.

1. Wählen Sie auf der ausgewählten Cluster-Seite die Registerkarte **Datenverarbeitung** aus.

1. Wählen Sie im Abschnitt **Node groups** (Knotengruppen) die zu löschende Knotengruppe aus. Wählen Sie dann **Löschen** aus.

1. Geben Sie im Bestätigungsdialogfeld **Knotengruppe löschen** den Namen der Knotengruppe ein. Wählen Sie dann **Löschen** aus.

## AWS CLI
<a name="awscli-delete-managed-nodegroup"></a>

 **Löschen Sie eine verwaltete Knotengruppe mit AWS CLI** 

1. Geben Sie den folgenden Befehl ein. Ersetzen Sie jede `<example value>` durch Ihre eigenen Werte.

   ```
   aws eks delete-nodegroup \
     --cluster-name <my-cluster> \
     --nodegroup-name <my-mng> \
     --region <region-code>
   ```

1. Wenn `cli_pager=` es in der CLI-Konfiguration festgelegt ist, verwenden Sie die Pfeiltasten auf Ihrer Tastatur, um durch die Antwortausgabe zu blättern. Drücken Sie die `q`-Taste, wenn Sie fertig sind.

   Weitere Optionen finden Sie unter dem ` [delete-nodegroup](https://docs.aws.amazon.com/cli/latest/reference/eks/delete-nodegroup.html) ` Befehl in der * AWS CLI-Befehlsreferenz*.

# Knoten selbst mit selbstverwalteten Knoten verwalten
<a name="worker"></a>

Ein Cluster enthält einen oder mehrere Amazon-EC2-Knoten, auf denen Pods geplant sind. Amazon-EKS-Knoten werden in Ihrem AWS-Konto ausgeführt und stellen eine Verbindung zur Steuerebene Ihres Clusters über den Cluster-API-Server-Endpunkt her. Sie werden basierend auf Amazon-EC2-Preisen in Rechnung gestellt. Weitere Informationen dazu finden Sie unter [Amazon EC2 – Preise](https://aws.amazon.com/ec2/pricing/).

Ein Cluster kann mehrere Knotengruppen enthalten. Jede Knotengruppe enthält eine oder mehrere Knoten, die in einer [Gruppe von Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html) bereitgestellt werden. Der Instance-Typ der Knoten innerhalb der Gruppe kann variieren, z. B. wenn die [attributbasierte Instance-Typauswahl](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) mit [Karpenter](https://karpenter.sh/) verwendet wird. Alle Instances in einer Knotengruppe müssen die [Amazon-EKS-Knoten-IAM-Rolle](create-node-role.md) verwenden.

Amazon EKS bietet spezialisierte Amazon Machine Images (AMIs), die als für Amazon EKS optimierte AMIs bezeichnet werden. Die AMIs sind so konfiguriert, dass sie mit Amazon EKS funktionieren. Zu ihren Komponenten gehören `containerd`, `kubelet`, und der AWS-IAM-Authenticator. Das AMI enthält auch ein spezialisiertes [Bootstrap-Skript](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh), mit dem Sie die Steuerebene Ihres Clusters automatisch erkennen und eine Verbindung damit herstellen können.

Wenn Sie den Zugriff auf den öffentlichen Endpunkt Ihres Clusters mithilfe von CIDR-Blöcken einschränken, empfehlen wir, dass Sie auch den privaten Endpunktzugriff aktivieren. Auf diese Weise können Knoten mit dem Cluster kommunizieren. Wenn der private Endpunkt nicht aktiviert ist, müssen die CIDR-Blöcke, die Sie für den öffentlichen Zugriff angeben, die Ausgangsquellen aus Ihrer VPC enthalten. Weitere Informationen finden Sie unter [Cluster-API-Server-Endpunkt](cluster-endpoint.md).

Informationen zum Hinzufügen selbstverwalteter Knoten zu Ihrem Amazon-EKS-Cluster finden Sie in den folgenden Themen. Wenn Sie selbstverwaltete Knoten manuell starten, fügen Sie jedem Knoten das folgende Tag hinzu und stellen Sie sicher, dass `<cluster-name>` ​​mit Ihrem Cluster übereinstimmt. Weitere Informationen dazu finden Sie unter [Hinzufügen und Löschen von Markierungen für einzelne Ressourcen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#adding-or-deleting-tags). Wenn Sie die Schritte in der Anleitung ausführen, wird die erforderliche Markierung für Sie zum Knoten hinzugefügt.


| Schlüssel | Value (Wert) | 
| --- | --- | 
|   `kubernetes.io/cluster/<cluster-name>`   |   `owned`   | 

**Wichtig**  
Tags im Amazon EC2 Instance Metadata Service (IMDS) sind nicht mit EKS-Knoten kompatibel. Wenn Instance Metadata Tags aktiviert sind, wird die Verwendung von Schrägstrichen („/“) in Tag-Werten verhindert. Diese Einschränkung kann zu Fehlern beim Starten von Instances führen, insbesondere bei der Verwendung von Knotenmanagement-Tools wie Karpenter oder Cluster Autoscaler, da diese Services für ihre ordnungsgemäße Funktion auf Tags mit Schrägstrichen angewiesen sind.

Weitere Informationen zu Worker-Knoten aus einer allgemeinen Kubernetes-Perspektive finden Sie unter [Nodes](https://kubernetes.io/docs/concepts/architecture/nodes/) in der Kubernetes-Dokumentation.

**Topics**
+ [

# Selbstverwaltete Amazon-Linux-Knoten erstellen
](launch-workers.md)
+ [

# Selbstverwaltete Bottlerocket-Knoten erstellen
](launch-node-bottlerocket.md)
+ [

# Selbstverwaltete Microsoft-Windows-Knoten erstellen
](launch-windows-workers.md)
+ [

# Selbstverwaltete Ubuntu Linux-Knoten erstellen
](launch-node-ubuntu.md)
+ [

# Selbstverwaltete Knoten für Ihren Cluster aktualisieren
](update-workers.md)

# Selbstverwaltete Amazon-Linux-Knoten erstellen
<a name="launch-workers"></a>

Dieses Thema beschreibt Hinweise zum Starten von Auto-Scaling-Gruppen von Linux-Knoten, die mit Ihrem Amazon-EKS-Cluster registriert sind. Nachdem die Knoten dem Cluster beigetreten sind, können Sie Kubernetes-Anwendungen darin bereitstellen. Sie können auch selbstverwaltete Amazon Linux-Knoten mit `eksctl` oder dem AWS-Managementkonsole starten. Informationen dazu, wie Sie Knoten auf AWS Outposts starten müssen, finden Sie unter[Amazon Linux-Knoten auf AWS Outposts erstellen](eks-outposts-self-managed-nodes.md).
+ Ein vorhandener Amazon-EKS-Cluster. Informationen zum Bereitstellen finden Sie unter [Amazon-EKS-Cluster erstellen](create-cluster.md). Wenn Sie Subnetze in der AWS Region haben, in der Sie AWS Outposts, AWS Wavelength oder AWS Local Zones aktiviert haben, dürfen diese Subnetze bei der Erstellung Ihres Clusters nicht weitergegeben worden sein.
+ Eine vorhandene IAM-Rolle, die von den Knoten verwendet werden soll. Informationen zum Erstellen finden Sie unter [Amazon-EKS-Knoten-IAM-Rolle](create-node-role.md). Wenn diese Rolle keine der beiden Richtlinien für die VPC CNI enthält, ist die folgende separate Rolle für die VPC-CNI-Pods erforderlich.
+ (Optional, aber empfohlen) Das Amazon-VPC-CNI-Plugin für Kubernetes-Add-On, konfiguriert mit einer eigenen IAM-Rolle, der die erforderliche IAM-Richtlinie zugeordnet ist. Weitere Informationen finden Sie unter [Konfiguration des Amazon-VPC-CNI-Plugins für die Verwendung von IRSA](cni-iam-role.md).
+ Vertrautheit mit den unter [Wählen Sie einen optimalen EC2 Amazon-Node-Instance-Typ](choosing-instance-type.md) aufgeführten Überlegungen. Je nachdem, welchen Instance-Typ Sie wählen, kann es zusätzliche Voraussetzungen für Ihren Cluster und Ihre VPC geben.

Sie können selbstverwaltete Linux-Knoten mit einer der folgenden Optionen starten:
+  [`eksctl`](#eksctl_create_managed_amazon_linux) 
+  [AWS-Managementkonsole](#console_create_managed_amazon_linux) 

## `eksctl`
<a name="eksctl_create_managed_amazon_linux"></a>

 **Selbstverwaltete Linux-Knoten mithilfe der `eksctl` starten ** 

1. Installieren Sie Version `0.215.0` oder höher des auf Ihrem Gerät installierten `eksctl` Befehlszeilentools oder AWS CloudShell. Informationen zum Installieren und Aktualisieren von `eksctl` finden Sie in der Dokumentation zu `eksctl` unter [Installation](https://eksctl.io/installation).

1. (Optional) Wenn die verwaltete IAM-Richtlinie **AmazonEKS\$1CNI\$1Policy** Ihrer [IAM-Rolle des Amazon-EKS-Knoten](create-node-role.md) zugeordnet ist, empfehlen wir, sie stattdessen einer IAM-Rolle zuzuweisen, die Sie dem Kubernetes-Servicekonto `aws-node` zuordnen. Weitere Informationen finden Sie unter [Konfiguration des Amazon-VPC-CNI-Plugins für die Verwendung von IRSA](cni-iam-role.md).

1. Der folgende Befehl erstellt eine Knotengruppe in einem bestehenden Cluster. Ersetzen Sie *al-nodes* durch einen Namen für Ihre Knotengruppe. Der Name der Knotengruppe darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten. Ersetzen Sie *my-cluster* mit dem Namen Ihres Clusters. Der Name darf nur alphanumerische Zeichen (wobei die Groß- und Kleinschreibung beachtet werden muss) und Bindestriche enthalten. Es muss mit einem alphanumerischen Zeichen beginnen und darf nicht länger als 100 Zeichen sein. Der Name muss innerhalb der AWS Region und des AWS Kontos, in dem Sie den Cluster erstellen, eindeutig sein. Ersetzen Sie den Rest der *example value* durch Ihre eigenen Werte. Die Knoten werden standardmäßig mit derselben Kubernetes-Version wie die Steuerungsebene erstellt.

   Bevor Sie einen Wert für auswählen`--node-type`, lesen [Sie den Artikel Wählen Sie einen optimalen EC2 Amazon-Node-Instance-Typ](choosing-instance-type.md).

   *my-key*Ersetzen Sie es durch den Namen Ihres EC2 Amazon-Schlüsselpaars oder öffentlichen Schlüssels. Dieser Schlüssel wird für den SSH-Zugriff zu Ihren Knoten verwendet, nachdem diese gestartet wurden. Wenn Sie noch kein EC2 Amazon-Schlüsselpaar haben, können Sie eines in der erstellen AWS-Managementkonsole. Weitere Informationen finden Sie unter [ EC2 Amazon-Schlüsselpaare](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) im * EC2 Amazon-Benutzerhandbuch*.

   Erstellen Sie Ihre Knoten-Gruppe mit dem folgenden Befehl.
**Wichtig**  
Wenn Sie eine Knotengruppe in AWS Outposts-, Wavelength- oder Local Zone-Subnetzen bereitstellen möchten, gibt es zusätzliche Überlegungen:  
Die Subnetze dürfen beim Erstellen des Clusters nicht übergeben worden sein.
Sie müssen die Knotengruppe mit einer Konfigurationsdatei erstellen, die die Subnetze und ` [volumeType](https://eksctl.io/usage/schema/#nodeGroups-volumeType): gp2` angibt. Weitere Informationen dazu finden Sie unter [Verwenden von Config-Dateien](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) und im [Config-Datei-Schema](https://eksctl.io/usage/schema/) in der `eksctl`-Dokumentation.

   ```
   eksctl create nodegroup \
     --cluster my-cluster \
     --name al-nodes \
     --node-type t3.medium \
     --nodes 3 \
     --nodes-min 1 \
     --nodes-max 4 \
     --ssh-access \
     --managed=false \
     --ssh-public-key my-key
   ```

   Zum Bereitstellen einer Knotengruppe, die:
   + kann Pods eine deutlich höhere Anzahl von IP-Adressen zuweisen als die Standardkonfiguration, siehe [Zuweisung weiterer IP-Adressen mit Präfixen zu Amazon-EKS-Knoten](cni-increase-ip-addresses.md).
   + kann `IPv4`-Adressen an Pods aus einem anderen CIDR-Block als dem der Instance zuweisen, siehe [Bereitstellung von Pods in alternativen Subnetzen mit benutzerdefiniertem Netzwerk](cni-custom-network.md).
   + kann `IPv6`-Adressen an Pods und Services zuweisen, siehe [Erfahren Sie mehr über IPv6 Adressen für Cluster, Pods und Dienste](cni-ipv6.md).
   + hat keinen ausgehenden Internetzugriff, siehe [Bereitstellung privater Cluster mit eingeschränktem Internetzugang](private-clusters.md).

     Geben Sie den folgenden Befehl ein, um eine vollständige Liste aller verfügbaren Optionen und Standardwerte anzuzeigen.

     ```
     eksctl create nodegroup --help
     ```

     Sollten Knoten nicht in den Cluster aufgenommen werden können, finden Sie weitere Informationen unter [Knoten können nicht mit dem Cluster verknüpft werden](troubleshooting.md#worker-node-fail) im Kapitel zur Fehlerbehebung.

     Eine Beispielausgabe sieht wie folgt aus. Mehrere Zeilen werden ausgegeben, während die Knoten erstellt werden. Die letzte Ausgabezeile ähnelt der folgenden Beispielzeile.

     ```
     [✔]  created 1 nodegroup(s) in cluster "my-cluster"
     ```

1. (Optional) [Eine Beispielanwendung in Linux bereitstellen](sample-deployment.md) Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster und Ihre Linux-Worker-Knoten zu testen.

1. Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:
   + Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.
   + Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 Instance Metadata Service (IMDS), z. B. zum Abrufen der aktuellen AWS Region.

   Weitere Informationen finden Sie unter [Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

## AWS-Managementkonsole
<a name="console_create_managed_amazon_linux"></a>

 **Schritt 1: Selbstverwaltete Linux-Knoten mit AWS-Managementkonsole starten ** 

1. Laden Sie die neueste Version der AWS CloudFormation Vorlage herunter.

   ```
   curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2025-11-26/amazon-eks-nodegroup.yaml
   ```

1. Warten Sie, bis der Status des Clusters als `ACTIVE` angezeigt wird. Wenn Sie Ihre Knoten starten, bevor der Cluster aktiv ist, werden die Knoten nicht mit dem Cluster registriert und Sie müssen sie neu starten.

1. Öffnen Sie die [AWS CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation/).

1. Wählen Sie **Create stack** (Stack erstellen) und dann **With new resources (standard)** (Mit neuen Ressourcen [Standard]) aus.

1. Wählen Sie für **Specify template** (Vorlage festlegen) **Upload a template file** (Vorlagendatei hochladen) aus und wählen Sie dann **Choose file** (Datei wählen).

1. Wählen Sie die heruntergeladene `amazon-eks-nodegroup.yaml`-Datei aus.

1. Klicken Sie auf **Weiter**.

1. Geben Sie auf der Seite **Specify stack details** (Stack-Details angeben) die folgenden Parameter ein und klicken Sie dann auf **Next** (Weiter):
   +  **Stack-Name**: Wählen Sie einen Stack-Namen für Ihren AWS CloudFormation Stack. Sie können ihn beispielsweise *my-cluster-nodes* nennen. Der Name darf nur alphanumerische Zeichen (wobei die Groß- und Kleinschreibung beachtet werden muss) und Bindestriche enthalten. Es muss mit einem alphanumerischen Zeichen beginnen und darf nicht länger als 100 Zeichen sein. Der Name muss innerhalb der AWS Region und des AWS Kontos, in dem Sie den Cluster erstellen, eindeutig sein.
   +  **ClusterName**: Geben Sie den Namen ein, den Sie bei der Erstellung Ihres Amazon EKS-Clusters verwendet haben. Dieser Name muss exakt mit dem Cluster-Namen übereinstimmen, andernfalls werden Ihre Knoten dem Cluster nicht beitreten.
   +  **ClusterControlPlaneSecurityGroup**: Wählen Sie den **SecurityGroups**Wert aus der AWS CloudFormation Ausgabe aus, die Sie bei der Erstellung Ihrer [VPC](creating-a-vpc.md) generiert haben.

     Die folgenden Schritte zeigen einen Vorgang zum Abrufen der entsprechenden Gruppe.

     1. Öffnen Sie die [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

     1. Wählen Sie den Namen des Clusters.

     1. Wählen Sie die Registerkarte **Network (Network)** aus.

     1. Verwenden Sie den Wert **Zusätzliche Sicherheitsgruppen** als Referenz, wenn Sie aus der **ClusterControlPlaneSecurityGroup**Dropdownliste auswählen.
   +  **ApiServerEndpoint**: Geben Sie den API-Server-Endpunkt für Ihren EKS-Cluster ein. Dies finden Sie im Abschnitt „Details“ der EKS-Cluster-Konsole
   +  **CertificateAuthorityData**: Geben Sie die Base64-kodierten Zertifizierungsstellendaten ein, die Sie auch im Abschnitt „Details“ der EKS-Cluster-Konsole finden.
   +  **ServiceCidr**: Geben Sie den CIDR-Bereich ein, der für die Zuweisung von IP-Adressen zu Kubernetes-Diensten innerhalb des Clusters verwendet wird. Dieser befindet sich auf der Registerkarte „Netzwerk“ der EKS-Cluster-Konsole.
   +  **AuthenticationMode**: Wählen Sie den im EKS-Cluster verwendeten Authentifizierungsmodus aus, indem Sie auf der Registerkarte „Zugriff“ in der EKS-Cluster-Konsole nachsehen.
   +  **NodeGroupName**: Geben Sie einen Namen für Ihre Knotengruppe ein. Dieser Name kann zu einem späteren Zeitpunkt zum Identifizieren der Auto-Scaling-Knotengruppe verwendet werden, die für Ihre Knoten erstellt wurde. Der Name der Knotengruppe darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten.
   +  **NodeAutoScalingGroupMinSize**: Geben Sie die Mindestanzahl von Knoten ein, auf die Ihre Auto Scaling Scaling-Gruppe für Knoten skalieren kann.
   +  **NodeAutoScalingGroupDesiredCapacity**: Geben Sie die gewünschte Anzahl von Knoten ein, auf die bei der Erstellung Ihres Stacks skaliert werden soll.
   +  **NodeAutoScalingGroupMaxSize**: Geben Sie die maximale Anzahl von Knoten ein, auf die Ihre Auto Scaling Scaling-Gruppe für Knoten skalieren kann.
   +  **NodeInstanceType**: Wählen Sie einen Instance-Typ für Ihre Knoten. Weitere Informationen finden Sie unter [Auswahl eines optimalen Amazon-EC2-Knoten-Instance-Typs](choosing-instance-type.md).
   +  **NodeImageIdSSMParam**: Vorab mit dem Amazon EC2 Systems Manager Manager-Parameter eines kürzlich von Amazon EKS optimierten Amazon Linux 2023 AMI für eine variable Kubernetes-Version gefüllt. Um eine andere Kubernetes-Nebenversion zu verwenden, die von Amazon EKS unterstützt wird, ersetzen Sie *1.XX* durch eine andere [unterstützte Version](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html). Wir empfehlen, dieselbe Kubernetes-Version wie Ihr Cluster anzugeben.

     Sie können es auch *amazon-linux-2023* durch einen anderen AMI-Typ ersetzen. Weitere Informationen finden Sie unter [Rufen Sie das empfohlene Amazon Linux AMI ab IDs](retrieve-ami-id.md).
**Anmerkung**  
Die Amazon EKS-Knoten AMIs basieren auf Amazon Linux. Sie können Sicherheits- oder Datenschutzereignisse für Amazon Linux 2023 im [Amazon Linux Security Center](https://alas.aws.amazon.com/alas2023.html) verfolgen oder den zugehörigen [RSS-Feed](https://alas.aws.amazon.com/AL2023/alas.rss) abonnieren. Sicherheits- oder Datenschutzereignisse enthalten eine Übersicht über das Problem, welche Pakete betroffen sind und wie Sie Ihre Instances aktualisieren, um das Problem zu beheben.
   +  **NodeImageId**: (Optional) Wenn Sie Ihr eigenes benutzerdefiniertes AMI (anstelle eines für Amazon EKS optimierten AMI) verwenden, geben Sie eine Knoten-AMI-ID für Ihre AWS Region ein. Wenn Sie hier einen Wert angeben, überschreibt dieser alle Werte im **NodeImageIdSSMParam**Feld.
   +  **NodeVolumeSize**: Geben Sie eine Root-Volume-Größe für Ihre Knoten in GiB an.
   +  **NodeVolumeType**: Geben Sie einen Root-Volume-Typ für Ihre Knoten an.
   +  **KeyName**: Geben Sie den Namen eines Amazon EC2 SSH-Schlüsselpaars ein, mit dem Sie nach dem Start über SSH eine Verbindung zu Ihren Knoten herstellen können. Wenn Sie noch kein EC2 Amazon-Schlüsselpaar haben, können Sie eines in der erstellen AWS-Managementkonsole. Weitere Informationen finden Sie unter [ EC2 Amazon-Schlüsselpaare](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) im * EC2 Amazon-Benutzerhandbuch*.
   +  **VpcId**: Geben Sie die ID für die [VPC](creating-a-vpc.md) ein, die Sie erstellt haben.
   +  **Subnetze**: Wählen Sie die Subnetze aus, die Sie für Ihre VPC erstellt haben. Wenn Sie Ihre VPC anhand der unter [Erstellen einer Amazon VPC für Ihren Amazon-EKS-Cluster](creating-a-vpc.md) beschriebenen Schritte erstellt haben, geben Sie nur die privaten Subnetze innerhalb der VPC an, in denen Ihre Knoten gestartet werden sollen. Sie können sehen, welche Subnetze privat sind, indem Sie den jeweiligen Subnetzlink in der Registerkarte **Networking** (Netzwerk) Ihres Clusters öffnen.
**Wichtig**  
Wenn es sich bei einem oder einigen der Subnetze um öffentliche Subnetze handelt, muss die Einstellung für die automatische Zuweisung öffentlicher IP-Adressen aktiviert sein. Wenn die Einstellung für das öffentliche Subnetz nicht aktiviert ist, wird allen Knoten, die Sie in diesem öffentlichen Subnetz bereitstellen, keine öffentliche IP-Adresse zugewiesen und sie können nicht mit dem Cluster oder anderen Diensten kommunizieren. AWS Wenn das Subnetz vor dem 26. März 2020 mithilfe einer der [Amazon AWS CloudFormation EKS-VPC-Vorlagen](creating-a-vpc.md) oder mithilfe `eksctl` von bereitgestellt wurde, ist die automatische Zuweisung öffentlicher IP-Adressen für öffentliche Subnetze deaktiviert. Informationen dazu, wie Sie die Zuweisung öffentlicher IP-Adressen für ein Subnetz aktivieren, finden Sie unter [Ändern des Attributs für die öffentliche IPv4 Adressierung](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip) für Ihr Subnetz. Wenn der Knoten in einem privaten Subnetz bereitgestellt wird, kann er über ein NAT-Gateway mit dem Cluster und anderen AWS Diensten kommunizieren.
Wenn die Subnetze keinen Internetzugang haben, stellen Sie sicher, dass Sie die Überlegungen und zusätzlichen Schritte unter [Bereitstellen privater Cluster mit eingeschränktem Internetzugang](private-clusters.md) kennen.
Wenn Sie AWS Outposts-, Wavelength- oder Local Zone-Subnetze auswählen, dürfen die Subnetze bei der Erstellung des Clusters nicht übergeben worden sein.

1. Treffen Sie die gewünschte Auswahl auf der Seite **Configure stack options** (Stackoptionen konfigurieren) und wählen Sie dann **Next** (Weiter) aus.

1. Aktivieren Sie das Kontrollkästchen links neben **Ich bestätige, dass AWS CloudFormation möglicherweise IAM-Ressourcen erstellt** werden. , und wählen Sie dann **Stapel erstellen** aus.

1. Wenn Ihr Stack fertig erstellt wurde, wählen Sie ihn in der Konsole aus und klicken Sie auf **Outputs** (Ausgaben). Wenn Sie den `EKS API and ConfigMap` Authentifizierungsmodus `EKS API` oder verwenden, ist dies der letzte Schritt.

1. Wenn Sie den `ConfigMap` Authentifizierungsmodus verwenden, notieren Sie den **NodeInstanceRole**für die Knotengruppe, die erstellt wurde.

 **Schritt 2: Knoten, die Ihrem Cluster beitreten sollen, aktivieren** 

**Anmerkung**  
Die folgenden zwei Schritte sind nur erforderlich, wenn Sie den Configmap-Authentifizierungsmodus innerhalb des EKS-Clusters verwenden. Wenn Sie Knoten in einer privaten VPC ohne ausgehenden Internetzugang gestartet haben, stellen Sie außerdem sicher, dass Knoten Ihrem Cluster von der VPC aus beitreten können.

1. Überprüfen Sie, ob Sie bereits über eine `aws-auth` `ConfigMap` verfügen.

   ```
   kubectl describe configmap -n kube-system aws-auth
   ```

1. Wenn eine `aws-auth` `ConfigMap` angezeigt wird, aktualisieren Sie sie nach Bedarf.

   1. Öffnen Sie `ConfigMap` zum Bearbeiten.

      ```
      kubectl edit -n kube-system configmap/aws-auth
      ```

   1. Fügen Sie nach Bedarf einen neuen `mapRoles`-Eintrag hinzu. Setzen Sie den `rolearn` Wert auf den **NodeInstanceRole**Wert, den Sie im vorherigen Verfahren aufgezeichnet haben.

      ```
      [...]
      data:
        mapRoles: |
          - rolearn: <ARN of instance role (not instance profile)>
            username: system:node:{{EC2PrivateDNSName}}
            groups:
              - system:bootstrappers
              - system:nodes
      [...]
      ```

   1. Speichern Sie die Datei und beenden Sie den Text-Editor.

1. Wenn die Fehlermeldung `Error from server (NotFound): configmaps "aws-auth" not found` angezeigt wird, wenden Sie die standardmäßige `ConfigMap` an.

   1. Laden Sie die Konfigurationszuordnung herunter.

      ```
      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
      ```

   1. Stellen Sie in der `aws-auth-cm.yaml` Datei den `rolearn` Wert auf den **NodeInstanceRole**Wert ein, den Sie im vorherigen Verfahren aufgezeichnet haben. Hierzu können Sie einen Texteditor verwenden oder *my-node-instance-role* ersetzen und den folgenden Befehl ausführen:

      ```
      sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yaml
      ```

   1. Wenden Sie die Konfiguration an. Die Ausführung dieses Befehls kann einige Minuten dauern.

      ```
      kubectl apply -f aws-auth-cm.yaml
      ```

1. Sehen Sie sich den Status Ihrer Knoten an und warten Sie, bis diese in den `Ready`-Status eintreten.

   ```
   kubectl get nodes --watch
   ```

   Geben Sie `Ctrl`\$1`C` ein, um zum Shell-Prompt zurückzukehren.
**Anmerkung**  
Wenn Sie Autorisierungs- oder Ressourcenfehler erhalten, finden Sie weitere Informationen unter [Nicht autorisiert oder Zugriff verweigert (`kubectl`)](troubleshooting.md#unauthorized) im Thema zur Fehlerbehebung.

   Sollten Knoten nicht in den Cluster aufgenommen werden können, finden Sie weitere Informationen unter [Knoten können nicht mit dem Cluster verknüpft werden](troubleshooting.md#worker-node-fail) im Kapitel zur Fehlerbehebung.

1. (Nur GPU-Knoten) Wenn Sie einen GPU-Instance-Typ und das für Amazon EKS optimierte beschleunigte AMI ausgewählt haben, müssen Sie das [NVIDIA-Geräte-Plug-In für Kubernetes](https://github.com/NVIDIA/k8s-device-plugin) als a DaemonSet auf Ihrem Cluster anwenden. Ersetzen Sie es *vX.X.X* durch die gewünschte [s-device-pluginNVIDIA/K8-Version](https://github.com/NVIDIA/k8s-device-plugin/releases), bevor Sie den folgenden Befehl ausführen.

   ```
   kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml
   ```

 **Schritt 3: Zusätzliche Aktionen** 

1. (Optional) [Eine Beispielanwendung in Linux bereitstellen](sample-deployment.md) Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster und Ihre Linux-Worker-Knoten zu testen.

1. (Optional) Wenn die von **AmazonEKS\$1CNI\$1Policy** verwaltete IAM-Richtlinie (wenn Sie einen `IPv4` Cluster haben) oder die *AmazonEKS\$1CNI\$1IPv6\$1Policy* (die Sie [selbst erstellt](cni-iam-role.md#cni-iam-role-create-ipv6-policy) haben, wenn Sie einen `IPv6` Cluster haben) mit Ihrer [Amazon EKS-Knoten-IAM-Rolle verknüpft ist, empfehlen wir, sie stattdessen einer IAM-Rolle](create-node-role.md) zuzuweisen, die Sie dem Kubernetes-Servicekonto zuordnen. `aws-node` Weitere Informationen finden Sie unter [Konfiguration des Amazon-VPC-CNI-Plugins für die Verwendung von IRSA](cni-iam-role.md).

1. Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:
   + Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.
   + Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 Instance Metadata Service (IMDS), z. B. zum Abrufen der aktuellen AWS Region.

   Weitere Informationen finden Sie unter [Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Selbstverwaltete Bottlerocket-Knoten erstellen
<a name="launch-node-bottlerocket"></a>

**Anmerkung**  
Verwaltete Knotengruppen bieten möglicherweise einige Vorteile für Ihren Anwendungsfall. Weitere Informationen finden Sie unter [Vereinfachung des Knotenlebenszyklus mit verwalteten Knotengruppen](managed-node-groups.md).

In diesem Thema wird beschrieben, wie Sie Auto-Scaling-Gruppen von [Bottlerocket](https://aws.amazon.com/bottlerocket/)-Knoten starten, die mit Ihrem Amazon-EKS-Cluster registriert sind. Bottlerocket ist ein Linux-basiertes Open-Source-Betriebssystem, mit dem Sie Container auf virtuellen AWS Maschinen oder Bare-Metal-Hosts ausführen können. Nachdem die Knoten dem Cluster beigetreten sind, können Sie Kubernetes-Anwendungen darin bereitstellen. Weitere Informationen zu Bottlerocket finden Sie in der Dokumentation unter [Using a Bottlerocket AMI with Amazon EKS](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-EKS.md) on GitHub and [Custom](https://eksctl.io/usage/custom-ami-support/) AMI support. `eksctl`

[Informationen zu direkten Upgrades finden Sie unter Bottlerocket Update Operator unter.](https://github.com/bottlerocket-os/bottlerocket-update-operator) GitHub

**Wichtig**  
Amazon-EKS-Worker-Knoten sind Standard-Amazon-EC2-Instances und werden Ihnen basierend auf normalen Amazon-EC2-Instance-Preisen berechnet. Weitere Informationen dazu finden Sie unter [Amazon EC2 – Preise](https://aws.amazon.com/ec2/pricing/).
Sie können Bottlerocket-Knoten in erweiterten Amazon EKS-Clustern auf AWS Outposts starten, aber Sie können sie nicht in lokalen Clustern auf Outposts starten. AWS Weitere Informationen finden Sie unter [Bereitstellung von Amazon EKS On-Premises mit AWS Outposts](eks-outposts.md).
Sie können auf Amazon-EC2-Instances mit `x86`- oder Arm -Prozessoren bereitstellen. Sie können jedoch nicht auf Instances bereitstellen, die über Inferentia-Chips verfügen.
Bottlerocket ist kompatibel mit. AWS CloudFormation Es gibt jedoch keine offizielle CloudFormation Vorlage, die kopiert werden kann, um Bottlerocket-Knoten für Amazon EKS bereitzustellen.
Bottlerocket-Images werden nicht mit einem SSH-Server oder einer Shell geliefert. Sie können out-of-band Zugriffsmethoden verwenden, um die SSH-Aktivierung des Admin-Containers zu ermöglichen und einige Bootstrapping-Konfigurationsschritte mit Benutzerdaten zu durchlaufen. Weitere Informationen finden Sie in diesen Abschnitten im [bottlerocket README.md](https://github.com/bottlerocket-os/bottlerocket) auf GitHub:  
 [Exploration](https://github.com/bottlerocket-os/bottlerocket#exploration) (Erkundung) 
 [Administrator-Container](https://github.com/bottlerocket-os/bottlerocket#admin-container) 
 [Kubernetes-Einstellungen](https://github.com/bottlerocket-os/bottlerocket#kubernetes-settings) 

Für diesen Vorgang ist `eksctl` Version `0.215.0` oder höher erforderlich. Sie können Ihre -Version mit dem folgenden Befehl überprüfen:

```
eksctl version
```

Anweisungen zum Installieren oder Aktualisieren von `eksctl` finden Sie unter [Installation](https://eksctl.io/installation) in der `eksctl`-Dokumentation. HINWEIS: Dieses Verfahren funktioniert nur für Cluster, die mit `eksctl` erstellt wurden.

1. Kopieren Sie den folgenden Inhalt auf Ihr Gerät. Ersetzen Sie *my-cluster* mit dem Namen Ihres Clusters. Der Name darf nur alphanumerische Zeichen (wobei die Groß- und Kleinschreibung beachtet werden muss) und Bindestriche enthalten. Es muss mit einem alphanumerischen Zeichen beginnen und darf nicht länger als 100 Zeichen sein. Der Name muss innerhalb der AWS Region und des AWS Kontos, in dem Sie den Cluster erstellen, eindeutig sein. Ersetzen Sie *ng-bottlerocket* durch einen Namen für Ihre Knotengruppe. Der Name der Knotengruppe darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten. Um die Bereitstellung auf Arm-Instances durchzuführen, ersetzen Sie *m5.large* durch einen Arm-Instance-Typ. Ersetzen Sie *my-ec2-keypair-name* mit dem Namen eines Amazon-EC2-SSH-Schlüsselpaars ein, das Sie für die Verbindung über SSH in Ihre Arbeitsknoten verwenden können, nachdem sie gestartet wurden. Wenn Sie noch kein Amazon-EC2-Schlüsselpaar haben, können Sie eines in der AWS-Managementkonsole erstellen. Weitere Informationen finden Sie unter [Amazon-EC2-Schlüsselpaare](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) im *Amazon-EC2-Benutzerhandbuch*. Ersetzen Sie alle verbleibenden Beispielwerte durch Ihre eigenen Werte. Nachdem Sie das Ersetzen vorgenommen haben, führen Sie den geänderten Befehl aus, um die `bottlerocket.yaml`-Datei zu erstellen.

   Wenn Sie einen Arm Amazon EC2 EC2-Instance-Typ angeben, lesen Sie AMIs vor der Bereitstellung die Überlegungen im für [Amazon EKS optimierten Arm Amazon Linux](eks-optimized-ami.md#arm-ami). Anweisungen zur Bereitstellung mit einem benutzerdefinierten AMI finden Sie in der Dokumentation unter [Building Bottlerocket](https://github.com/bottlerocket-os/bottlerocket/blob/develop/BUILDING.md) on GitHub und [Custom AMI support](https://eksctl.io/usage/custom-ami-support/). `eksctl` Um eine verwaltete Knotengruppe bereitzustellen, stellen Sie ein benutzerdefiniertes AMI mithilfe einer Startvorlage bereit. Weitere Informationen finden Sie unter [Verwaltete Knoten mit Startvorlagen anpassen](launch-templates.md).
**Wichtig**  
Um eine Knotengruppe in AWS Outposts-, AWS Wavelength- oder AWS Local Zone-Subnetzen bereitzustellen, übergeben Sie beim Erstellen des Clusters keine AWS Outposts-, AWS Wavelength- oder AWS Local Zone-Subnetze. Sie müssen die Subnetze im folgenden Beispiel angeben. Weitere Informationen finden Sie unter [Verwenden von Config-Dateien](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) und im [Config-Datei-Schema](https://eksctl.io/usage/schema/) in der `eksctl`-Dokumentation. Ersetzen Sie es *region-code* durch die AWS Region, in der sich Ihr Cluster befindet.

   ```
   cat >bottlerocket.yaml <<EOF
   ---
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   
   metadata:
     name: my-cluster
     region: region-code
     version: '1.35'
   
   iam:
     withOIDC: true
   
   nodeGroups:
     - name: ng-bottlerocket
       instanceType: m5.large
       desiredCapacity: 3
       amiFamily: Bottlerocket
       ami: auto-ssm
       iam:
          attachPolicyARNs:
             - arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy
             - arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
             - arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
             - arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
       ssh:
           allow: true
           publicKeyName: my-ec2-keypair-name
   EOF
   ```

1. Stellen Sie den Treiber mit dem folgenden Befehl bereit.

   ```
   eksctl create nodegroup --config-file=bottlerocket.yaml
   ```

   Eine Beispielausgabe sieht wie folgt aus.

   Mehrere Zeilen werden ausgegeben, während die Knoten erstellt werden. Die letzte Ausgabezeile ähnelt der folgenden Beispielzeile.

   ```
   [✔]  created 1 nodegroup(s) in cluster "my-cluster"
   ```

1. (Optional) Erstellen eines Kubernetes[Persistenter](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)auf einem Bottlerocket-Knoten mit dem[Amazon-EBS-CSI-Plugin](https://github.com/kubernetes-sigs/aws-ebs-csi-driver). Der standardmäßige Amazon-EBS-Treiber basiert auf Dateisystem-Tools, die nicht in Bottlerocket enthalten sind. Weitere Informationen zur Erstellung einer Speicherklasse mit dem Treiber finden Sie unter [Kubernetes-Volume-Speicher mit Amazon EBS verwenden](ebs-csi.md).

1. (Optional) Standardmäßig setzt `kube-proxy` den Kernelparameter `nf_conntrack_max` auf einen Standardwert, der sich von dem unterscheiden kann, was Bottlerocket ursprünglich beim Booten festgelegt hat. Um die [Standardeinstellung](https://github.com/bottlerocket-os/bottlerocket-core-kit/blob/develop/packages/release/release-sysctl.conf) von Bottlerocket beizubehalten, bearbeiten Sie die `kube-proxy`-Konfiguration im folgenden Befehl.

   ```
   kubectl edit -n kube-system daemonset kube-proxy
   ```

   Fügen Sie `--conntrack-max-per-core` und `--conntrack-min` zu den `kube-proxy`-Argumenten im folgenden Beispiel hinzu. Eine Einstellung von`0`impliziert keine Änderung.

   ```
         containers:
         - command:
           - kube-proxy
           - --v=2
           - --config=/var/lib/kube-proxy-config/config
           - --conntrack-max-per-core=0
           - --conntrack-min=0
   ```

1. (Optional) Bereitstellen einer[-Beispielanwendung](sample-deployment.md), um Ihre Bottlerocket-Knoten zu testen.

1. Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:
   + Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.
   + Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 EC2-Instance-Metadaten-Service (IMDS), z. B. zum Abrufen der aktuellen Region. AWS 

   Weitere Informationen finden Sie unter [Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Selbstverwaltete Microsoft-Windows-Knoten erstellen
<a name="launch-windows-workers"></a>

Dieses Thema beschreibt Hinweise zum Starten von Auto-Scaling-Gruppen von -Windows-Knoten, die mit Ihrem Amazon-EKS-Cluster registriert sind. Nachdem die Knoten dem Cluster beigetreten sind, können Sie Kubernetes-Anwendungen darin bereitstellen.

**Wichtig**  
Amazon-EKS-Worker-Knoten sind Standard-Amazon-EC2-Instances und werden Ihnen basierend auf normalen Amazon-EC2-Instance-Preisen berechnet. Weitere Informationen dazu finden Sie unter [Amazon EC2 – Preise](https://aws.amazon.com/ec2/pricing/).
Sie können Windows-Knoten in erweiterten Amazon EKS-Clustern auf AWS Outposts starten, aber Sie können sie nicht in lokalen Clustern auf AWS Outposts starten. Weitere Informationen finden Sie unter [Bereitstellung von Amazon EKS On-Premises mit AWS Outposts](eks-outposts.md).

Aktivieren Sie den Windows-Support für Ihren Cluster. Es wird empfohlen, wichtige Überlegungen zu berücksichtigen, bevor Sie eine Windows-Knotengruppe starten. Weitere Informationen finden Sie unter [Windows-Support aktivieren](windows-support.md#enable-windows-support).

Sie können selbstverwaltete Windows-Knoten mit einer der folgenden Methoden starten:
+  [`eksctl`](#eksctl_create_windows_nodes) 
+  [AWS-Managementkonsole](#console_create_windows_nodes) 

## `eksctl`
<a name="eksctl_create_windows_nodes"></a>

 **Selbstverwaltete Windows-Knoten mithilfe von `eksctl` starten ** 

Bei diesem Verfahren wird davon ausgegangen, dass Sie `eksctl` installiert haben und dass Ihre `eksctl`-Version mindestens `0.215.0` ist. Sie können Ihre Version mit dem folgenden Befehl überprüfen.

```
eksctl version
```

Eine Installations- und Upgrade-Anleitung für `eksctl` finden Sie in der Dokumentation zu `eksctl` unter [Installation](https://eksctl.io/installation).

**Anmerkung**  
Dieses Verfahren funktioniert nur für Cluster, die mit `eksctl` erstellt wurden.

1. (Optional) Wenn die von **AmazonEKS\$1CNI\$1Policy** verwaltete IAM-Richtlinie (wenn Sie einen `IPv4` Cluster haben) oder die *AmazonEKS\$1CNI\$1IPv6\$1Policy* (die Sie [selbst erstellt](cni-iam-role.md#cni-iam-role-create-ipv6-policy) haben, wenn Sie einen `IPv6` Cluster haben) mit Ihrer [Amazon EKS-Knoten-IAM-Rolle verknüpft ist, empfehlen wir, sie stattdessen einer IAM-Rolle](create-node-role.md) zuzuweisen, die Sie dem Kubernetes-Servicekonto zuordnen. `aws-node` Weitere Informationen finden Sie unter [Konfiguration des Amazon-VPC-CNI-Plugins für die Verwendung von IRSA](cni-iam-role.md).

1. Bei diesem Verfahren wird davon ausgegangen, dass Sie einen bestehenden Cluster haben. Wenn Sie nicht über einen Amazon-EKS-Cluster und eine Amazon-Linux-Knotengruppe verfügen, zu der Sie eine Windows-Knotengruppe hinzufügen können, empfehlen wir Ihnen, [Erste Schritte mit Amazon EKS – `eksctl`](getting-started-eksctl.md) zu befolgen. Dieses Handbuch bietet eine vollständige Anleitung zum Erstellen eines Amazon-EKS-Clusters mit Amazon-Linux-Knoten.

   Erstellen Sie Ihre Knoten-Gruppe mit dem folgenden Befehl. Ersetzen *region-code* Sie es durch die Region, in der sich Ihr Cluster befindet. AWS Ersetzen Sie *my-cluster* mit Ihrem Clusternamen. Der Name darf nur alphanumerische Zeichen (wobei die Groß- und Kleinschreibung beachtet werden muss) und Bindestriche enthalten. Es muss mit einem alphanumerischen Zeichen beginnen und darf nicht länger als 100 Zeichen sein. Der Name muss innerhalb der AWS Region und des AWS Kontos, in dem Sie den Cluster erstellen, eindeutig sein. Ersetzen Sie *ng-windows* durch einen Namen für Ihre Knotengruppe. Der Name der Knotengruppe darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten. Sie können durch *2019* ersetzen`2022`, um Windows Server 2022 oder Windows Server 2025 `2025` zu verwenden. Ersetzen Sie die restlichen Beispielwerte durch Ihre eigenen Werte.
**Wichtig**  
Um eine Knotengruppe in AWS Outposts-, AWS Wavelength- oder AWS Local Zone-Subnetzen bereitzustellen, übergeben Sie die Subnetze AWS Outposts, Wavelength oder Local Zone nicht, wenn Sie den Cluster erstellen. Erstellen Sie die Knotengruppe mit einer Konfigurationsdatei, in der Sie die Subnetze AWS Outposts, Wavelength oder Local Zone angeben. Weitere Informationen finden Sie unter [Verwenden von Config-Dateien](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) und im [Config-Datei-Schema](https://eksctl.io/usage/schema/) in der `eksctl`-Dokumentation.

   ```
   eksctl create nodegroup \
       --region region-code \
       --cluster my-cluster \
       --name ng-windows \
       --node-type t2.large \
       --nodes 3 \
       --nodes-min 1 \
       --nodes-max 4 \
       --managed=false \
       --node-ami-family WindowsServer2019FullContainer
   ```
**Anmerkung**  
Wenn Arbeitsknoten dem Cluster nicht beitreten können, finden Sie weitere Informationen unter [Knoten können nicht mit dem Cluster verknüpft werden](troubleshooting.md#worker-node-fail) im Handbuch zur Fehlerbehebung.
Geben Sie den folgenden Befehl ein, um die verfügbaren Optionen für `eksctl`-Befehle anzuzeigen.  

     ```
     eksctl command -help
     ```

   Eine Beispielausgabe sieht wie folgt aus. Mehrere Zeilen werden ausgegeben, während die Knoten erstellt werden. Die letzte Ausgabezeile ähnelt der folgenden Beispielzeile.

   ```
   [✔]  created 1 nodegroup(s) in cluster "my-cluster"
   ```

1. (Optional) [Eine Beispielanwendung in Linux bereitstellen](sample-deployment.md) Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster und Ihre Windows-Worker-Knoten zu testen.

1. Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:
   + Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.
   + Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 EC2-Instance-Metadaten-Service (IMDS), z. B. zum Abrufen der aktuellen Region. AWS 

   Weitere Informationen finden Sie unter [Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

## AWS-Managementkonsole
<a name="console_create_windows_nodes"></a>

 **Voraussetzungen** 
+ Ein bestehender Amazon-EKS-Cluster und eine Linux-Knotengruppe. Wenn Sie nicht über diese Ressourcen verfügen, empfehlen wir Ihnen, diese mithilfe einer unserer Anleitungen in [Erste Schritte mit Amazon EKS](getting-started.md) zu erstellen. Diese Anleitungen beschreiben, wie Sie einen Amazon-EKS-Cluster mit Linux-Knoten erstellen.
+ Eine vorhandene VPC und eine Sicherheitsgruppe, die die Voraussetzungen für einen Amazon-EKS-Cluster erfüllen. Weitere Informationen erhalten Sie unter [Amazon-EKS-Netzwerkanforderungen für VPC und Subnetze](network-reqs.md) und [Anforderungen der Amazon-EKS-Sicherheitsgruppe für Cluster anzeigen](sec-group-reqs.md). Die Guides in [Erste Schritte mit Amazon EKS](getting-started.md) erstellen eine VPC, die den Anforderungen entspricht. Alternativ können Sie auch den Abschnitt [Erstellen einer Amazon VPC für Ihren Amazon-EKS-Cluster](creating-a-vpc.md) befolgen, um manuell eine VPC zu erstellen.
+ Ein vorhandener Amazon-EKS-Cluster, der eine VPC und eine Sicherheitsgruppe verwendet, die die Voraussetzungen eines Amazon-EKS-Clusters erfüllt. Weitere Informationen finden Sie unter [Amazon-EKS-Cluster erstellen](create-cluster.md). Wenn Sie Subnetze in der AWS Region haben, in der Sie AWS Outposts, AWS Wavelength oder AWS Local Zones aktiviert haben, dürfen diese Subnetze bei der Erstellung des Clusters nicht weitergegeben worden sein.

 **Schritt 1: Selbstverwaltete Windows-Knoten mit der AWS-Managementkonsole starten ** 

1. Warten Sie, bis der Status des Clusters als `ACTIVE` angezeigt wird. Wenn Sie Ihre Knoten starten, bevor der Cluster aktiv ist, werden die Knoten nicht mit dem Cluster registriert und Sie müssen sie neu starten.

1. Öffnen Sie die [AWS CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation/). 

1. Wählen Sie **Stack erstellen** aus.

1. Wählen Sie unter **Vorlage angeben** die Option **Amazon-S3-URL** aus.

1. Kopieren Sie die folgende URL und fügen Sie sie in die **Amazon S3 URL** (Amazon-S3-URL) ein.

   ```
   https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2023-02-09/amazon-eks-windows-nodegroup.yaml
   ```

1. Wählen Sie zweimal **Next** (Weiter) aus.

1. Füllen Sie auf der Seite **Quick create stack** (Stack schnell erstellen) die folgenden Parameter entsprechend aus:
   +  **Stack-Name**: Wählen Sie einen Stack-Namen für Ihren Stack. AWS CloudFormation Sie können ihn beispielsweise `my-cluster-nodes` nennen.
   +  **ClusterName**: Geben Sie den Namen ein, den Sie bei der Erstellung Ihres Amazon EKS-Clusters verwendet haben.
**Wichtig**  
Dieser Name muss genau mit dem Namen übereinstimmen, den Sie in [Schritt 1: Amazon-EKS-Cluster erstellen](getting-started-console.md#eks-create-cluster) verwendet haben. Andernfalls können Ihre Knoten dem Cluster nicht beitreten.
   +  **ClusterControlPlaneSecurityGroup**: Wählen Sie die Sicherheitsgruppe aus der AWS CloudFormation Ausgabe aus, die Sie bei der Erstellung Ihrer [VPC](creating-a-vpc.md) generiert haben. Die folgenden Schritte zeigen eine Methode zum Abrufen der entsprechenden Gruppe.

     1. Öffnen Sie die [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

     1. Wählen Sie den Namen des Clusters.

     1. Wählen Sie die Registerkarte **Network (Network)** aus.

     1. Verwenden Sie den Wert **Zusätzliche Sicherheitsgruppen** als Referenz, wenn Sie aus der **ClusterControlPlaneSecurityGroup**Dropdownliste auswählen.
   +  **NodeGroupName**: Geben Sie einen Namen für Ihre Knotengruppe ein. Dieser Name kann zu einem späteren Zeitpunkt zum Identifizieren der Auto-Scaling-Knotengruppe verwendet werden, die für Ihre Knoten erstellt wurde. Der Name der Knotengruppe darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten.
   +  **NodeAutoScalingGroupMinSize**: Geben Sie die Mindestanzahl von Knoten ein, auf die Ihre Auto Scaling Scaling-Gruppe für Knoten skalieren kann.
   +  **NodeAutoScalingGroupDesiredCapacity**: Geben Sie die gewünschte Anzahl von Knoten ein, auf die bei der Erstellung Ihres Stacks skaliert werden soll.
   +  **NodeAutoScalingGroupMaxSize**: Geben Sie die maximale Anzahl von Knoten ein, auf die Ihre Auto Scaling Scaling-Gruppe für Knoten skalieren kann.
   +  **NodeInstanceType**: Wählen Sie einen Instance-Typ für Ihre Knoten. Weitere Informationen finden Sie unter [Auswahl eines optimalen Amazon-EC2-Knoten-Instance-Typs](choosing-instance-type.md).
**Anmerkung**  
[Die unterstützten Instance-Typen für die neueste Version des [Amazon VPC CNI-Plug-ins für Kubernetes sind in vpc\$1ip\$1resource\$1limit.go](https://github.com/aws/amazon-vpc-cni-k8s) on aufgeführt.](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/pkg/vpc/vpc_ip_resource_limit.go) GitHub Möglicherweise müssen Sie Ihre CNI-Version aktualisieren, um die neuesten unterstützten Instance-Typen zu nutzen. Weitere Informationen finden Sie unter [Pods mit dem Amazon VPC CNI zuweisen IPs](managing-vpc-cni.md).
   +  **NodeImageIdSSMParam**: Vorab mit dem Amazon EC2 Systems Manager Manager-Parameter der aktuell empfohlenen Amazon EKS-optimierten Windows Core AMI-ID gefüllt. Um die Vollversion von Windows zu verwenden, ersetzen Sie *Core* durch `Full`.
   +  **NodeImageId**: (Optional) Wenn Sie Ihr eigenes benutzerdefiniertes AMI (anstelle eines für Amazon EKS optimierten AMI) verwenden, geben Sie eine Knoten-AMI-ID für Ihre AWS Region ein. Wenn Sie einen Wert für dieses Feld angeben, überschreibt dieser alle Werte in dem **NodeImageIdSSMParam**Feld.
   +  **NodeVolumeSize**: Geben Sie eine Root-Volume-Größe für Ihre Knoten in GiB an.
   +  **KeyName**: Geben Sie den Namen eines Amazon EC2 SSH-Schlüsselpaars ein, mit dem Sie sich nach dem Start über SSH mit Ihren Knoten verbinden können. Wenn Sie noch kein Amazon-EC2-Schlüsselpaar haben, können Sie eines in der AWS-Managementkonsole erstellen. Weitere Informationen finden Sie unter [Amazon-EC2-Schlüsselpaare](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html) im *Amazon-EC2-Benutzerhandbuch*.
**Anmerkung**  
Wenn Sie hier kein key pair angeben, kann der AWS CloudFormation Stack nicht erstellt werden.
   +  **BootstrapArguments**: Geben Sie alle optionalen Argumente an, die an das Node-Bootstrap-Skript übergeben werden sollen, z. B. zusätzliche `kubelet` Argumente mit`-KubeletExtraArgs`.
   +  **Deaktivieren IMDSv1**: Standardmäßig unterstützt jeder Knoten den Instanz-Metadatendienst Version 1 (IMDSv1) und IMDSv2. Sie können deaktivieren IMDSv1. Um zu verhindern, dass future Knoten und Pods in der Knotengruppe verwendet werden MDSv1, setzen **Sie Disable IMDSv1** auf **true**. Weitere Informationen finden Sie unter [Konfiguration des Instance-Metadatenservice](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html).
   +  **VpcId**: Wählen Sie die ID für die [VPC](creating-a-vpc.md) aus, die Sie erstellt haben.
   +  **NodeSecurityGroups**: Wählen Sie die Sicherheitsgruppe aus, die für Ihre Linux-Knotengruppe erstellt wurde, als Sie Ihre [VPC](creating-a-vpc.md) erstellt haben. Wenn Ihren Linux-Knoten mehr als eine Sicherheitsgruppe angehängt ist, geben Sie alle an. Dies z. B., wenn die Linux-Knotengruppe mit `eksctl` erstellt wurde.
   +  **Subnets** (Subnetze): Wählen Sie die Subnetze aus, die Sie erstellt haben. Wenn Sie Ihre VPC gemäß den Schritten unter [Erstellen einer Amazon VPC für Ihren Amazon-EKS-Cluster](creating-a-vpc.md) erstellt haben, geben Sie nur die privaten Subnetze innerhalb der VPC an, in denen Ihre Knoten gestartet werden sollen.
**Wichtig**  
Wenn es sich bei einem oder einigen der Subnetze um öffentliche Subnetze handelt, muss die Einstellung für die automatische Zuweisung öffentlicher IP-Adressen aktiviert sein. Wenn die Einstellung für das öffentliche Subnetz nicht aktiviert ist, wird allen Knoten, die Sie in diesem öffentlichen Subnetz bereitstellen, keine öffentliche IP-Adresse zugewiesen und sie können nicht mit dem Cluster oder anderen Diensten kommunizieren. AWS Wenn das Subnetz vor dem 26. März 2020 mithilfe einer der [Amazon AWS CloudFormation EKS-VPC-Vorlagen](creating-a-vpc.md) oder mithilfe `eksctl` von bereitgestellt wurde, ist die automatische Zuweisung öffentlicher IP-Adressen für öffentliche Subnetze deaktiviert. Informationen zum Aktivieren der Zuweisung öffentlicher IP-Adressen für ein Subnetz finden Sie unter [Ändern des Attributs für die öffentliche IPv4 Adressierung](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip) für Ihr Subnetz. Wenn der Knoten in einem privaten Subnetz bereitgestellt wird, kann er über ein NAT-Gateway mit dem Cluster und anderen AWS Diensten kommunizieren.
Wenn die Subnetze keinen Internetzugang haben, stellen Sie sicher, dass Sie die Überlegungen und zusätzlichen Schritte unter [Bereitstellen privater Cluster mit eingeschränktem Internetzugang](private-clusters.md) kennen.
Wenn Sie AWS Outposts-, Wavelength- oder Local Zone-Subnetze auswählen, dürfen die Subnetze bei der Erstellung des Clusters nicht übergeben worden sein.

1. Bestätigen Sie, dass der Stack IAM-Ressourcen erstellen kann, und wählen Sie dann **Create stack** (Stack erstellen) aus.

1. Wenn Ihr Stack fertig erstellt wurde, wählen Sie ihn in der Konsole aus und klicken Sie auf **Outputs** (Ausgaben).

1. Notieren Sie das **NodeInstanceRole**für die Knotengruppe, die erstellt wurde. Sie benötigen diese, wenn Sie Ihre Amazon-EKS-Windows-Knoten konfigurieren.

 **Schritt 2: Knoten, die Ihrem Cluster beitreten sollen, aktivieren** 

1. Überprüfen Sie, ob Sie bereits über eine `aws-auth` `ConfigMap` verfügen.

   ```
   kubectl describe configmap -n kube-system aws-auth
   ```

1. Wenn eine `aws-auth` `ConfigMap` angezeigt wird, aktualisieren Sie sie nach Bedarf.

   1. Öffnen Sie `ConfigMap` zum Bearbeiten.

      ```
      kubectl edit -n kube-system configmap/aws-auth
      ```

   1. Fügen Sie nach Bedarf neue `mapRoles`-Einträge hinzu. Stellen Sie die `rolearn` Werte auf die **NodeInstanceRole**Werte ein, die Sie in den vorherigen Verfahren aufgezeichnet haben.

      ```
      [...]
      data:
        mapRoles: |
      - rolearn: <ARN of linux instance role (not instance profile)>
            username: system:node:{{EC2PrivateDNSName}}
            groups:
              - system:bootstrappers
              - system:nodes
          - rolearn: <ARN of windows instance role (not instance profile)>
            username: system:node:{{EC2PrivateDNSName}}
            groups:
              - system:bootstrappers
              - system:nodes
              - eks:kube-proxy-windows
      [...]
      ```

   1. Speichern Sie die Datei und beenden Sie den Text-Editor.

1. Wenn die Fehlermeldung `Error from server (NotFound): configmaps "aws-auth" not found` angezeigt wird, wenden Sie die standardmäßige `ConfigMap` an.

   1. Laden Sie die Konfigurationszuordnung herunter.

      ```
      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm-windows.yaml
      ```

   1. Stellen Sie in der `aws-auth-cm-windows.yaml` Datei die `rolearn` Werte auf die entsprechenden **NodeInstanceRole**Werte ein, die Sie in den vorherigen Verfahren aufgezeichnet haben. Hierzu können Sie einen Texteditor verwenden oder die Beispielwerte ersetzen und den folgenden Befehl ausführen:

      ```
      sed -i.bak -e 's|<ARN of linux instance role (not instance profile)>|my-node-linux-instance-role|' \
          -e 's|<ARN of windows instance role (not instance profile)>|my-node-windows-instance-role|' aws-auth-cm-windows.yaml
      ```
**Wichtig**  
Ändern Sie keine weiteren Zeilen in dieser Datei.
Verwenden Sie nicht dieselbe IAM-Rolle sowohl für Windows- als auch für Linux-Knoten.

   1. Wenden Sie die Konfiguration an. Die Ausführung dieses Befehls kann einige Minuten dauern.

      ```
      kubectl apply -f aws-auth-cm-windows.yaml
      ```

1. Sehen Sie sich den Status Ihrer Knoten an und warten Sie, bis diese in den `Ready`-Status eintreten.

   ```
   kubectl get nodes --watch
   ```

   Geben Sie `Ctrl`\$1`C` ein, um zum Shell-Prompt zurückzukehren.
**Anmerkung**  
Wenn Sie Autorisierungs- oder Ressourcenfehler erhalten, finden Sie weitere Informationen unter [Nicht autorisiert oder Zugriff verweigert (`kubectl`)](troubleshooting.md#unauthorized) im Thema zur Fehlerbehebung.

   Sollten Knoten nicht in den Cluster aufgenommen werden können, finden Sie weitere Informationen unter [Knoten können nicht mit dem Cluster verknüpft werden](troubleshooting.md#worker-node-fail) im Kapitel zur Fehlerbehebung.

 **Schritt 3: Zusätzliche Aktionen** 

1. (Optional) [Eine Beispielanwendung in Linux bereitstellen](sample-deployment.md) Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster und Ihre Windows-Worker-Knoten zu testen.

1. (Optional) Wenn die von **AmazonEKS\$1CNI\$1Policy** verwaltete IAM-Richtlinie (wenn Sie einen `IPv4` Cluster haben) oder die *AmazonEKS\$1CNI\$1IPv6\$1Policy* (die Sie [selbst erstellt](cni-iam-role.md#cni-iam-role-create-ipv6-policy) haben, wenn Sie einen `IPv6` Cluster haben) mit Ihrer [Amazon EKS-Knoten-IAM-Rolle verknüpft ist, empfehlen wir, sie stattdessen einer IAM-Rolle](create-node-role.md) zuzuweisen, die Sie dem Kubernetes-Servicekonto zuordnen. `aws-node` Weitere Informationen finden Sie unter [Konfiguration des Amazon-VPC-CNI-Plugins für die Verwendung von IRSA](cni-iam-role.md).

1. Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:
   + Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.
   + Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 EC2-Instance-Metadaten-Service (IMDS), z. B. zum Abrufen der aktuellen Region. AWS 

   Weitere Informationen finden Sie unter [Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Selbstverwaltete Ubuntu Linux-Knoten erstellen
<a name="launch-node-ubuntu"></a>

**Anmerkung**  
Verwaltete Knotengruppen bieten möglicherweise einige Vorteile für Ihren Anwendungsfall. Weitere Informationen finden Sie unter [Vereinfachung des Knotenlebenszyklus mit verwalteten Knotengruppen](managed-node-groups.md).

In diesem Thema wird beschrieben, wie Sie Auto Scaling-Gruppen von Knoten von [Ubuntu in Amazon Elastic Kubernetes Service (EKS)](https://cloud-images.ubuntu.com/aws-eks/) oder Knoten von [Ubuntu Pro in Amazon Elastic Kubernetes Service (EKS)](https://ubuntu.com/blog/ubuntu-pro-for-eks-is-now-generally-available) starten, die bei Ihrem Amazon-EKS-Cluster registriert sind. Ubuntu und Ubuntu Pro für EKS basieren auf dem offiziellen Ubuntu Minimal LTS, enthalten den benutzerdefinierten AWS Kernel, der gemeinsam mit EKS entwickelt wurde AWS, und wurden speziell für EKS gebaut. Ubuntu Pro bietet zusätzliche Sicherheit durch die Unterstützung erweiterter EKS-Supportzeiträume, Kernel-Live-Patches, FIPS-Konformität und die Möglichkeit, eine unbegrenzte Anzahl von Pro-Containern auszuführen.

Nachdem die Knoten dem Cluster beigetreten sind, können Sie darin containerisierte Anwendungen bereitstellen. Weitere Informationen finden Sie in der Dokumentation zu [Ubuntu in AWS](https://documentation.ubuntu.com/aws/en/latest/) und zum [Benutzerdefinierten AMI-Support](https://eksctl.io/usage/custom-ami-support/) in der `eksctl`-Dokumentation.

**Wichtig**  
Amazon-EKS-Worker-Knoten sind Standard-Amazon-EC2-Instances und werden Ihnen basierend auf normalen Amazon-EC2-Instance-Preisen berechnet. Weitere Informationen dazu finden Sie unter [Amazon EC2 – Preise](https://aws.amazon.com/ec2/pricing/).
Sie können Ubuntu-Knoten in erweiterten Amazon EKS-Clustern auf AWS Outposts starten, aber Sie können sie nicht in lokalen Clustern auf AWS Outposts starten. Weitere Informationen finden Sie unter [Bereitstellung von Amazon EKS On-Premises mit AWS Outposts](eks-outposts.md).
Sie können auf Amazon-EC2-Instances mit `x86`- oder Arm -Prozessoren bereitstellen. Bei Instances mit Inferentia-Chips muss jedoch möglicherweise zuerst das [Neuron SDK](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/) installiert werden.

Für diesen Vorgang ist `eksctl` Version `0.215.0` oder höher erforderlich. Sie können Ihre -Version mit dem folgenden Befehl überprüfen:

```
eksctl version
```

Anweisungen zum Installieren oder Aktualisieren von `eksctl` finden Sie unter [Installation](https://eksctl.io/installation) in der `eksctl`-Dokumentation. HINWEIS: Dieses Verfahren funktioniert nur für Cluster, die mit `eksctl` erstellt wurden.

1. Kopieren Sie den folgenden Inhalt auf Ihr Gerät. Ersetzen Sie `my-cluster` mit dem Namen Ihres Clusters. Der Name darf nur alphanumerische Zeichen (wobei die Groß- und Kleinschreibung beachtet werden muss) und Bindestriche enthalten. Es muss mit einem alphabetischen Zeichen beginnen und darf nicht mehr als 100 Zeichen umfassen. Ersetzen Sie `ng-ubuntu` durch einen Namen für Ihre Knotengruppe. Der Name der Knotengruppe darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten. Um die Bereitstellung auf Arm-Instances durchzuführen, ersetzen Sie `m5.large` durch einen Arm-Instance-Typ. Ersetzen Sie `my-ec2-keypair-name` mit dem Namen eines Amazon-EC2-SSH-Schlüsselpaars ein, das Sie für die Verbindung über SSH in Ihre Arbeitsknoten verwenden können, nachdem sie gestartet wurden. Wenn Sie noch kein Amazon-EC2-Schlüsselpaar haben, können Sie eines in der AWS-Managementkonsole erstellen. Weitere Informationen finden Sie unter [Amazon-EC2-Schlüsselpaare](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) im Amazon-EC2-Benutzerhandbuch. Ersetzen Sie alle verbleibenden Beispielwerte durch Ihre eigenen Werte. Nachdem Sie das Ersetzen vorgenommen haben, führen Sie den geänderten Befehl aus, um die `ubuntu.yaml`-Datei zu erstellen.
**Wichtig**  
Um eine Knotengruppe in AWS Outposts-, AWS Wavelength- oder AWS Local Zone-Subnetzen bereitzustellen, übergeben Sie beim Erstellen des Clusters keine AWS Outposts-, AWS Wavelength- oder AWS Local Zone-Subnetze. Sie müssen die Subnetze im folgenden Beispiel angeben. Weitere Informationen finden Sie unter [Verwenden von Config-Dateien](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) und im [Config-Datei-Schema](https://eksctl.io/usage/schema/) in der `eksctl`-Dokumentation. Ersetzen Sie es *region-code* durch die AWS Region, in der sich Ihr Cluster befindet.

   ```
   cat >ubuntu.yaml <<EOF
   ---
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   
   metadata:
     name: my-cluster
     region: region-code
     version: '1.35'
   
   iam:
     withOIDC: true
   
   nodeGroups:
     - name: ng-ubuntu
       instanceType: m5.large
       desiredCapacity: 3
       amiFamily: Ubuntu2204
       iam:
          attachPolicyARNs:
             - arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy
             - arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
             - arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
             - arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
       ssh:
           allow: true
           publicKeyName: my-ec2-keypair-name
   EOF
   ```

   Um eine Ubuntu Pro-Knotengruppe zu erstellen, ändern Sie einfach den `amiFamily`-Wert in `UbuntuPro2204`.

1. Stellen Sie den Treiber mit dem folgenden Befehl bereit.

   ```
   eksctl create nodegroup --config-file=ubuntu.yaml
   ```

   Eine Beispielausgabe sieht wie folgt aus.

   Mehrere Zeilen werden ausgegeben, während die Knoten erstellt werden. Die letzte Ausgabezeile ähnelt der folgenden Beispielzeile.

   ```
   [✔]  created 1 nodegroup(s) in cluster "my-cluster"
   ```

1. (Optional) Stellen Sie eine [Beispielanwendung](sample-deployment.md) bereit, um Ihre Ubuntu-Knoten zu testen.

1. Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:
   + Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.
   + Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 EC2-Instance-Metadaten-Service (IMDS), z. B. zum Abrufen der aktuellen Region. AWS 

   Weitere Informationen finden Sie unter [Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Selbstverwaltete Knoten für Ihren Cluster aktualisieren
<a name="update-workers"></a>

Wenn eine neue Amazon-EKS-optimierte AMI veröffentlicht wird, ziehen Sie in Betracht, die Knoten in Ihrer selbstverwalteten Knoten-Gruppe durch die neue AMI zu ersetzen. Ebenso gilt, dass Sie bei einer Aktualisierung der Kubernetes-Version für Ihren Amazon-EKS-Cluster auch die Worker-Knoten aktualisieren, um Knoten mit derselben Kubernetes-Version zu verwenden.

**Wichtig**  
In diesem Thema werden Worker-Knotenaktualisierungen für selbstverwaltete Knotengruppen behandelt. Wenn Sie [verwaltete Knotengruppen](managed-node-groups.md) verwenden, lesen Sie [Eine verwaltete Knotengruppe für Ihren Cluster aktualisieren](update-managed-node-group.md).

Es gibt zwei grundlegende Möglichkeiten, selbstverwaltete Knotengruppen in Ihren Clustern zu aktualisieren, um ein neues AMI zu verwenden:

 ** [Anwendungen zu einer neuen Knotengruppe migrieren](migrate-stack.md) **   
Erstellen Sie eine neue Worker-Knotengruppe und migrieren Sie Ihre Pods zu dieser Gruppe. Die Migration zu einer neuen Knotengruppe ist sinnvoller als die Aktualisierung der AMI-ID in einem bestehenden AWS-CloudFormation-Stack. Dies liegt daran, dass der Migrationsprozess die alte Knotengruppe als `NoSchedule` [verunreinigt](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) und die Knoten leert, nachdem ein neuer Stack bereit ist, die vorhandene Pod-Workload zu akzeptieren.

 ** [AWS-CloudFormation-Knoten-Stack aktualisieren](update-stack.md) **   
Aktualisieren Sie den AWS-CloudFormation-Stack für eine vorhandene Worker-Knotengruppe, um das neue AMI zu verwenden. Diese Methode wird nicht bei Knoten-Gruppen unterstützt, die mit `eksctl` erstellt wurden.

# Anwendungen zu einer neuen Knotengruppe migrieren
<a name="migrate-stack"></a>

Dieses Thema beschreibt Hinweise zum Erstellen einer neuen Knoten-Gruppe, zum ordnungsgemäßen Migrieren Ihrer vorhandenen Anwendungen zur neuen Gruppe und zum Entfernen der alten Knoten-Gruppe aus Ihrem Cluster. Sie können zu einer neuen Knotengruppe migrieren, indem Sie `eksctl` oder AWS-Managementkonsole benutzen.
+  [`eksctl`](#eksctl_migrate_apps) 
+  [AWS-Managementkonsole und AWS CLI](#console_migrate_apps) 

## `eksctl`
<a name="eksctl_migrate_apps"></a>

 **Migration Ihrer Anwendungen zu einer neuen Knotengruppe mit `eksctl` ** 

Weitere Informationen zur Verwendung von eksctl finden Sie unter [Upgrades von nicht verwalteten Knotengruppen](https://eksctl.io/usage/nodegroup-unmanaged/) in der `eksctl`-Dokumentation.

Für diesen Vorgang ist `eksctl` Version `0.215.0` oder höher erforderlich. Sie können Ihre -Version mit dem folgenden Befehl überprüfen:

```
eksctl version
```

Eine Installations- und Upgrade-Anleitung für `eksctl` finden Sie in der Dokumentation zu `eksctl` unter [Installation](https://eksctl.io/installation).

**Anmerkung**  
Dieses Verfahren funktioniert nur für Cluster, die mit `eksctl` erstellt wurden.

1. Rufen Sie den Namen Ihrer vorhandenen Knotengruppen ab und ersetzen Sie *my-cluster* durch Ihren Clusternamen.

   ```
   eksctl get nodegroups --cluster=my-cluster
   ```

   Eine Beispielausgabe sieht wie folgt aus.

   ```
   CLUSTER      NODEGROUP          CREATED               MIN SIZE      MAX SIZE     DESIRED CAPACITY     INSTANCE TYPE     IMAGE ID
   default      standard-nodes   2019-05-01T22:26:58Z  1             4            3                    t3.medium         ami-05a71d034119ffc12
   ```

1. Starten Sie eine neue Knotengruppe mit `eksctl` mit dem folgenden Befehl. Ersetzen Sie im Befehl jedes *example value* durch Ihre eigenen Werte. Die Versionsnummer darf nicht höher als die Kubernetes-Version für Ihre Steuerebene sein. Außerdem darf sie nicht mehr als zwei Nebenversionen älter sein als die Kubernetes-Version für Ihre Steuerebene. Es wird empfohlen, dieselbe Version wie die Steuerebene zu verwenden.

   Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:
   + Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.
   + Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 EC2-Instance-Metadaten-Service (IMDS), z. B. zum Abrufen der aktuellen Region. AWS 

     Weitere Informationen finden Sie unter [Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

     Um den Pod-Zugriff auf IMDS zu blockieren, fügen Sie dem folgenden Befehl die Option `--disable-pod-imds` hinzu.
**Anmerkung**  
Weitere verfügbare Flags und deren Beschreibungen finden Sie unterhttps://eksctl.io/.

   ```
   eksctl create nodegroup \
     --cluster my-cluster \
     --version 1.35 \
     --name standard-nodes-new \
     --node-type t3.medium \
     --nodes 3 \
     --nodes-min 1 \
     --nodes-max 4 \
     --managed=false
   ```

1. Wenn der vorherige Befehl abgeschlossen ist, bestätigen Sie mit folgendem Befehl, dass alle Ihre Worker-Knoten den `Ready`-Status erreicht haben:

   ```
   kubectl get nodes
   ```

1. Löschen Sie die ursprüngliche Knotengruppe mit dem folgenden Befehl. Ersetzen Sie im Befehl alle *example value* mit Ihren Cluster- und Knotengruppennamen:

   ```
   eksctl delete nodegroup --cluster my-cluster --name standard-nodes-old
   ```

## AWS-Managementkonsole und AWS CLI
<a name="console_migrate_apps"></a>

 **Migrieren Sie Ihre Anwendungen mit der AWS-Managementkonsole und AWS CLI auf eine neue Knotengruppe** 

1. Starten Sie eine neue Knotengruppe, indem Sie die unter [Erstellen selbstverwalteter Amazon Linux-Knoten](launch-workers.md) beschriebenen Schritte befolgen.

1. Wenn Ihr Stack fertig erstellt wurde, wählen Sie ihn in der Konsole aus und klicken Sie auf **Outputs** (Ausgaben).

1.  Notieren Sie das **NodeInstanceRole**für die Knotengruppe, die erstellt wurde. Sie benötigen diese Informationen zum Hinzufügen der neuen Amazon EKS-Knoten zu Ihrem Cluster.
**Anmerkung**  
Wenn Sie der IAM-Rolle Ihrer alten Knotengruppen zusätzliche IAM-Richtlinien angefügt haben, dann sollten Sie die gleichen Richtlinien auch der IAM-Rolle Ihrer neuen Knotengruppe zuweisen, um diese Funktionalität für die neue Gruppe zu erhalten. Dies gilt für Sie, wenn Sie beispielsweise Berechtigungen für den Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler) hinzugefügt haben.

1. Aktualisieren Sie die Sicherheitsgruppen für beide Worker-Knoten-Gruppen, sodass sie miteinander kommunizieren können. Weitere Informationen finden Sie unter [Anforderungen der Amazon-EKS-Sicherheitsgruppe für Cluster anzeigen](sec-group-reqs.md).

   1. Notieren Sie die Sicherheitsgruppe IDs für beide Knotengruppen. Dies wird als **NodeSecurityGroup**Wert in den AWS CloudFormation Stack-Ausgaben angezeigt.

      Sie können die folgenden AWS CLI-Befehle verwenden, um die Sicherheitsgruppe IDs aus den Stack-Namen abzurufen. In diesen Befehlen `oldNodes` steht der AWS CloudFormation Stack-Name für Ihren älteren Knoten-Stack und `newNodes` der Name des Stacks, zu dem Sie migrieren. Ersetzen Sie jede *example value* durch Ihre eigenen Werte.

      ```
      oldNodes="old_node_CFN_stack_name"
      newNodes="new_node_CFN_stack_name"
      
      oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      ```

   1. Fügen Sie Regeln für eingehenden Datenverkehr für jede Worker-Knoten-Sicherheitsgruppe hinzu, sodass sie voneinander Datenverkehr annehmen können.

      Die folgenden AWS CLI-Befehle fügen jeder Sicherheitsgruppe Regeln für eingehenden Datenverkehr hinzu, die den gesamten Datenverkehr auf allen Protokollen der anderen Sicherheitsgruppe zulassen. Auf diese Weise können Pods in jeder Knoten-Gruppe miteinander kommunizieren, während Sie Ihr Workload zur neuen Gruppe migrieren.

      ```
      aws ec2 authorize-security-group-ingress --group-id $oldSecGroup \
      --source-group $newSecGroup --protocol -1
      aws ec2 authorize-security-group-ingress --group-id $newSecGroup \
      --source-group $oldSecGroup --protocol -1
      ```

1. Bearbeiten Sie die `aws-auth`-configmap, um die neue Worker-Knoten-Instance-Rolle in RBAC zuzuordnen.

   ```
   kubectl edit configmap -n kube-system aws-auth
   ```

   Fügen Sie einen neuen `mapRoles`-Eintrag für die neue Worker-Knoten-Gruppe hinzu.

   ```
   apiVersion: v1
   data:
     mapRoles: |
       - rolearn: ARN of instance role (not instance profile)
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes>
       - rolearn: arn:aws: iam::111122223333:role/nodes-1-16-NodeInstanceRole-U11V27W93CX5
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes
   ```

   [Ersetzen Sie das *ARN of instance role (not instance profile)* Snippet durch den **NodeInstanceRole**Wert, den Sie in einem vorherigen Schritt aufgezeichnet haben.](#node-instance-role-step) Speichern und schließen Sie dann die Datei, um die aktualisierte configmap anzuwenden.

1. Achten Sie auf den Status Ihrer Knoten und warten Sie, bis Ihre neuen Worker-Knoten Ihrem Cluster beigetreten sind und den Status `Ready` angenommen haben.

   ```
   kubectl get nodes --watch
   ```

1. (Optional) Wenn Sie [Kubernetes Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/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
   ```

1. Verwenden Sie den folgenden Befehl, um jeden der Knoten, die Sie mit `NoSchedule` entfernen möchten, mit einem Taint zu versehen. Auf diese Weise werden neue Pods auf den Knoten, die Sie ersetzen, nicht geplant oder neu geplant. Weitere Informationen finden Sie unter [Taints und Toleranzen](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) in der Kubernetes-Dokumentation.

   ```
   kubectl taint nodes node_name key=value:NoSchedule
   ```

   Wenn Sie Ihre Knoten auf eine neue Kubernetes-Version aktualisieren, können Sie alle Knoten einer bestimmten Kubernetes-Version (in diesem Fall `1.33`) mit dem folgenden Code-Ausschnitt identifizieren und mit einem Taint versehen. Die Versionsnummer darf nicht höher als die Kubernetes-Version Ihrer Steuerebene sein. Sie darf auch nicht mehr als zwei Nebenversionen älter sein als die Kubernetes-Version Ihrer Steuerebene. Es wird empfohlen, dieselbe Version wie die Steuerebene zu verwenden.

   ```
   K8S_VERSION=1.33
   nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
   for node in ${nodes[@]}
   do
       echo "Tainting $node"
       kubectl taint nodes $node key=value:NoSchedule
   done
   ```

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 für die DNS-Auflösung, aber Ihr Cluster kann stattdessen `kube-dns` zurückgeben):

   ```
   NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
   coredns   1         1         1            1           31m
   ```

1. Wenn Ihre aktuelle Bereitstellung weniger als zwei Replikate ausführt, skalieren die Bereitstellung auf zwei Replikate. Ersetzen Sie `kubedns` durch *coredns*, falls Ihre vorherige Befehlsausgabe dies stattdessen zurückgegeben hat.

   ```
   kubectl scale deployments/coredns --replicas=2 -n kube-system
   ```

1. Lassen Sie die einzelnen Knoten, die Sie aus Ihrem Cluster entfernen möchten, mit dem folgenden Befehl sperren:

   ```
   kubectl drain node_name --ignore-daemonsets --delete-local-data
   ```

   Wenn Sie Ihre Knoten auf eine neue Kubernetes-Version aktualisieren, identifizieren und löschen Sie alle Knoten einer bestimmten Kubernetes-Version (in diesem Fall*1.33*) mit dem folgenden Codeausschnitt.

   ```
   K8S_VERSION=1.33
   nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
   for node in ${nodes[@]}
   do
       echo "Draining $node"
       kubectl drain $node --ignore-daemonsets --delete-local-data
   done
   ```

1. Nachdem die alten Knoten entladen wurden, widerrufen Sie die Regeln für eingehenden Datenverkehr für Sicherheitsgruppen, die Sie zuvor autorisiert haben. Löschen Sie anschließend den Stack, um die Instanzen zu beenden AWS CloudFormation .
**Anmerkung**  
Wenn Sie Ihrer alten Knotengruppen-IAM-Rolle zusätzliche IAM-Richtlinien hinzugefügt haben, z. B. das Hinzufügen von Berechtigungen für den [Kubernetes Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler), trennen Sie diese zusätzlichen Richtlinien von der Rolle, bevor Sie Ihren Stack löschen können. AWS CloudFormation 

   1. Heben Sie die Regeln für eingehenden Datenverkehr auf, die Sie zuvor für die Knoten-Sicherheitsgruppen erstellt haben. In diesen Befehlen `oldNodes` steht der AWS CloudFormation Stack-Name für Ihren älteren Knoten-Stack und `newNodes` der Name des Stacks, zu dem Sie migrieren.

      ```
      oldNodes="old_node_CFN_stack_name"
      newNodes="new_node_CFN_stack_name"
      
      oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      aws ec2 revoke-security-group-ingress --group-id $oldSecGroup \
      --source-group $newSecGroup --protocol -1
      aws ec2 revoke-security-group-ingress --group-id $newSecGroup \
      --source-group $oldSecGroup --protocol -1
      ```

   1. Öffnen Sie die [AWS CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation/).

   1. Wählen Sie Ihren alten Worker-Knoten-Stack aus.

   1. Wählen Sie **Löschen** aus.

   1. Wählen Sie im Bestätigungsdialogfeld **Stack löschen** **Stack löschen** aus.

1. Bearbeiten Sie die `aws-auth`-configmap, um die alten Worker-Knoten-Instance-Rolle aus RBAC zu entfernen.

   ```
   kubectl edit configmap -n kube-system aws-auth
   ```

   Löschen Sie den `mapRoles`-Eintrag für die alte Worker-Knoten-Gruppe.

   ```
   apiVersion: v1
   data:
     mapRoles: |
       - rolearn: arn:aws: iam::111122223333:role/nodes-1-16-NodeInstanceRole-W70725MZQFF8
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes
       - rolearn: arn:aws: iam::111122223333:role/nodes-1-15-NodeInstanceRole-U11V27W93CX5
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes>
   ```

   Speichern und schließen Sie die Datei, um die aktualisierte configmap anzuwenden.

1. (Optional) Wenn Sie den Kubernetes-[Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler) verwenden, skalieren Sie die Bereitstellung wieder auf ein Replikat.
**Anmerkung**  
Außerdem müssen Sie Ihre neue Auto-Scaling-Gruppe (z. B. `k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/my-cluster`) mit einem Tag versehen und den Befehl für die Cluster-Autoscaler-Bereitstellung so aktualisieren, dass er auf die neu getaggte Auto-Scaling-Gruppe verweist. Weitere Informationen finden Sie unter [Cluster Autoscaler on](https://github.com/kubernetes/autoscaler/tree/cluster-autoscaler-release-1.3/cluster-autoscaler/cloudprovider/aws). AWS

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system
   ```

1. (Optional) Stellen Sie sicher, dass Sie die neueste Version des [Amazon-VPC-CNI-Plugins für Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s) verwenden. Möglicherweise müssen Sie Ihre CNI-Version aktualisieren, um die neuesten unterstützten Instance-Typen zu nutzen. Weitere Informationen finden Sie unter [Pods mit dem Amazon VPC CNI zuweisen IPs](managing-vpc-cni.md).

1. Wenn Ihr Cluster `kube-dns` für die DNS-Auflösung verwendet (siehe [[migrate-determine-dns-step]](#migrate-determine-dns-step)), skalieren Sie in der `kube-dns`-Bereitstellung auf ein Replikat.

   ```
   kubectl scale deployments/kube-dns --replicas=1 -n kube-system
   ```

# Einen AWS CloudFormation Knotenstapel aktualisieren
<a name="update-stack"></a>

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 des [Vereinfachten Knoten-Lebenszyklus mit verwalteten Knotengruppen](managed-node-groups.md) finden Sie unter [Eine verwaltete Knotengruppe für Ihren Cluster aktualisieren](update-managed-node-group.md).

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 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](migrate-stack.md).

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 kann stattdessen `kube-dns` zurückgeben. Ihre Ausgabe kann je nach verwendeter `kubectl`-Version anders aussehen.

   ```
   NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
   coredns   1         1         1            1           31m
   ```

1. 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
   ```

1. (Optional) Wenn Sie Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) 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
   ```

1.  Bestimmen Sie den gewünschten Instance-Typ und die gewünschte Anzahl von Instances 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 Amazon EC2 EC2-Konsole unter https://console.aws.amazon.com/ec2/.

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

   1. 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.

1. Öffnen Sie die [AWS CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation/).

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

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

1. 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
   ```

1. 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](#existing-worker-settings-step) 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](#existing-worker-settings-step) 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](choosing-instance-type.md). 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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI). Der Instance–Typ `m5.large` unterstü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](https://github.com/aws/amazon-vpc-cni-k8s) sind in [vpc\$1ip\$1resource\$1limit.go](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/pkg/vpc/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 [Pods mit dem Amazon VPC CNI zuweisen IPs](managing-vpc-cni.md).
**Wichtig**  
Einige Instance-Typen sind möglicherweise nicht in allen AWS Regionen verfügbar.
   +  **NodeImageIdSSMParam**— Der Amazon EC2 Systems Manager 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.35`.

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

     Sie können es durch eine [Plattformversion *1.35* ersetzen, die identisch](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) 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](retrieve-ami-id.md).
**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 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 **NodeImageIdSSMParam**angegeben wurde. Wenn Sie den **NodeImageIdSSMParam**Wert verwenden möchten, stellen Sie sicher, dass der Wert für leer **NodeImageId**ist.
   +  **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 in der Knotengruppe geplante Knoten oder Pods verwendet IMDSv1 werden. Weitere Informationen finden Sie unter [Konfiguration des Instance-Metadatenservice](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html). 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](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

1. (Optional) Markieren Sie auf der Seite **Options (Optionen)** Ihre Stack-Ressourcen. Wählen Sie **Weiter** aus.

1. Ü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.

1. Wenn der DNS-Anbieter Ihres Clusters `kube-dns` ist, skalieren Sie die `kube-dns`-Bereitstellung auf ein Replikat.

   ```
   kubectl scale deployments/kube-dns --replicas=1 -n kube-system
   ```

1. (Optional) Wenn Sie den Kubernetes-[Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) verwenden, skalieren Sie die Bereitstellung zurück auf die gewünschte Zahl von Replikaten.

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system
   ```

1. (Optional) Stellen Sie sicher, dass Sie die neueste Version des [Amazon-VPC-CNI-Plugins für Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s) 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 [Pods mit dem Amazon VPC CNI zuweisen IPs](managing-vpc-cni.md).

# Vereinfachung der Rechenverwaltung mit AWS Fargate
<a name="fargate"></a>

In diesem Thema wird die Verwendung von Amazon EKS zum Ausführen von Kubernetes-Pods in AWS Fargate erläutert. Fargate ist eine Technologie, die bedarfsgerechte On-Demand-Rechenkapazität für [Container](https://aws.amazon.com/what-are-containers) bereitstellt. Mit Fargate müssen Sie keine Gruppen virtueller Maschinen selbst bereitstellen, konfigurieren oder skalieren, um Container auszuführen. Sie müssen auch keine Servertypen auswählen, entscheiden, wann Sie Ihre Knotengruppen skalieren oder die Cluster-Zusammenstellung optimieren.

Sie können steuern, welche Pods in Fargate starten und wie sie mit [Fargate-Profilen](fargate-profile.md) ausgeführt werden. Fargate-Profile werden als Teil Ihres Amazon-EKS-Clusters definiert. Amazon EKS wird in Kubernetes mit Fargate integriert, indem Controller verwendet werden, die von AWS mithilfe des Upstream-Erweiterungsmodells von Kubernetes erstellt werden. Diese Controller werden als Teil der von Amazon EKS verwalteten Kubernetes-Steuerebene ausgeführt und sind für die Planung nativer Kubernetes-Pods in Fargate verantwortlich. Die Fargate-Controller enthalten einen neuen Scheduler, der neben dem Standard-Kubernetes-Scheduler und zusätzlich zu mehreren mutierenden und validierenden Zugangscontrollern ausgeführt wird. Wenn Sie einen Pod starten, der die Kriterien für die Ausführung in Fargate erfüllt, erkennen die Fargate-Controller, die im Cluster ausgeführt werden den Pod, und aktualisieren und planen ihn in Fargate.

In diesem Thema werden die verschiedenen Komponenten von Pods beschrieben, die in Fargate ausgeführt werden, und auf besondere Überlegungen für die Verwendung von Fargate mit Amazon EKS hingewiesen.

## Überlegungen zu AWS-Fargate
<a name="fargate-considerations"></a>

Hier sind einige Dinge, die Sie bei der Verwendung von Fargate auf Amazon EKS beachten sollten.
+ Jeder Pod, der in Fargate ausgeführt wird, verfügt über eine eigene Rechengrenze. Sie teilen sich weder den zugrunde liegenden Kernel noch CPU-Ressourcen, Speicherressourcen oder elastische Netzwerkschnittstellen mit anderen Pods.
+ Network Load Balancer und Application Load Balancer (ALBs) können mit Fargate nur mit IP-Zielen verwendet werden. Weitere Informationen erhalten Sie unter [Erstellen eines Network Load Balancers](network-load-balancing.md#network-load-balancer) und [Anwendungen und HTTP-Datenverkehr mit Application Load Balancers weiterleiten](alb-ingress.md).
+ Fargate-exponierte Services werden nur im IP-Modus des Zieltyps und nicht im Knoten-IP-Modus ausgeführt. Die empfohlene Möglichkeit, die Konnektivität von einem Service zu überprüfen, der auf einem verwalteten Knoten ausgeführt wird, und einem Service, der auf Fargate ausgeführt wird, besteht darin, eine Verbindung über den Servicenamen herzustellen.
+ Pods müssen zu dem Zeitpunkt, zu dem sie in Fargate ausgeführt werden sollen, mit einem Fargate-Profil übereinstimmen. Pods, die nicht mit einem Fargate-Profil übereinstimmen, können als `Pending` hängen bleiben. Wenn ein übereinstimmendes Fargate-Profil vorhanden ist, können Sie ausstehende Pods, die Sie erstellt haben, löschen, um sie in Fargate neu zu planen.
+ Daemonsets werden von Fargate nicht unterstützt. Wenn Ihre Anwendung einen Daemon benötigt, konfigurieren Sie diesen Daemon neu, sodass er als Sidecar-Container in Ihren Pods ausgeführt wird.
+ Privilegierte Container werden in Fargate nicht unterstützt.
+ Pods, die in Fargate ausgeführt werden, können im Pod-Manifest kein `HostPort` oder `HostNetwork` angeben.
+ Das standardmäßige weiche `nofile`- und `nproc`-Limit beträgt 1 024 und das harte Limit 65 535 für Fargate-Pods.
+ GPUs sind derzeit in Fargate nicht verfügbar.
+ Pods, die in Fargate ausgeführt werden, werden nur in privaten Subnetzen unterstützt (mit NAT Gateway-Zugriff auf AWS-Services, aber ohne direkte Route zu einem Internet-Gateway). Daher müssen für die VPC Ihres Clusters private Subnetze verfügbar sein. Weitere Informationen zu Clustern ohne ausgehenden Internetzugang finden Sie unter [Bereitstellung privater Cluster mit eingeschränktem Internetzugang](private-clusters.md).
+ Sie können die Option [Pod-Ressourcen mit Vertical Pod Autoscaler anpassen](vertical-pod-autoscaler.md) verwenden, um die anfängliche korrekte Größe von CPU und Arbeitsspeicher für Ihre Fargate-Pods festzulegen, und anschließend die Option [Pod-Bereitstellungen mit Horizontal Pod Autoscaler skalieren](horizontal-pod-autoscaler.md) verwenden, um diese Pods zu skalieren. Wenn Sie möchten, dass der Vertical Pod Autoscaler Pods mit größeren CPU- und Speicherkombinationen automatisch erneut in Fargate bereitstellt, stellen Sie den Modus für den Vertical Pod Autoscaler entweder auf `Auto` oder `Recreate` ein, um die korrekte Funktionalität sicherzustellen. Weitere Informationen finden Sie in der [Vertical Pod Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start)-Dokumentation auf GitHub.
+ DNS-Auflösung und DNS-Hostnamen müssen für Ihre VPC aktiviert sein. Weitere Informationen finden Sie unter [Anzeigen und Aktualisieren der DNS-Unterstützung für Ihre VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating).
+ Amazon-EKS-Fargate erweitert die Verteidigung für Kubernetes-Anwendungen, indem jeder Pod innerhalb einer virtuellen Maschine (VM) isoliert wird. Diese VM-Grenze verhindert den Zugriff auf hostbasierte Ressourcen, die von anderen Pods im Falle eines Container-Escapes verwendet werden. Dies ist eine übliche Methode, um containerisierte Anwendungen anzugreifen und Zugriff auf Ressourcen außerhalb des Containers zu erhalten.

  Die Verwendung von Amazon EKS ändert nichts an Ihren Verantwortlichkeiten im Rahmen des [Modells der geteilten Verantwortung](security.md). Sie sollten die Konfiguration von Cluster-Sicherheits- und Governance-Kontrollen sorgfältig prüfen. Der sicherste Weg, eine Anwendung zu isolieren, besteht immer darin, sie in einem separaten Cluster auszuführen.
+ Fargate-Profile unterstützen die Angabe von Subnetzen aus sekundären VPC-CIDR-Blöcken. Möglicherweise möchten Sie einen sekundären CIDR-Block angeben. Das liegt daran, dass in einem Subnetz nur eine begrenzte Anzahl von IP-Adressen verfügbar ist. Daher gibt es auch eine begrenzte Anzahl von Pods, die im Cluster erstellt werden können. Durch die Verwendung verschiedener Subnetze für Pods können Sie die Anzahl der verfügbaren IP-Adressen erhöhen. Weitere Informationen finden Sie unter [Hinzufügen von IPv4 CIDR-Blöcken zu einer VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#vpc-resize). 
+ Amazon EC2 Instance Metadata Service (IMDS) ist für Pods, die auf Fargate-Knoten bereitgestellt werden, nicht verfügbar. Wenn Sie Pods haben, die in Fargate bereitgestellt werden und IAM-Anmeldeinformationen erfordern, weisen Sie diese Ihren Pods mithilfe von [IAM-Rollen für Servicekonten](iam-roles-for-service-accounts.md) zu. Wenn Ihre Pods Zugriff auf andere Informationen benötigen, die über das IMDS verfügbar sind, müssen Sie diese Informationen in Ihre Pod-Spezifikation hart codieren. Dies umfasst die AWS-Region oder Availability Zone, in der ein Pod bereitgestellt wird.
+ Sie können Fargate-Pods nicht in AWS Outposts, AWS Wavelength oder AWS Local Zones bereitstellen.
+ Amazon EKS muss Fargate-Pods regelmäßig patchen, um deren Sicherheit zu gewährleisten. Wir versuchen, die Auswirkungen von Aktualisierungen möglichst gering zu halten. Es kann jedoch vorkommen, dass Pods gelöscht werden müssen, wenn sie nicht erfolgreich bereinigt wurden. Es gibt einige Maßnahmen, die Sie durchführen können, um Unterbrechungen zu minimieren. Weitere Informationen finden Sie unter [Festlegung von Maßnahmen für Betriebssystem-Patching-Ereignisse für AWS Fargate](fargate-pod-patching.md).
+ Das [Amazon-VPC-CNI-Plugin für Amazon EKS](https://github.com/aws/amazon-vpc-cni-plugins) ist standardmäßig auf Fargate-Knoten installiert. Sie können keine [Alternativen CNI-Plugins für Amazon-EKS-Cluster](alternate-cni-plugins.md) mit Fargate-Knoten verwenden.
+ Ein in Fargate ausgeführter Pod bindet automatisch ein Amazon-EFS-Dateisystem ein, ohne dass manuelle Schritte zur Treiberinstallation erforderlich sind. Sie können mit Fargate-Knoten keine dynamische Bereitstellung persistenter Volumes verwenden, aber Sie können eine statische Bereitstellung verwenden.
+ Amazon EKS unterstützt Fargate Spot nicht.
+ Sie können Amazon-EBS-Volumes nicht in Fargate-Pods mounten.
+ Sie können den Amazon-EBS-CSI-Controller in Fargate-Knoten ausführen, aber der Amazon-EBS-CSI-Knoten-DaemonSet kann nur in Amazon-EC2-Instances ausgeführt werden.
+ Nachdem ein [Kubernetes-Auftrag](https://kubernetes.io/docs/concepts/workloads/controllers/job/) als `Completed` oder `Failed` gekennzeichnet wurde, existieren die vom Auftrag erstellten Pods normalerweise weiter. Durch dieses Verhalten können Sie die Protokolle und Ergebnisse anzeigen. Bei Fargate entstehen jedoch Kosten, wenn Sie den Auftrag nachher nicht bereinigen.

  Um die zugehörigen Pods automatisch zu löschen, nachdem ein Auftrag abgeschlossen wurde oder fehlgeschlagen ist, können Sie mithilfe des TTL-Controllers (Time-to-Live) einen Zeitraum angeben. Das folgende Beispiel veranschaulicht die Angabe von `.spec.ttlSecondsAfterFinished` im Auftrags-Manifest.

  ```
  apiVersion: batch/v1
  kind: Job
  metadata:
    name: busybox
  spec:
    template:
      spec:
        containers:
        - name: busybox
          image: busybox
          command: ["/bin/sh", "-c", "sleep 10"]
        restartPolicy: Never
    ttlSecondsAfterFinished: 60 # <-- TTL controller
  ```

## Fargate-Vergleichstabelle
<a name="_fargate_comparison_table"></a>


| Kriterien |  AWS-Fargate | 
| --- | --- | 
|  Kann in [AWS Outposts](https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html) bereitgestellt werden   |  Nein  | 
|  Kann auf eine [AWS Lokale Zone](local-zones.md) bereitgestellt werden   |  Nein  | 
|  Kann Container ausführen, die Windows benötigen  |  Nein  | 
|  Kann Container ausführen, die Linux benötigen  |  Ja  | 
|  Kann Workloads ausführen, die den Inferentia-Chip benötigen  |  Nein  | 
|  Kann Workloads ausführen, die eine GPU benötigen  |  Nein  | 
|  Kann Workloads ausführen, die Arm-Prozessoren benötigen  |  Nein  | 
|  Kann ausgeführt werdenAWS [Bottlerocket](https://aws.amazon.com/bottlerocket/)   |  Nein  | 
|  Pods teilen eine Kernel-Laufzeitumgebung mit anderen Pods  |  Nein – Jeder Pod hat einen bestimmten Kernel  | 
|  Pods teilen CPU, Arbeitsspeicher, Speicher und Netzwerkressourcen mit anderen Pods.  |  Nein – Jeder Pod hat bestimmte Ressourcen und kann unabhängig voneinander dimensioniert werden, um die Ressourcenauslastung zu maximieren.  | 
|  Pods können mehr Hardware und Speicher verwenden, als in den Pod-Spezifikationen angefordert  |  Nein – Der Pod kann jedoch mit einer größeren vCPU und Speicherkonfiguration erneut bereitgestellt werden.  | 
|  Bereitstellen und Verwalten von Amazon-EC2-Instances  |  Nein  | 
|  Das Betriebssystem von Amazon-EC2-Instances muss gesichert, gewartet und gepatcht werden  |  Nein  | 
|  Kann Bootstrap-Argumente bei der Bereitstellung eines Knotens bereitstellen, z. B. zusätzliche [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/)-Argumente.  |  Nein  | 
|  IP-Adressen können Pods aus einem anderen CIDR-Block als der dem Knoten zugewiesenen IP-Adresse zuweisen.   |  Nein  | 
|  SSH im Knoten nicht möglich  |  Nein – Es gibt kein Knoten-Host-Betriebssystem für SSH.  | 
|  Kann Ihr eigenes benutzerdefiniertes AMI auf Knoten bereitstellen  |  Nein  | 
|  Kann Ihr eigenes benutzerdefiniertes CNI auf Knoten bereitstellen  |  Nein  | 
|  Knoten-AMI muss selbst aktualisiert werden  |  Nein  | 
|  Muss die Kubernetes-Version des Knotens selbst aktualisieren  |  Nein – Sie verwalten keine Knoten.  | 
|  Kann Amazon-EBS-Speicher mit Pods verwenden  |  Nein  | 
|  Kann Amazon-EFS-Speicher mit Pods verwenden  |   [Ja](efs-csi.md)   | 
|  Kann Amazon FSx für Lustre Speicher mit Pods verwenden  |  Nein  | 
|  Kann Network Load Balancer für Services verwenden  |  Ja, bei Verwendung der Option [Network Load-Balancer erstellen](network-load-balancing.md#network-load-balancer)   | 
|  Pods können in einem öffentlichen Subnetz ausgeführt werden  |  Nein  | 
|  Kann einzelnen Pods verschiedene VPC-Sicherheitsgruppen zuweisen  |  Ja  | 
|  Kann Kubernetes DaemonSets ausführen  |  Nein  | 
|  Unterstützung für `HostPort` und `HostNetwork` im Pod-Manifest  |  Nein  | 
|   AWS-Verfügbarkeit in Regionen  |   [Einige von Amazon EKS unterstützte Regionen](https://docs.aws.amazon.com/general/latest/gr/eks.html)   | 
|  Kann Container auf Amazon-EC2-Dedicated-Hosts ausführen  |  Nein  | 
|  Preise  |  Kosten für eine individuelle Fargate-Speicher- und CPU-Konfiguration. Jeder Pod hat seine eigenen Kosten. Weitere Informationen dazu finden Sie unter [AWS-Fargate-Preise](https://aws.amazon.com/fargate/pricing/).  | 

# Beginnen Sie mit AWS Fargate für Ihren Cluster
<a name="fargate-getting-started"></a>

In diesem Thema werden die ersten Schritte zum Ausführen von Pods auf AWS Fargate mit Ihrem Amazon EKS-Cluster beschrieben.

Wenn Sie den Zugriff auf den öffentlichen Endpunkt Ihres Clusters mithilfe von CIDR-Blöcken einschränken, empfehlen wir, dass Sie auch den privaten Endpunktzugriff aktivieren. Auf diese Weise können Fargate-Pods mit dem Cluster kommunizieren. Wenn der private Endpunkt nicht aktiviert ist, müssen die CIDR-Blöcke, die Sie für den öffentlichen Zugriff angeben, die Ausgangsquellen aus Ihrer VPC enthalten. Weitere Informationen finden Sie unter [Cluster-API-Server-Endpunkt](cluster-endpoint.md).

**Voraussetzung**  
Einen vorhandenen -Cluster. Wenn Sie noch über keinen Amazon-EKS-Cluster verfügen, lesen Sie [Erste Schritte mit Amazon EKS](getting-started.md).

## Schritt 1: Sicherstellen, dass vorhandene Knoten mit Fargate-Pods kommunizieren können
<a name="fargate-gs-check-compatibility"></a>

Wenn Sie mit einem neuen Cluster ohne Knoten oder einem Cluster nur mit verwalteten Knotengruppen arbeiten (siehe [Vereinfachung des Knotenlebenszyklus mit verwalteten Knotengruppen](managed-node-groups.md)), können Sie mit [Schritt 2: Fargate-Pod-Ausführungsrolle erstellen](#fargate-sg-pod-execution-role) fortfahren.

Angenommen, Sie arbeiten mit einem vorhandenen Cluster, dem bereits Knoten zugeordnet sind. Stellen Sie sicher, dass die Pods auf diesen Knoten problemlos mit den Pods kommunizieren können, die in Fargate ausgeführt werden. Pods, die in Fargate ausgeführt werden, werden automatisch so konfiguriert, dass die Cluster-Sicherheitsgruppe für den Cluster verwendet wird, dem sie zugeordnet sind. Stellen Sie sicher, dass alle vorhandenen Knoten in Ihrem Cluster Datenverkehr an die Cluster-Sicherheitsgruppe senden und von dieser empfangen können. Verwaltete Knotengruppen werden automatisch so konfiguriert, dass sie auch die Cluster-Sicherheitsgruppe verwenden. Sie müssen sie also nicht ändern oder auf Kompatibilität prüfen (siehe [Vereinfachung des Knotenlebenszyklus mit verwalteten Knotengruppen](managed-node-groups.md)).

Für bestehende Knotengruppen, die mit `eksctl` oder den von Amazon EKS verwalteten AWS CloudFormation Vorlagen erstellt wurden, können Sie die Cluster-Sicherheitsgruppe manuell zu den Knoten hinzufügen. Alternativ können Sie die Auto-Scaling-Gruppestartvorlage für die Knotengruppe ändern, um die Cluster-Sicherheitsgruppe an die Instances anzuhängen. Weitere Informationen finden Sie unter [Ändern der Sicherheitsgruppen einer Instance](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SG_Changing_Group_Membership) im *Amazon-VPC-Benutzerhandbuch*.

Sie können im Abschnitt **Netzwerk** für den Cluster AWS-Managementkonsole nach einer Sicherheitsgruppe für Ihren Cluster suchen. Oder Sie können dies mit dem folgenden AWS CLI-Befehl tun. Wenn Sie diesen Befehl verwenden, ersetzen Sie `<my-cluster>` durch den Namen Ihres Clusters.

```
aws eks describe-cluster --name <my-cluster> --query cluster.resourcesVpcConfig.clusterSecurityGroupId
```

## Schritt 2: Fargate-Pod-Ausführungsrolle erstellen
<a name="fargate-sg-pod-execution-role"></a>

Wenn Ihr Cluster Pods auf AWS Fargate erstellt, müssen die Komponenten, die auf der Fargate-Infrastruktur ausgeführt werden, in AWS APIs Ihrem Namen Aufrufe tätigen. Die Amazon-EKS-Pod-Ausführungsrolle stellt die entsprechenden IAM-Berechtigungen bereit. Informationen zum Erstellen einer AWS Fargate-Pod-Ausführungsrolle finden Sie unter[IAM-Rolle für die Ausführung von Amazon-EKS-Pods](pod-execution-role.md).

**Anmerkung**  
Wenn Sie den Cluster mithilfe von `eksctl` und der `--fargate`-Option erstellt haben, verfügt der Cluster bereits über eine Pod-Ausführungsrolle, die Sie in der IAM-Konsole mit dem Muster `eksctl-my-cluster-FargatePodExecutionRole-ABCDEFGHIJKL` finden können. Wenn Sie Ihre Fargate-Profile mit `eksctl` anlegen, erstellt `eksctl` Ihre Pod-Ausführungsrolle, sofern noch keine erstellt wurde.

## Schritt 3: Fargate Profil für Ihren Cluster erstellen
<a name="fargate-gs-create-profile"></a>

Bevor Sie Pods planen können, die in Fargate in Ihrem Cluster ausgeführt werden, müssen Sie ein Fargate-Profil definieren, das angibt, welche Pods Fargate beim Start verwenden soll. Weitere Informationen finden Sie unter [Festlegung, welche Pods beim Start AWS Fargate verwenden](fargate-profile.md).

**Anmerkung**  
Wenn Sie Ihren Cluster mithilfe von `eksctl` und der Option `--fargate` erstellt haben, wurde bereits ein Fargate-Profil für Ihren Cluster mit Selektoren für alle Pods in den `kube-system`- und `default`-Namespaces erstellt. Gehen Sie wie folgt vor, um Fargate-Profile für alle anderen Namespaces zu erstellen, die Sie mit Fargate verwenden möchten.

Sie können mit einem dieser Tools ein Fargate-Profil erstellen:
+  [`eksctl`](#eksctl_fargate_profile_create) 
+  [AWS-Managementkonsole](#console_fargate_profile_create) 

### `eksctl`
<a name="eksctl_fargate_profile_create"></a>

Für diesen Vorgang ist `eksctl` Version `0.215.0` oder höher erforderlich. Sie können Ihre -Version mit dem folgenden Befehl überprüfen:

```
eksctl version
```

Eine Installations- und Upgrade-Anleitung für `eksctl` finden Sie in der Dokumentation zu `eksctl` unter [Installation](https://eksctl.io/installation).

 **So erstellen Sie ein Fargate-Profil mit `eksctl`** 

Erstellen Sie Ihr Fargate-Profil mit dem folgenden `eksctl`-Befehl und ersetzen Sie jede `<example value>` durch Ihre eigenen Werte. Sie müssen einen Namespace angeben. Die Option `--labels` ist jedoch nicht erforderlich.

```
eksctl create fargateprofile \
    --cluster <my-cluster> \
    --name <my-fargate-profile> \
    --namespace <my-kubernetes-namespace> \
    --labels <key=value>
```

Sie können bestimmte Platzhalter für `<my-kubernetes-namespace>`- und `<key=value>`-Labels verwenden. Weitere Informationen finden Sie unter [Platzhalter für Fargate-Profile](fargate-profile.md#fargate-profile-wildcards).

### AWS-Managementkonsole
<a name="console_fargate_profile_create"></a>

 **So erstellen Sie ein Fargate-Profil mit AWS-Managementkonsole ** 

1. Öffnen Sie die [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

1. Wählen Sie den Cluster aus, für den Sie ein Fargate-Profil erstellen möchten.

1. Wählen Sie die Registerkarte **Compute** (Datenverarbeitung) aus.

1. Wählen Sie unter **Fargate-Profile** die Option **Fargate-Profil hinzufügen** aus.

1. Auf der Seite **Konfigurieren des Fargate Profils** führen Sie folgende Schritte aus:

   1. Geben Sie unter **Name** einen Namen für Ihr Fargate-Profil ein. Der Name muss eindeutig sein.

   1. Wählen Sie für **Pod-Ausführungsrolle** die Pod-Ausführungsrolle aus, die mit Ihrem Fargate-Profil verwendet werden soll. Es werden nur IAM-Rollen mit dem `eks-fargate-pods.amazonaws.com`-Service-Prinzipal angezeigt. Wenn keine Rollen aufgelistet sind, müssen Sie eine erstellen. Weitere Informationen finden Sie unter [IAM-Rolle für die Ausführung von Amazon-EKS-Pods](pod-execution-role.md).

   1. Ändern Sie die ausgewählten **Subnetze** nach Bedarf.
**Anmerkung**  
Für Pods, die in Fargate ausgeführt werden, werden nur private Subnetze unterstützt.

   1. Für **Tags** können Sie Ihr Fargate-Profil wahlweise markieren. Diese Tags werden nicht an andere Ressourcen weitergegeben, die dem Profil zugeordnet sind, z. B. Pods.

   1. Wählen Sie **Weiter** aus.

1. Führen Sie auf der Seite **Pod-Auswahl konfigurieren** die folgenden Schritte aus:

   1. Geben Sie für **Namespace** einen Namespace ein, der mit Pods übereinstimmt.
      + Sie können bestimmte Namespaces für den Abgleich verwenden, z. B. `kube-system` oder `default`.
      + Sie können bestimmte Platzhalter verwenden (z. B. `prod-*`), um mehrere Namespaces abzugleichen (z. B. `prod-deployment` und `prod-test`). Weitere Informationen finden Sie unter [Platzhalter für Fargate-Profile](fargate-profile.md#fargate-profile-wildcards).

   1. (Optional) Fügen Sie dem Selektor Kubernetes-Markierungen hinzu. Fügen Sie sie insbesondere demjenigen hinzu, dem die Pods im angegebenen Namespace entsprechen müssen.
      + Sie können dem Selektor das Label `infrastructure: fargate` hinzufügen, sodass nur Pods im angegebenen Namespace, die ebenfalls die `infrastructure: fargate`-Kubernetes-Bezeichnung tragen, mit dem Selektor übereinstimmen.
      + Sie können bestimmte Platzhalter verwenden (z. B. `key?: value?`), um mehrere Namespaces abzugleichen (z. B. `keya: valuea` und `keyb: valueb`). Weitere Informationen finden Sie unter [Platzhalter für Fargate-Profile](fargate-profile.md#fargate-profile-wildcards).

   1. Wählen Sie **Weiter** aus.

1. Überprüfen Sie auf der Seite **Überprüfen und erstellen** die Informationen für Ihr -Profil und wählen Sie **Erstellen** aus.

## Schritt 4: CoreDNS aktualisieren
<a name="fargate-gs-coredns"></a>

Standardmäßig ist CoreDNS so konfiguriert, dass es auf der EC2 Amazon-Infrastruktur auf Amazon EKS-Clustern ausgeführt wird. Wenn Sie Ihre Pods *nur* in Fargate in Ihrem Cluster ausführen möchten, führen Sie die folgenden Schritte aus.

**Anmerkung**  
Wenn Sie einen Cluster mit `eksctl` unter Verwendung von `--fargate`-Option erstellt haben, können Sie zu [Nächste Schritte](#fargate-gs-next-steps) springen.

1. Erstellen Sie jedes Fargate-Profil für CoreDNS mit dem folgenden Befehl. `<my-cluster>`Ersetzen Sie es durch Ihren Clusternamen, `<111122223333>` durch Ihre Konto-ID, `<AmazonEKSFargatePodExecutionRole>` durch den Namen Ihrer Pod-Ausführungsrolle und `<000000000000000a>``<000000000000000b>`, und `<000000000000000c>` durch die IDs Ihrer privaten Subnetze. Wenn Sie über keine Pod-Ausführungsrolle verfügen, müssen Sie zuerst eine erstellen (siehe [Schritt 2: Fargate-Pod-Ausführungsrolle erstellen](#fargate-sg-pod-execution-role)).
**Wichtig**  
Der Rollen-ARN darf als [Pfad](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names) nur `/` enthalten. Wenn der Name Ihrer Rolle also beispielsweise `development/apps/AmazonEKSFargatePodExecutionRole` lautet, müssen Sie ihn beim Angeben des ARN für die Rolle in `AmazonEKSFargatePodExecutionRole` ändern. Das Format des Rollen-ARN muss ` arn:aws: iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole>` sein.

   ```
   aws eks create-fargate-profile \
       --fargate-profile-name coredns \
       --cluster-name <my-cluster> \
       --pod-execution-role-arn arn:aws: iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole> \
       --selectors namespace=kube-system,labels={k8s-app=kube-dns} \
       --subnets subnet-<000000000000000a> subnet-<000000000000000b> subnet-<000000000000000c>
   ```

1. Lösen Sie die Einführung der `coredns`-Bereitstellung aus.

   ```
   kubectl rollout restart -n kube-system deployment coredns
   ```

## Nächste Schritte
<a name="fargate-gs-next-steps"></a>
+ Mit dem folgenden Workflow können Sie mit der Migration Ihrer vorhandenen Anwendungen zum Ausführen in Fargate beginnen.

  1.  [Erstellen eines Fargate-Profils](fargate-profile.md#create-fargate-profile), das mit dem Kubernetes-Namespace und den Kubernetes-Labels Ihrer Anwendung übereinstimmt.

  1. Löschen Sie alle vorhandenen Pods und erstellen Sie sie neu, damit sie auf Fargate geplant werden. Ändern Sie `<namespace>` und `<deployment-type>`, um Ihre spezifischen Pods zu aktualisieren.

     ```
     kubectl rollout restart -n <namespace> deployment <deployment-type>
     ```
+ Stellen Sie das [Anwendungen und HTTP-Datenverkehr mit Application Load Balancers weiterleiten](alb-ingress.md) bereit, um Eingangsobjekte für Ihre Pods zuzulassen, die auf Fargate ausgeführt werden.
+ Sie können [Pod-Ressourcen mit Vertical Pod Autoscaler anpassen](vertical-pod-autoscaler.md) verwenden, um die CPU und den Speicher für Ihre Fargate- anfänglich richtig zu dimensionieren, und dann Fargate Pods verwenden, um [Skalierung von Pod-Bereitstellungen mit Horizontal Pod Autoscaler](horizontal-pod-autoscaler.md) diese Pods zu skalieren. Wenn Sie möchten, dass der Vertical Pod Autoscaler `Auto` mit höheren CPU- und Speicherkombinationen automatisch erneut in Fargate bereitstellt, stellen Sie den Modus für den Vertical-Pod-Autoscaler-Modus entweder auf oder `Recreate`. Dies dient der Gewährleistung einer korrekten Funktion. Weitere Informationen finden Sie in der [Vertical Pod Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start)-Dokumentation auf GitHub.
+ Sie können den [AWS Distro für OpenTelemetry](https://aws.amazon.com/otel)(ADOT)-Kollektor zur Anwendungsüberwachung durch Befolgen [dieser Anweisungen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-EKS-otel.html) einrichten.

# Festlegung, welche Pods beim Start AWS Fargate verwenden
<a name="fargate-profile"></a>

Bevor Sie Pods auf Fargate in Ihrem Cluster planen, müssen Sie mindestens ein Fargate-Profil definieren, das angibt, welche Pods Fargate beim Start verwenden.

Als Administrator können Sie mithilfe eines Fargate-Profils angeben, welche Pods in Fargate ausgeführt werden. Sie können dies über die Selektoren des Profils tun. Sie können bis zu fünf Selektoren zu jedem Profil hinzufügen. Jeder Selektor muss einen Namespace enthalten. Der Selector kann auch Labels enthalten. Das Label-Feld besteht aus mehreren optionalen Schlüssel-Wert-Paaren. Pods, die den Selektoren entsprechen, werden auf Fargate geplant. Pods werden mit einem Namespace und den Labels abgeglichen, die im Selektor angegeben sind. Wenn ein Namespace-Selektor ohne Labels definiert ist, versucht Amazon EKS, alle Pods, die in diesem Namespace ausgeführt werden, mithilfe des Profils in Fargate zu planen. Wenn ein zu planender Pod mit einem der Selektoren im Fargate-Profil übereinstimmt, wird dieser Pod in Fargate geplant.

Wenn ein Pod mit mehreren Fargate-Profilen übereinstimmt, können Sie angeben, welches Profil ein Pod verwendet, indem Sie der Pod-Spezifikation das folgende Kubernetes-Label hinzufügen: `eks.amazonaws.com/fargate-profile: my-fargate-profile`. Der Pod muss mit einem Selektor in diesem Profil übereinstimmen, um in Fargate geplant zu werden. Die Affinitäts-/Anti-Affinitätsregeln von Kubernetes gelten nicht und sind bei Amazon-EKS-Fargate-Pods nicht erforderlich.

Wenn Sie ein Fargate-Profil erstellen, müssen Sie eine Pod-Ausführungsrolle angeben. Diese Ausführungsrolle ist für die Amazon-EKS-Komponenten vorgesehen, die auf der Fargate-Infrastruktur mit dem Profil ausgeführt werden. Es wird zur Autorisierung der [Rollenbasierten Zugriffskontrolle](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) von Kubernetes des Clusters hinzugefügt. Auf diese Weise kann sich `kubelet`, das in der Fargate-Infrastruktur ausgeführt wird, bei Ihrem Amazon-EKS-Cluster registrieren und als Knoten in Ihrem Cluster angezeigt werden. Die Pod-Ausführungsrolle bietet auch IAM-Berechtigungen für die Fargate-Infrastruktur, um Lesezugriff auf Amazon-ECR-Image-Repositorys zu ermöglichen. Weitere Informationen finden Sie unter [IAM-Rolle für die Ausführung von Amazon-EKS-Pods](pod-execution-role.md).

Fargate-Profile können nicht geändert werden. Sie können jedoch ein neues aktuelles Profil erstellen, um ein vorhandenes Profil zu ersetzen, und dann das Original löschen.

**Anmerkung**  
Alle Pods, die mit einem Fargate-Profil ausgeführt werden, werden angehalten und als ausstehend gekennzeichnet, wenn das Profil gelöscht wird.

Wenn Fargate-Profile in einem Cluster den Status `DELETING` haben, müssen Sie warten, bis dieses Fargate-Profil gelöscht wurde, bevor Sie andere Profile in diesem Cluster erstellen können.

**Anmerkung**  
Fargate unterstützt derzeit keine Kubernetes [topologySpreadConstraints](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/).

Amazon EKS und Fargate verteilen Pods auf alle Subnetze, die im Fargate-Profil definiert sind. Es kann jedoch zu einer ungleichmäßigen Verteilung kommen. Wenn Sie eine gleichmäßige Verteilung benötigen, verwenden Sie zwei Fargate-Profile. Eine gleichmäßige Verteilung ist in Szenarien wichtig, in denen Sie zwei Replikate bereitstellen möchten und keine Ausfallzeiten wünschen. Wir empfehlen, dass jedes Profil nur ein Subnetz hat.

## Fargate-Profilkomponenten
<a name="fargate-profile-components"></a>

Die folgenden Komponenten sind in einem Fargate-Profil enthalten.

 **Pod-Ausführungsrolle**   
Wenn Ihr Cluster Pods auf AWS Fargate erstellt, muss das auf der Fargate-Infrastruktur ausgeführte `kubelet` in Ihrem Namen AWS-API-Aufrufe durchführen. Beispielsweise muss er Aufrufe tätigen, um Container-Images aus Amazon ECR zu ziehen. Die Amazon-EKS-Pod-Ausführungsrolle stellt die entsprechenden IAM-Berechtigungen bereit.  
Wenn Sie ein Fargate-Profil erstellen, müssen Sie eine Pod-Ausführungsrolle angeben, die mit Ihren Pods verwendet werden soll. Diese Rolle wird zur Autorisierung der [Rollenbasierten Zugriffskontrolle](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) von Kubernetes des Clusters hinzugefügt. Auf diese Weise kann sich `kubelet`, das in der Fargate-Infrastruktur ausgeführt wird, bei Ihrem Amazon-EKS-Cluster registrieren und als Knoten in Ihrem Cluster angezeigt werden. Weitere Informationen finden Sie unter [IAM-Rolle für die Ausführung von Amazon-EKS-Pods](pod-execution-role.md).

 **Subnets**   
Die IDs von Subnetzen, in denen Pods gestartet werden, die dieses Profil verwenden. Derzeit werden Pods, die in Fargate ausgeführt werden, keine öffentlichen IP-Adressen zugewiesen. Daher werden für diesen Parameter nur private Subnetze ohne direkte Route zu einem Internet-Gateway akzeptiert.

 **Selektoren**   
Die Selektoren, mit denen Pods, die dieses Fargate-Profil verwenden, übereinstimmen sollen. Sie können bis zu fünf Selektoren in einem Fargate-Profil angeben. Die Selektoren bestehen aus folgenden Komponenten:  
+  **Namespace** – Sie müssen einen Namespace für einen Selektor angeben. Der Selektor stimmt nur mit Pods überein, die in diesem Namespace erstellt werden. Sie können jedoch mehrere Selektoren erstellen, um mehrere Namespaces zu adressieren.
+  **Bezeichnungen** – Sie können optional Kubernetes-Bezeichnungen angeben, mit denen der Selektor übereinstimmen muss. Der Selektor stimmt nur mit Pods überein, die alle im Selektor angegebenen Labels aufweisen.

## Platzhalter für Fargate-Profile
<a name="fargate-profile-wildcards"></a>

Zusätzlich zu den Zeichen, die von Kubernetes erlaubt sind, dürfen Sie `*` und `?` in den Selektorkriterien für Namespaces, Label-Schlüssel und Label-Werte verwenden:
+  `*` steht für kein, ein oder mehrere Zeichen. Zum Beispiel kann `prod*` `prod` und `prod-metrics` darstellen.
+  `?` steht für ein einzelnes Zeichen (z. B. kann `value?` `valuea` darstellen). Es kann jedoch nicht `value` und `value-a` darstellen, weil `?` nur genau ein Zeichen darstellen kann.

Diese Platzhalterzeichen können an jeder Position und in Kombination verwendet werden (z. B. `prod*`, `*dev` und `frontend*?`). Andere Platzhalter und Formen des Mustervergleichs, wie reguläre Ausdrücke, werden nicht unterstützt.

Wenn mehrere übereinstimmende Profile für den Namespace und die Labels in der Pod-Spezifikation vorhanden sind, übernimmt Fargate das Profil basierend auf einer alphanumerischen Sortierung nach Profilnamen. Wenn zum Beispiel Profil A (mit dem Namen `beta-workload`) und Profil B (mit dem Namen `prod-workload`) passende Selektoren für die zu startenden Pods haben, wählt Fargate Profil A (`beta-workload`) für die Pods aus. Die Pods haben Labels mit Profil A auf den Pods (z. B. `eks.amazonaws.com/fargate-profile=beta-workload`).

Wenn Sie vorhandene Fargate-Pods auf neue Profile migrieren möchten, die Platzhalter verwenden, gibt es zwei Möglichkeiten, dies zu tun:
+ Erstellen Sie ein neues Profil mit passenden Selektoren und löschen Sie dann die alten Profile. Mit alten Profilen gekennzeichnete Pods werden in neue übereinstimmende Profile verschoben.
+ Wenn Sie Workloads migrieren möchten, sich aber nicht sicher sind, welche Fargate-Labels sich auf jedem Fargate-Pod befinden, können Sie die folgende Methode verwenden. Erstellen Sie ein neues Profil mit einem Namen, das zuerst alphanumerisch unter den Profilen auf demselben Cluster sortiert. Recyceln Sie dann die Fargate-Pods, die in neue Profile migriert werden müssen.

## Erstellen eines Fargate-Profils
<a name="create-fargate-profile"></a>

In diesem Abschnitt wird beschrieben, wie Sie ein Fargate-Profil erstellen. Sie müssen auch eine Pod-Ausführungsrolle erstellt haben, die für Ihr Fargate-Profil verwendet werden soll. Weitere Informationen finden Sie unter [IAM-Rolle für die Ausführung von Amazon-EKS-Pods](pod-execution-role.md). Pods, die in Fargate ausgeführt werden, werden nur in privaten Subnetzen unterstützt (mit [NAT Gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)-Zugriff auf AWS-Services, aber ohne direkte Route zu einem Internet-Gateway. Dies ist so, da in der VPC Ihres Clusters private Subnetze verfügbar sein müssen.

Sie können ein Profil mit Folgendem erstellen:
+  [`eksctl`](#eksctl_create_a_fargate_profile) 
+  [AWS-Managementkonsole](#console_create_a_fargate_profile) 

## `eksctl`
<a name="eksctl_create_a_fargate_profile"></a>

 **So erstellen Sie ein Fargate-Profil mit `eksctl`** 

Erstellen Sie Ihr Fargate-Profil mit dem folgenden `eksctl`-Befehl und ersetzen Sie dabei alle Beispielwerte durch Ihre eigenen Werte. Sie müssen einen Namespace angeben. Die Option `--labels` ist jedoch nicht erforderlich.

```
eksctl create fargateprofile \
    --cluster my-cluster \
    --name my-fargate-profile \
    --namespace my-kubernetes-namespace \
    --labels key=value
```

Sie können bestimmte Platzhalter für `my-kubernetes-namespace`- und `key=value`-Labels verwenden. Weitere Informationen finden Sie unter [Platzhalter für Fargate-Profile](#fargate-profile-wildcards).

## AWS-Managementkonsole
<a name="console_create_a_fargate_profile"></a>

 **So erstellen Sie ein Fargate-Profil mit AWS-Managementkonsole** 

1. Öffnen Sie die [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

1. Wählen Sie den Cluster aus, für den Sie ein Fargate-Profil erstellen möchten.

1. Wählen Sie die Registerkarte **Compute** (Datenverarbeitung) aus.

1. Wählen Sie unter **Fargate-Profile** die Option **Fargate-Profil hinzufügen** aus.

1. Auf der Seite **Konfigurieren des Fargate Profils** führen Sie folgende Schritte aus:

   1. Geben Sie unter **Name** einen eindeutigen Namen für Ihr Fargate-Profil ein, wie z. B. `my-profile`.

   1. Wählen Sie für **Pod-Ausführungsrolle** die Pod-Ausführungsrolle aus, die mit Ihrem Fargate-Profil verwendet werden soll. Es werden nur IAM-Rollen mit dem `eks-fargate-pods.amazonaws.com`-Service-Prinzipal angezeigt. Wenn keine Rollen aufgelistet sind, müssen Sie eine erstellen. Weitere Informationen finden Sie unter [IAM-Rolle für die Ausführung von Amazon-EKS-Pods](pod-execution-role.md).

   1. Ändern Sie die ausgewählten **Subnetze** nach Bedarf.
**Anmerkung**  
Für Pods, die in Fargate ausgeführt werden, werden nur private Subnetze unterstützt.

   1. Für **Tags** können Sie Ihr Fargate-Profil wahlweise markieren. Diese Tags werden nicht an andere Ressourcen weitergegeben, die dem Profil zugeordnet sind, z. B. Pods.

   1. Wählen Sie **Weiter** aus.

1. Führen Sie auf der Seite **Pod-Auswahl konfigurieren** die folgenden Schritte aus:

   1. Geben Sie für **Namespace** einen Namespace ein, der mit Pods übereinstimmt.
      + Sie können bestimmte Namespaces für den Abgleich verwenden, z. B. `kube-system` oder `default`.
      + Sie können bestimmte Platzhalter verwenden (z. B. `prod-*`), um mehrere Namespaces abzugleichen (z. B. `prod-deployment` und `prod-test`). Weitere Informationen finden Sie unter [Platzhalter für Fargate-Profile](#fargate-profile-wildcards).

   1. (Optional) Fügen Sie dem Selektor Kubernetes-Markierungen hinzu. Fügen Sie sie insbesondere demjenigen hinzu, dem die Pods im angegebenen Namespace entsprechen müssen.
      + Sie können dem Selektor das Label `infrastructure: fargate` hinzufügen, sodass nur Pods im angegebenen Namespace, die ebenfalls die `infrastructure: fargate`-Kubernetes-Bezeichnung tragen, mit dem Selektor übereinstimmen.
      + Sie können bestimmte Platzhalter verwenden (z. B. `key?: value?`), um mehrere Namespaces abzugleichen (z. B. `keya: valuea` und `keyb: valueb`). Weitere Informationen finden Sie unter [Platzhalter für Fargate-Profile](#fargate-profile-wildcards).

   1. Wählen Sie **Weiter** aus.

1. Überprüfen Sie auf der Seite **Überprüfen und erstellen** die Informationen für Ihr -Profil und wählen Sie **Erstellen** aus.

# Fargate-Profil löschen
<a name="delete-fargate-profile"></a>

In diesem Thema wird beschrieben, wie Sie ein Fargate-Profil löschen. Wenn Sie ein Fargate-Profil löschen, werden alle Pods gelöscht, die in Fargate mit dem Profil geplant wurden. Wenn diese Pods mit einem anderen Fargate-Profil übereinstimmen, werden sie mit diesem Profil in Fargate geplant. Wenn sie nicht mehr mit einem der Fargate-Profile übereinstimmen, werden sie nicht in Fargate geplant und ggf. als ausstehend gekennzeichnet.

Nur ein Fargate-Profil in einem Cluster kann sich jeweils im `DELETING`-Status befinden. Warten Sie, bis das Löschen eines Fargate-Profils abgeschlossen ist, bevor Sie andere Profile in diesem Cluster löschen können.

Sie können ein Profil mit einem der folgenden Tools löschen:
+  [`eksctl`](#eksctl_delete_a_fargate_profile) 
+  [AWS-Managementkonsole](#console_delete_a_fargate_profile) 
+  [AWS-CLI](#awscli_delete_a_fargate_profile) 

## `eksctl`
<a name="eksctl_delete_a_fargate_profile"></a>

 **Löschen eines Fargate-Profils mit `eksctl` ** 

Verwenden Sie den folgenden Befehl, um ein Profil aus einem Cluster zu löschen. Ersetzen Sie jeden *Beispielwert* durch Ihre eigenen Werte.

```
eksctl delete fargateprofile  --name my-profile --cluster my-cluster
```

## AWS-Managementkonsole
<a name="console_delete_a_fargate_profile"></a>

 **Löschen eines Fargate-Profils mit AWS-Managementkonsole ** 

1. Öffnen Sie die [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

1. Wählen Sie im linken Navigationsbereich die Option **Cluster** aus. Wählen Sie in der Clusterliste den Cluster aus, in dem Sie das Fargate-Profil löschen möchten.

1. Wählen Sie die Registerkarte **Compute** (Datenverarbeitung) aus.

1. Wählen Sie das zu löschende Fargate-Profil und dann **Delete** (Löschen) aus.

1. Geben Sie auf der Seite **Delete Fargate profile** (Fargate-Profil löschen) den Namen des Profils ein und wählen Sie dann **Delete** (Löschen) aus.

## AWS-CLI
<a name="awscli_delete_a_fargate_profile"></a>

 **Löschen eines Fargate-Profils mit der AWS-CLI** 

Verwenden Sie den folgenden Befehl, um ein Profil aus einem Cluster zu löschen. Ersetzen Sie jeden *Beispielwert* durch Ihre eigenen Werte.

```
aws eks delete-fargate-profile --fargate-profile-name my-profile --cluster-name my-cluster
```

# Details zur Fargate-Pod-Konfiguration verstehen
<a name="fargate-pod-configuration"></a>

In diesem Abschnitt werden einige der eindeutigen Pod-Konfigurationsdetails für die Ausführung von Kubernetes-Pods in AWS-Fargate beschrieben.

## CPU und Arbeitsspeicher des Pods
<a name="fargate-cpu-and-memory"></a>

Mit Kubernetes können Sie Anforderungen, eine minimale vCPU-Menge und Arbeitsspeicherressourcen definieren, die jedem Container in einem Pod zugewiesen werden. Pods werden von Kubernetes geplant, um sicherzustellen, dass mindestens die angeforderten Ressourcen für jeden Pod in der Rechenressource verfügbar sind. Weitere Informationen finden Sie unter [Managing Compute Resources for Containers](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/) in der Kubernetes-Dokumentation.

**Anmerkung**  
Da Amazon-EKS-Fargate nur einen Pod pro Knoten ausführt, tritt das Szenario des Räumens von Pods bei weniger Ressourcen nicht auf. Alle Amazon-EKS-Fargate-Pods werden mit garantierter Priorität ausgeführt, daher müssen die angeforderte CPU-Leistung und der Arbeitsspeicher für alle Container dem Limit entsprechen. Weitere Informationen finden Sie unter [Konfigurieren von Dienstqualität für Pods](https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/) in der Kubernetes-Dokumentation.

Wenn Pods in Fargate geplant sind, bestimmen die vCPU- und Speicherreservierungen innerhalb der Pod-Spezifikation, wie viel CPU und Speicher für den Pod bereitgestellt werden sollen.
+ Die maximale Anforderung von Init-Containern wird verwendet, um die vCPU- und Speicheranforderungen für die Init-Anforderung zu bestimmen.
+ Anforderungen für alle lang laufenden Container werden addiert, um die Anforderungen an die vCPU und den Arbeitsspeicher für lange laufende Anforderungen zu bestimmen.
+ Der größere der beiden zuvor genannten Werte wird für die vCPU und die Speicheranforderung für Ihren Pod ausgewählt.
+ Fargate fügt 256 MB zur Speicherreservierung jedes Pods für die erforderlichen Kubernetes-Komponenten (`kubelet`, `kube-proxy` und `containerd`) hinzu.

Fargate rundet auf die folgende Rechenkonfiguration auf, die der Summe von vCPU und Speicheranforderungen am nächsten liegt, damit Pods immer über die Ressourcen verfügen, die sie für ihre Ausführung benötigen.

Wenn Sie keine vCPU- und Speicherkombination angeben, wird die kleinste verfügbare Kombination verwendet (0,25 vCPU und 0,5 GB Arbeitsspeicher).

Die folgende Tabelle zeigt die vCPU- und Speicherkombinationen, die für Pods verfügbar sind, die in Fargate ausgeführt werden.


| vCPU-Wert | Speicherwert | 
| --- | --- | 
|  0,25 vCPU  |  0,5 GB, 1 GB, 2 GB  | 
|  0,5 vCPU  |  1 GB, 2 GB, 3 GB, 4 GB  | 
|  1 vCPU  |  2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB  | 
|  2 vCPU  |  Zwischen 4 GB und 16 GB in 1-GB-Schritten  | 
|  4 vCPU  |  Zwischen 8 GB und 30 GB in 1-GB-Schritten  | 
|  8 vCPU  |  Zwischen 16 GB und 60 GB in 4-GB-Schritten  | 
|  16 vCPU  |  Zwischen 32 GB und 120 GB in 8-GB-Schritten  | 

Der für die Kubernetes-Komponenten reservierte zusätzliche Arbeitsspeicher kann dazu führen, dass eine Fargate-Aufgabe mit mehr vCPUs als angefordert bereitgestellt wird. Bei einer Anforderung von 1 vCPU und 8 GB Speicher werden beispielsweise 256 MB zu ihrer Speicheranforderung hinzugefügt und eine Fargate-Aufgabe mit 2 vCPUs und 9 GB Speicher bereitgestellt, da keine Aufgabe mit 1 vCPU und 9 GB Speicher verfügbar ist.

Es gibt keine Korrelation zwischen der Größe des Pods, der auf Fargate ausgeführt wird, und der von Kubernetes gemeldeten Knotengröße mit `kubectl get nodes`. Die gemeldete Knotengröße ist oft größer als die Kapazität des Pods. Sie können die Pod-Kapazität mit dem folgenden Befehl überprüfen. Ersetzen Sie *default* durch den Namespace Ihres Pods und *pod-name* durch den Namen Ihres Pods

```
kubectl describe pod --namespace default pod-name
```

Eine Beispielausgabe sieht wie folgt aus.

```
[...]
annotations:
    CapacityProvisioned: 0.25vCPU 0.5GB
[...]
```

Die `CapacityProvisioned`-Annotation stellt die erzwungene Pod-Kapazität dar und bestimmt die Kosten Ihres Pods, der auf Fargate ausgeführt wird. Preisinformationen für die Computing-Konfigurationen finden Sie unter [AWS-Fargate-Preise](https://aws.amazon.com/fargate/pricing/).

## Fargate-Speicher
<a name="fargate-storage"></a>

Ein in Fargate ausgeführter Pod bindet automatisch ein Amazon-EFS-Dateisystem ein, ohne dass manuelle Schritte zur Treiberinstallation erforderlich sind. Sie können mit Fargate-Knoten keine dynamische Bereitstellung persistenter Volumes verwenden, aber Sie können eine statische Bereitstellung verwenden. Weitere Informationen finden Sie unter [Amazon-EFS-CSI-Treiber](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/docs/README.md) in GitHub.

Bei der Bereitstellung erhält jedes Pod, die in Fargate ausgeführt wird, standardmäßig 20 GiB flüchtigen Speicher. Diese Art von Speicher wird gelöscht, nachdem ein Pod stoppt. Bei neu auf Fargate gestarteten Pods ist die Verschlüsselung des flüchtigen Speicher-Volumes standardmäßig aktiviert. Der flüchtige Pod-Speicher wird mit einem AES-256-Verschlüsselungsalgorithmus mit AWS-Fargate-verwalteten Schlüsseln verschlüsselt.

**Anmerkung**  
Der standardmäßig nutzbare Speicher für Amazon-EKS-Pods, die in Fargate ausgeführt werden, beträgt weniger als 20 GiB. Dies liegt daran, dass ein Teil des Speicherplatzes von `kubelet` und anderen Kubernetes-Modulen belegt wird, die im Pod geladen werden.

Sie können die Gesamtmenge des flüchtigen Speichers bis zu einem Maximum von 175 GB erhöhen. Um die Größe mit Kubernetes zu konfigurieren, geben Sie die `ephemeral-storage`-Ressourcen-Anfragen für jeden Container in einem Pod an. Wenn Kubernetes Pods plant, stellt es sicher, dass die Summe der Ressourcen-Anfragen für jeden Pod geringer ist als die Kapazität der Fargate-Aufgabe. Weitere Informationen finden Sie unter [Ressourcen-Management für Pods und Container](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/) in der Kubernetes-Dokumentation.

Amazon EKS Fargate stellt mehr kurzlebigen Speicher bereit, als für die Systemnutzung angefordert wurde. Eine Anforderung von 100 GB stellt beispielsweise eine Fargate-Aufgabe mit 115 GB flüchtigem Speicher bereit.

# Festlegung von Maßnahmen für Betriebssystem-Patching-Ereignisse für AWS Fargate
<a name="fargate-pod-patching"></a>

Amazon EKS patcht regelmäßig das Betriebssystem für AWS-Fargate-Knoten, damit sie sicher bleiben. Im Rahmen des Patching-Prozesses werden die Knoten recycelt, um Betriebssystem-Patches zu installieren. Updates werden so durchgeführt, dass sie Ihre Services möglichst wenig beeinflussen. Wenn Pods jedoch nicht erfolgreich bereinigt wurden, kann es sein, dass sie gelöscht werden müssen. Die folgenden Maßnahmen können Ihnen helfen, potenzielle Unterbrechungen zu minimieren:
+ Legen Sie geeignete Budgets für Pod-Unterbrechung (PBDs) fest, um die Anzahl der Pods, die gleichzeitig ausfallen, zu steuern.
+ Erstellen Sie Amazon-EventBridge-Regeln für den Umgang mit fehlgeschlagenen Bereinigungen, bevor die Pods gelöscht werden.
+ Starten Sie die betroffenen Pods manuell neu, bevor das in der Benachrichtigung angegebene Bereinigungsdatum erreicht ist.
+ Erstellen Sie eine Benachrichtigungskonfiguration in AWS-Benutzerbenachrichtigungen.

Amazon EKS arbeitet eng mit der Kubernetes-Community zusammen, um Fehlerbehebungen und Sicherheits-Patches so schnell wie möglich bereitzustellen. Alle Fargate-Pods starten mit der aktuellsten Kubernetes-Patch-Version, die über die über Amazon EKS für die Kubernetes-Version Ihres Clusters verfügbar ist. Wenn Sie einen Pod mit einer älteren Patch-Version haben, recycelt Amazon EKS ihn möglicherweise, um ihn auf die neueste Version zu aktualisieren. Das stellt sicher, dass Ihre Pods mit den neuesten Sicherheitsaktualisierungen ausgestattet sind. Wenn ein [Häufige Schwachstellen und Aufdeckungen](https://cve.mitre.org/) (CVE)-Problem auftritt, bleiben Sie so auf dem Laufenden und können Sicherheitsrisiken reduzieren.

Wenn das AWS-Fargate-Betriebssystem aktualisiert wird, sendet Ihnen Amazon EKS eine Benachrichtigung, die Ihre betroffenen Ressourcen und das Datum der bevorstehenden Pod-Bereinigungen enthält. Wenn das angegebene Bereinigungsdatum ungünstig ist, haben Sie die Möglichkeit, Ihre betroffenen Pods vor dem in der Benachrichtigung angegebenen Bereinigungsdatum manuell neu zu starten. Alle Pods, die vor dem Zeitpunkt der Benachrichtigung erstellt wurden, können bereinigt werden. Weitere Anweisungen zum manuellen Neustart Ihrer Pods finden Sie in der [Kubernetes-Dokumentation](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_rollout/kubectl_rollout_restart).

Um die Anzahl der Pods zu begrenzen, die bei der Wiederverwendung von Pods gleichzeitig ausfallen, können Sie Budgets für Pod-Unterbrechung (PDBs) festlegen. Sie können PDBs verwenden, um die Mindestverfügbarkeit basierend auf den Anforderungen jeder Ihrer Anwendungen zu definieren und gleichzeitig Aktualisierungen zuzulassen. Die Mindestverfügbarkeit Ihres PDB muss unter 100 % liegen. Weitere Informationen finden Sie unter [Angabe eines Budgets für Unterbrechung in Ihrer Anwendung](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) in der Kubernetes-Dokumentation.

Amazon EKS verwendet die [Bereinigungs-AMI](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/#eviction-api), um den Pod sicher zu leeren. Dabei werden die PDBs eingehalten, die Sie für die Anwendung festgelegt haben. Pods werden von der Availability Zone bereinigt, um Auswirkungen zu minimieren. Wenn die Bereinigung erfolgreich ist, erhält der neue Pod den aktuellsten Patch und es sind keine weiteren Maßnahmen erforderlich.

Wenn die Bereinigung für einen Pod fehlschlägt, sendet Amazon EKS ein Ereignis an Ihr Konto, das Details über die Pods enthält, deren Bereinigung fehlgeschlagen ist. Sie können vor der geplanten Beendigungszeit auf die Nachricht reagieren. Die spezifische Zeit variiert je nach Dringlichkeit des Patches. Zum festgelegten Zeitpunkt versucht Amazon EKS erneut, die Pods zu bereinigen. Dieses Mal wird bei einer fehlgeschlagenen Bereinigung jedoch kein neues Ereignis gesendet. Wenn die Bereinigung erneut fehlschlägt, werden Ihre vorhandenen Pods regelmäßig gelöscht, damit neue Pods den aktuellsten Patch haben.

Nachfolgend sehen Sie ein Beispielereignis, das Sie erhalten könnten, wenn die Pod-Bereinigung fehlschlägt. Es enthält Informationen über den Cluster, den Pod-Namen, den Pod-Namespace, das Fargate-Profil und die geplante Beendigungszeit.

```
{
    "version": "0",
    "id": "12345678-90ab-cdef-0123-4567890abcde",
    "detail-type": "EKS Fargate Pod Scheduled Termination",
    "source": "aws.eks",
    "account": "111122223333",
    "time": "2021-06-27T12:52:44Z",
    "region": "region-code",
    "resources": [
        "default/my-database-deployment"
    ],
    "detail": {
        "clusterName": "my-cluster",
        "fargateProfileName": "my-fargate-profile",
        "podName": "my-pod-name",
        "podNamespace": "default",
        "evictErrorMessage": "Cannot evict pod as it would violate the pod's disruption budget",
        "scheduledTerminationTime": "2021-06-30T12:52:44.832Z[UTC]"
    }
}
```

Einer der Gründe für ein Bereinigungsfehlerereignis kann sein, dass einem Pod mehrere PDBs zugeordnet sind. In diesem Fall gibt das Ereignis die folgende Fehlernachricht zurück.

```
"evictErrorMessage": "This pod has multiple PodDisruptionBudget, which the eviction subresource does not support",
```

Basierend auf diesem Ereignis können Sie eine gewünschte Aktion erstellen. Sie können beispielsweise Ihr Budget für Pod-Unterbrechung (PDB) anpassen, um zu steuern, wie die Pods bereinigt werden. Nehmen Sie zum Beispiel an, dass Sie ein PDB starten, dass den Zielprozentsatz von verfügbaren Pods angibt. Bevor Ihre Pods während eines Upgrades automatisch beendet werden, können Sie das PDB an einen unterschiedlichen Prozentsatz von Pods anpassen. Um dieses Ereignis zu erhalten, müssen Sie eine Amazon-EventBridge-Regel im AWS-Konto und der AWS-Region erstellen, zu denen der Cluster gehört. Die Regel muss das folgende **benutzerdefinierte Muster** verwenden. Weitere Informationen finden Sie unter [Erstellen von Erstellen von Amazon-EventBridge-Regeln, die auf Ereignisse reagieren](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) im *Amazon-EventBridge-Benutzerhandbuch*.

```
{
  "source": ["aws.eks"],
  "detail-type": ["EKS Fargate Pod Scheduled Termination"]
}
```

Es kann ein geeignetes Ziel zur Erfassung durch das Ereignis festgelegt werden. Eine vollständige Liste der verfügbaren Ziele finden Sie unter [Amazon-EventBridge-Ziele](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) im *Amazon-EventBridge-Benutzerhandbuch*. Sie können eine Benachrichtigungskonfiguration in AWS-Benutzerbenachrichtigungen erstellen. Wenn Sie die AWS-Managementkonsole verwenden, um die Benachrichtigung zu erstellen, wählen Sie unter **Ereignisregeln** **Elastic Kubernetes Service (EKS)** als **AWS-Name** und **Geplante Beendigung des EKS-Fargate-Pod** als **Ereignistyp** aus. Weitere Informationen finden Sie unter [Erste Schritte mit AWS Benutzerbenachrichtigungen](https://docs.aws.amazon.com/notifications/latest/userguide/getting-started.html) im AWS-Benutzerhandbuch für Benutzerbenachrichtigungen.

Häufig gestellte Fragen zu EKS-Pod-Bereinigungen finden Sie in den [FAQs: Bereinigungsbeanchrichtigung für Fargate-Pods](https://repost.aws/knowledge-center/fargate-pod-eviction-notice) in * AWS re:Post*.

# Erfassen Sie die App- und Nutzungsmetriken von AWS Fargate
<a name="monitoring-fargate-usage"></a>

Sie können Systemmetriken und CloudWatch Nutzungsmetriken für AWS Fargate sammeln.

## Anwendungsmetriken
<a name="fargate-application-metrics"></a>

Für Anwendungen, die auf Amazon EKS und AWS Fargate ausgeführt werden, können Sie die AWS Distribution for OpenTelemetry (ADOT) verwenden. ADOT ermöglicht es Ihnen, Systemmetriken zu sammeln und sie an Container Insights-Dashboards zu CloudWatch senden. Informationen zu den ersten Schritten mit ADOT für Anwendungen, die auf Fargate ausgeführt werden, finden Sie unter [Using CloudWatch Container Insights with AWS Distro for OpenTelemetry](https://aws-otel.github.io/docs/getting-started/container-insights) in der ADOT-Dokumentation.

## Nutzungsmetriken
<a name="fargate-usage-metrics"></a>

Sie können CloudWatch Nutzungsmetriken verwenden, um einen Überblick über die Ressourcennutzung Ihres Kontos zu erhalten. Verwenden Sie diese Metriken, um Ihre aktuelle Servicenutzung in CloudWatch Diagrammen und Dashboards zu visualisieren.

 AWS Die Nutzungsmetriken von Fargate entsprechen den AWS Servicekontingenten. Sie können Alarme konfigurieren, mit denen Sie benachrichtigt werden, wenn sich Ihre Nutzung einem Servicekontingent nähert. Weitere Hinweise zu Servicekontingenten für Fargate finden Sie unter [Service Quotas für Amazon EKS und Fargate anzeigen und verwalten](service-quotas.md).

 AWS Fargate veröffentlicht die folgenden Metriken im ` AWS/Usage` Namespace.


| Metrik | Beschreibung | 
| --- | --- | 
|   `ResourceCount`   |  Die Gesamtanzahl der angegebenen Ressourcen, die in Ihrem Konto ausgeführt werden. Die Ressource wird durch die Dimensionen definiert, die der Metrik zugeordnet sind.  | 

Die folgenden Dimensionen werden verwendet, um die von AWS Fargate veröffentlichten Nutzungsmetriken zu verfeinern.


| Dimension | Description | 
| --- | --- | 
|   `Service`   |  Der Name des AWS Dienstes, der die Ressource enthält. Für AWS Fargate-Nutzungsmetriken ist `Fargate` der Wert für diese Dimension.  | 
|   `Type`   |  Der Typ der Entität, die gemeldet wird. Derzeit ist der einzig gültige Wert für AWS Fargate-Nutzungsmetriken. `Resource`  | 
|   `Resource`   |  Der Typ der Ressource, die ausgeführt wird. Derzeit gibt AWS Fargate Informationen zu Ihrer Fargate On-Demand-Nutzung zurück. Der Ressourcenwert für Fargate On-Demand-Nutzung ist `OnDemand`. [HINWEIS] ==== Die Fargate On-Demand-Nutzung kombiniert Amazon-EKS-Pods mit Fargate, Amazon-ECS-Aufgaben mit dem Fargate-Starttyp und Amazon-ECS-Aufgaben mithilfe des `FARGATE`-Kapazitätsanbieters. ====  | 
|   `Class`   |  Die Klasse der nachverfolgten Ressource. Derzeit verwendet AWS Fargate die Klassendimension nicht.  | 

### Einen CloudWatch Alarm zur Überwachung der Fargate-Ressourcennutzungsmetriken erstellen
<a name="service-quota-alarm"></a>

 AWS Fargate stellt CloudWatch Nutzungsmetriken bereit, die den AWS Servicekontingenten für die Nutzung von Fargate On-Demand-Ressourcen entsprechen. In der Service-Quotas-Konsole können Sie Ihre Nutzung in einem Diagramm visualisieren. Sie können auch Alarme konfigurieren, die Sie warnen, wenn sich Ihre Nutzung einem Service Quotas nähert. Weitere Informationen finden Sie unter [Erfassen Sie die App- und Nutzungsmetriken von AWS Fargate](#monitoring-fargate-usage).

Gehen Sie wie folgt vor, um einen CloudWatch Alarm auf der Grundlage der Fargate-Kennzahlen zur Ressourcennutzung zu erstellen.

1. Öffnen Sie die Service Quotas Quotas-Konsole unter https://console.aws.amazon.com/servicequotas/.

1. Wählen Sie im linken Navigationsbereich ** AWS Dienste** aus.

1. Suchen Sie in der ** AWS Serviceliste** nach ** AWS Fargate** und wählen Sie es aus.

1. Wählen Sie in der Liste **Service quotas** (Servicekontingente) das Fargate-Nutzungskontingent aus, für das Sie einen Alarm erstellen möchten.

1. Wählen Sie im Bereich CloudWatch Amazon-Alarme die Option **Erstellen** aus.

1. Wählen Sie bei **Alarmschwellenwert** den Prozentsatz des angewendeten Kontingentwerts aus, den Sie als Alarmwert festlegen möchten.

1. Geben Sie bei **Alarmname** einen Namen für den Alarm ein und wählen Sie dann **Erstellen** aus.

# AWS-Fargate-Protokollierung für Ihren Cluster starten
<a name="fargate-logging"></a>

Amazon EKS auf Fargate bietet einen integrierten Log-Router basierend auf Fluent Bit. Dies bedeutet, dass Sie einen Fluent-Bit-Container nicht explizit als Sidecar ausführen, sondern Amazon für Sie ausführen. Alles, was Sie tun müssen, ist den Log-Router zu konfigurieren. Die Konfiguration erfolgt über ein dediziertes `ConfigMap`, das die folgenden Kriterien erfüllen muss:
+ Benannte `aws-logging` 
+ Erstellt in einem dedizierten Namespace namens `aws-observability` 
+ Mehr als 5 300 Zeichen sind nicht zulässig.

Sobald Sie die `ConfigMap` erstellt haben, erkennt Amazon EKS in Fargate sie automatisch und konfiguriert den Protokollrouter damit. Fargate verwendet eine Version von AWS für Fluent Bit, eine Upstream-kompatible Distribution von Fluent Bit, die von AWS verwaltet wird. Weitere Informationen finden Sie unter [AWS für Fluent Bit auf](https://github.com/aws/aws-for-fluent-bit) GitHub.

Mit dem Log-Router können Sie die Bandbreite der Services von AWS für Protokoll-Analysen und -Speicherung nutzen. Sie können Protokolle von Fargate direkt an Amazon CloudWatch, Amazon OpenSearch Service streamen. Außerdem können Sie Protokolle über [Amazon Kinesis Data Firehose](https://aws.amazon.com/kinesis/data-firehose/) an Ziele wie [Amazon S3](https://aws.amazon.com/s3/), [Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/) und Partner-Tools streamen.
+ Ein vorhandenes Fargate-Profil, das einen vorhandenen Kubernetes-Namespace angibt, in dem Sie Fargate-Pods bereitstellen. Weitere Informationen finden Sie unter [Schritt 3: Fargate Profil für Ihren Cluster erstellen](fargate-getting-started.md#fargate-gs-create-profile).
+ Eine vorhandene Fargate-Pod-Ausführungsrolle. Weitere Informationen finden Sie unter [Schritt 2: Fargate-Pod-Ausführungsrolle erstellen](fargate-getting-started.md#fargate-sg-pod-execution-role).

## Router-Konfiguration protokollieren
<a name="fargate-logging-log-router-configuration"></a>

**Wichtig**  
Damit Protokolle erfolgreich veröffentlicht werden können, muss von der VPC, in der sich Ihr Cluster befindet, Netzwerkzugriff auf das Protokollziel bestehen. Dies betrifft vor allem Benutzer, die Ausgangsregeln für ihre VPC anpassen. Ein Beispiel für die Verwendung von CloudWatch finden Sie unter [Verwendung von CloudWatch-Protokollen mit Schnittstellen-VPC-Endpunkten](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html) im *Benutzerhandbuch zu Amazon CloudWatch Logs*.

Ersetzen Sie in den folgenden Schritten jedes *Beispielwert* durch Ihre eigenen Werte.

1. Erstellen Sie einen dedizierten Kubernetes-Namespace namens `aws-observability`.

   1. Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen `aws-observability-namespace.yaml` auf Ihrem Computer. Der Wert für `name` muss `aws-observability` sein und das Label `aws-observability: enabled` ist erforderlich.

      ```
      kind: Namespace
      apiVersion: v1
      metadata:
        name: aws-observability
        labels:
          aws-observability: enabled
      ```

   1. Erstellen Sie den Namespace.

      ```
      kubectl apply -f aws-observability-namespace.yaml
      ```

1. Erstellen Sie ein `ConfigMap` mit einem `Fluent Conf`-Datenwert, um Container-Logs an ein Ziel zu versenden. Fluent Conf ist Fluent Bit, eine schnelle und leichte Konfigurationssprache für den Protokollprozessor, die verwendet wird, um Container-Protokolle an ein Protokollziel Ihrer Wahl weiterzuleiten. Weitere Informationen finden Sie unter [Konfigurationsdatei](https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/classic-mode/configuration-file) in der Fluent-Bit-Dokumentation.
**Wichtig**  
In einer typischen `Fluent Conf` sind die Hauptabschnitte `Service`, `Input`, `Filter` und `Output` enthalten. Der Fargate-Protokoll-Router akzeptiert jedoch nur:  
Die Abschnitte `Filter` und `Output`.
Ein `Parser`-Abschnitt.
Wenn Sie andere Abschnitte angeben, werden diese abgelehnt.

   Der Fargate-Protokollrouter verwaltet die Abschnitte `Service` und `Input`. Es verfügt über den folgenden Abschnitt `Input`, der nicht geändert werden kann und in Ihrem `ConfigMap` nicht benötigt wird. Sie können daraus jedoch Erkenntnisse gewinnen, z. B. die Speicherpuffergrenze und das für Protokolle angewendete Tag.

   ```
   [INPUT]
       Name tail
       Buffer_Max_Size 66KB
       DB /var/log/flb_kube.db
       Mem_Buf_Limit 45MB
       Path /var/log/containers/*.log
       Read_From_Head On
       Refresh_Interval 10
       Rotate_Wait 30
       Skip_Long_Lines On
       Tag kube.*
   ```

   Berücksichtigen Sie beim Erstellen des `ConfigMap`, die folgenden Regeln, die Fargate verwendet, um Felder zu validieren:
   +  `[FILTER]`, `[OUTPUT]`, und `[PARSER]` sollen unter jedem entsprechenden Schlüssel angegeben werden. `[FILTER]` muss beispielsweise unter `filters.conf` liegen. Sie können ein oder mehrere `[FILTER]` in der `filters.conf` haben. Die Abschnitte `[OUTPUT]` und `[PARSER]` sollten sich auch unter den entsprechenden Schlüssel befinden. Durch die Angabe mehrerer `[OUTPUT]`-Abschnitte können Sie Ihre Protokolle gleichzeitig an verschiedene Ziele weiterleiten.
   + Fargate validiert die erforderlichen Schlüssel für jeden Abschnitt. `Name` und `match`sind für jedes `[FILTER]` und `[OUTPUT]` erforderlich. `Name` und `format` werden jeweils für jeden `[PARSER]` benötigt. Bei den Schlüssel wird nicht zwischen Groß- und Kleinschreibung unterschieden.
   + Umgebungsvariablen wie `${ENV_VAR}` sind im `ConfigMap` nicht erlaubt.
   + Die Einrückung muss für die Direktive oder das Schlüssel-Wert-Paar innerhalb von `filters.conf`, `output.conf` und `parsers.conf` gleich sein. Schlüssel-Wert-Paare müssen stärker eingerückt werden als Direktiven.
   + Fargate validiert gegen die folgenden unterstützten Filter: `grep`, `parser`, `record_modifier`, `rewrite_tag`, `throttle`, `nest`, `modify`, und `kubernetes`.
   + Fargate validiert mit der folgenden unterstützten Ausgabe: `es`, `firehose`, `kinesis_firehose`, `cloudwatch`, `cloudwatch_logs`, und `kinesis`.
   + Mindestens ein unterstütztes `Output`-Plugin muss im `ConfigMap` bereitgestellt werden, um die Protokollierung zu ermöglichen. `Filter` und `Parser` sind nicht erforderlich, um die Protokollierung zu aktivieren.

     Sie können Fluent Bit auch auf Amazon EC2 mit der gewünschten Konfiguration ausführen, um alle Probleme zu beheben, die sich aus der Validierung ergeben. Erstellen Sie Ihr `ConfigMap` mit einem der folgenden Beispiele.
**Wichtig**  
Die Amazon-EKS-Fargate-Protokollierung unterstützt keine dynamische Konfiguration einer `ConfigMap`. Alle Änderungen an eine `ConfigMap` werden nur auf neue Pods angewendet. Änderungen werden nicht auf vorhandene Pods angewendet.

     Erstellen Sie anhand des Beispiels ein `ConfigMap` für Ihr gewünschtes Protokollziel.
**Anmerkung**  
Sie können auch Amazon Kinesis Data Streams als Protokollziel verwenden. Stellen Sie bei der Nutzung von Kinesis Data Streams sicher, dass der Pod-Ausführungsrolle die Berechtigung `kinesis:PutRecords` erteilt wurde. Weitere Informationen finden Sie unter [Berechtigungen](https://docs.fluentbit.io/manual/pipeline/outputs/kinesis#permissions) für Amazon Kinesis Data Streams im offiziellen *Handbuch zu Fluent Bit*.  
**Example**  

------
#### [ CloudWatch ]

   Bei der Verwendung von CloudWatch haben Sie zwei Ausgabeoptionen:
   +  [Ein Ausgabe-Plug-In in C geschrieben](https://docs.fluentbit.io/manual/v/1.5/pipeline/outputs/cloudwatch) 
   +  [Ein in Golang geschriebenes Ausgabe-Plug-In](https://github.com/aws/amazon-cloudwatch-logs-for-fluent-bit) 

   Das folgende Beispiel zeigt Ihnen, wie Sie das `cloudwatch_logs`-Plug-in verwenden, um Protokolle an CloudWatch zu senden.

   1. Speichern Sie den folgenden Inhalt in einer Datei namens `aws-logging-cloudwatch-configmap.yaml`. Ersetzen Sie den *region-code* durch die AWS-Region, in der sich Ihr Cluster befindet. Die Parameter unter `[OUTPUT]` sind erforderlich.

      ```
      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: aws-logging
        namespace: aws-observability
      data:
        flb_log_cw: "false"  # Set to true to ship Fluent Bit process logs to CloudWatch.
        filters.conf: |
          [FILTER]
              Name parser
              Match *
              Key_name log
              Parser crio
          [FILTER]
              Name kubernetes
              Match kube.*
              Merge_Log On
              Keep_Log Off
              Buffer_Size 0
              Kube_Meta_Cache_TTL 300s
        output.conf: |
          [OUTPUT]
              Name cloudwatch_logs
              Match   kube.*
              region region-code
              log_group_name my-logs
              log_stream_prefix from-fluent-bit-
              log_retention_days 60
              auto_create_group true
        parsers.conf: |
          [PARSER]
              Name crio
              Format Regex
              Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>P|F) (?<log>.*)$
              Time_Key    time
              Time_Format %Y-%m-%dT%H:%M:%S.%L%z
      ```

   1. Wenden Sie das Manifest auf Ihren Cluster an.

      ```
      kubectl apply -f aws-logging-cloudwatch-configmap.yaml
      ```

------
#### [ Amazon OpenSearch Service ]

   Wenn Sie Protokolle an Amazon OpenSearch Service senden möchten, können Sie die [es](https://docs.fluentbit.io/manual/v/1.5/pipeline/outputs/elasticsearch)-Ausgabe verwenden, ein in C geschriebenes Plug-In. Das folgende Beispiel zeigt, wie Sie mit dem Plug-In Protokolle an OpenSearch senden können.

   1. Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen `aws-logging-opensearch-configmap.yaml`. Ersetzen Sie jeden *Beispielwert* durch Ihre eigenen Werte.

      ```
      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: aws-logging
        namespace: aws-observability
      data:
        output.conf: |
          [OUTPUT]
            Name  es
            Match *
            Host  search-example-gjxdcilagiprbglqn42jsty66y.region-code.es.amazonaws.com
            Port  443
            Index example
            Type  example_type
            AWS_Auth On
            AWS_Region region-code
            tls   On
      ```

   1. Wenden Sie das Manifest auf Ihren Cluster an.

      ```
      kubectl apply -f aws-logging-opensearch-configmap.yaml
      ```

------
#### [ Firehose ]

   Beim Senden von Protokollen an Firehose haben Sie zwei Ausgabeoptionen:
   +  [kinesis\$1firehose](https://docs.fluentbit.io/manual/pipeline/outputs/firehose) – Ein in C geschriebenes Ausgabe-Plugin.
   +  [firehose](https://github.com/aws/amazon-kinesis-firehose-for-fluent-bit) – Ein in Golang geschriebenes Ausgabe-Plugin.

     Das folgende Beispiel zeigt Ihnen, wie Sie das `kinesis_firehose`-Plugin verwenden, um Protokolle an Firehose zu senden.

     1. Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen `aws-logging-firehose-configmap.yaml`. Ersetzen Sie den *region-code* durch die AWS-Region, in der sich Ihr Cluster befindet.

        ```
        kind: ConfigMap
        apiVersion: v1
        metadata:
          name: aws-logging
          namespace: aws-observability
        data:
          output.conf: |
            [OUTPUT]
             Name  kinesis_firehose
             Match *
             region region-code
             delivery_stream my-stream-firehose
        ```

     1. Wenden Sie das Manifest auf Ihren Cluster an.

        ```
        kubectl apply -f aws-logging-firehose-configmap.yaml
        ```

------

1. Richten Sie Berechtigungen für die Fargate-Pod-Ausführungsrolle ein, um Protokolle an Ihr Ziel zu senden.

   1. Laden Sie die IAM-Richtlinie für Ihr Ziel auf Ihren Computer herunter.  
**Example**  

------
#### [ CloudWatch ]

      Laden Sie die CloudWatch IAM-Richtlinie auf Ihren Computer herunter. Sie können die [Richtlinie](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json) auch auf GitHub anzeigen.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json
      ```

------
#### [ Amazon OpenSearch Service ]

      Laden Sie die OpenSearch-IAM-Richtlinie auf Ihren Computer herunter. Sie können die [Richtlinie](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/amazon-elasticsearch/permissions.json) auch auf GitHub anzeigen.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/amazon-elasticsearch/permissions.json
      ```

      Stellen Sie sicher, dass die Zugriffssteuerung von OpenSearch Dashboards richtig konfiguriert ist. Dem `all_access role` in OpenSearch-Dashboards muss die Fargate-Pod-Ausführungsrolle und die IAM-Rolle zugeordnet sein. Das gleiche Mapping muss für die `security_manager`-Rolle durchgeführt werden. Sie können die vorherigen Zuordnungen hinzufügen, indem Sie `Menu`, dann `Security`, dann `Roles` und dann die entsprechenden Rollen auswählen. Weitere Informationen finden Sie unter [Wie behebe ich Probleme mit CloudWatch Logs, damit es an meine Amazon-ES-Domain gestreamt wird?](https://aws.amazon.com/tr/premiumsupport/knowledge-center/es-troubleshoot-cloudwatch-logs/).

------
#### [ Firehose ]

      Laden Sie die Firehose-IAM-Richtlinie auf Ihren Computer herunter. Sie können die [Richtlinie](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/kinesis-firehose/permissions.json) auch auf GitHub anzeigen.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/kinesis-firehose/permissions.json
      ```

------

   1. Erstellen Sie eine IAM-Richtlinie aus der heruntergeladenen Richtliniendatei.

      ```
      aws iam create-policy --policy-name eks-fargate-logging-policy --policy-document file://permissions.json
      ```

   1. Hängen Sie die IAM-Richtlinie an die Pod-Ausführungsrolle an, die für Ihr Fargate-Profil angegeben ist, mit dem folgenden Befehl. Ersetzen Sie *111122223333* durch Ihre Konto-ID. Ersetzen Sie *AmazonEKSFargatePodExecutionRole* durch Ihre Pod-Ausführungsrolle (weitere Informationen finden Sie unter [Schritt 2: Fargate-Pod-Ausführungsrolle erstellen](fargate-getting-started.md#fargate-sg-pod-execution-role)).

      ```
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::111122223333:policy/eks-fargate-logging-policy \
        --role-name AmazonEKSFargatePodExecutionRole
      ```

### Support von Kubernetes-Filtern
<a name="fargate-logging-kubernetes-filter"></a>

Mit dem Fluent-Bit-Kubernetes-Filter können Sie Kubernetes-Metadaten zu Ihren Protokolldateien hinzufügen. Weitere Informationen über den Filter finden Sie unter [Kubernetes](https://docs.fluentbit.io/manual/pipeline/filters/kubernetes) in der Fluent-Bit-Dokumentation. Sie können einen Filter unter Verwendung des Endpunkts des API-Servers anwenden.

```
filters.conf: |
    [FILTER]
        Name             kubernetes
        Match            kube.*
        Merge_Log           On
        Buffer_Size         0
        Kube_Meta_Cache_TTL 300s
```

**Wichtig**  
 `Kube_URL`,`Kube_CA_File`,`Kube_Token_Command`, und `Kube_Token_File` sind Konfigurationsparameter im Servicebesitz und dürfen nicht angegeben werden. Amazon-EKS-Fargate füllt diese Werte aus.
 `Kube_Meta_Cache_TTL` ist die Zeit, in der Fluent Bit wartet, bis es mit dem API-Server für die neuesten Metadaten kommuniziert. Wenn `Kube_Meta_Cache_TTL` nicht angegeben wird, dann hängt Amazon EKS Fargate einen Standardwert von 30 Minuten an, um die Belastung des API-Servers zu verringern.

### So übermitteln Sie Fluent-Bit-Prozessprotokolle an Ihr Konto
<a name="ship-fluent-bit-process-logs"></a>

Sie können Fluent-Bit-Prozessprotokolle optional mit den folgenden `ConfigMap` an Amazon CloudWatch senden. Für den Versand von Fluent Bit-Prozessprotokollen an CloudWatch fallen zusätzliche Kosten für die Protokollaufnahme und Speicherung an. Ersetzen Sie den *region-code* durch die AWS-Region, in der sich Ihr Cluster befindet.

```
kind: ConfigMap
apiVersion: v1
metadata:
  name: aws-logging
  namespace: aws-observability
  labels:
data:
  # Configuration files: server, input, filters and output
  # ======================================================
  flb_log_cw: "true"  # Ships Fluent Bit process logs to CloudWatch.

  output.conf: |
    [OUTPUT]
        Name cloudwatch
        Match kube.*
        region region-code
        log_group_name fluent-bit-cloudwatch
        log_stream_prefix from-fluent-bit-
        auto_create_group true
```

Die Protokolle befinden sich in CloudWatch in derselben AWS-Region wie der Cluster. Der Name der Protokollgruppe lautet ` my-cluster-fluent-bit-logs` und der Name des Fluent-Bit-Logstreams lautet `fluent-bit-podname-pod-namespace `.

**Anmerkung**  
Die Prozessprotokolle werden nur ausgeliefert, wenn der Fluent-Bit-Prozess erfolgreich gestartet wird. Wenn beim Starten von Fluent Bit ein Fehler auftritt, werden die Prozessprotokolle verpasst. Sie können nur Prozessprotokolle an CloudWatch senden.
Um Versandprozessprotokolle auf Ihr Konto zu debuggen, können Sie die vorherigen `ConfigMap` anwenden, um die Prozessprotokolle zu erhalten. Dass Fluent Bit nicht gestartet werden kann, liegt normalerweise daran, dass Ihr `ConfigMap` beim Starten nicht von Fluent Bit analysiert oder akzeptiert wird.

### So beenden Sie die Übermittlung von Fluent-Bit-Prozessprotokollen
<a name="stop-fluent-bit-process-logs"></a>

Für den Versand von Fluent Bit-Prozessprotokollen an CloudWatch fallen zusätzliche Kosten für die Protokollaufnahme und Speicherung an. Gehen Sie wie folgt vor, um Prozessprotokolle in einem vorhandenen `ConfigMap`-Setup auszuschließen.

1. Suchen Sie die CloudWatch-Protokollgruppe, die automatisch für die Fluent-Bit-Prozessprotokolle Ihres Amazon-EKS-Clusters erstellt wurde, nachdem Sie die Fargate-Protokollierung aktiviert haben. Es folgt dem Format ` my-cluster-fluent-bit-logs`.

1. Löschen Sie die vorhandenen CloudWatch-Protokollstreams, die für die Prozessprotokolle der einzelnen Pods in der CloudWatch-Protokollgruppe erstellt wurden.

1. Bearbeiten Sie die `ConfigMap` und stellen Sie `flb_log_cw: "false"` ein.

1. Starten Sie alle vorhandenen Pods im Cluster neu.

## Testanwendung
<a name="fargate-logging-test-application"></a>

1. Stellen Sie einen Beispiel-Pod bereit.

   1. Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen `sample-app.yaml` auf Ihrem Computer.

      ```
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: sample-app
        namespace: same-namespace-as-your-fargate-profile
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
              - name: nginx
                image: nginx:latest
                ports:
                  - name: http
                    containerPort: 80
      ```

   1. Wenden Sie das Manifest auf den Cluster an.

      ```
      kubectl apply -f sample-app.yaml
      ```

1. Zeigen Sie die NGINX-Protokolle mit den Zielen an, die Sie im `ConfigMap`.

## Größenüberlegungen
<a name="fargate-logging-size-considerations"></a>

Wir empfehlen Ihnen, für den Protokoll-Router bis zu 50 MB Speicher einzuplanen. Wenn Sie erwarten, dass Ihre Anwendung Protokolle mit sehr hohem Durchsatz generiert, sollten Sie bis zu 100 MB einplanen.

## Fehlersuche
<a name="fargate-logging-troubleshooting"></a>

Um zu überprüfen, ob das Protokollierungs-Feature aus irgendeinem Grund aktiviert oder deaktiviert ist, z. B. ein ungültiges `ConfigMap`, und warum es ungültig ist, überprüfen Sie Ihre Pod-Ereignisse mit `kubectl describe pod pod-name `. Die Ausgabe kann Pod-Ereignisse enthalten, die klarstellen, ob die Protokollierung aktiviert ist oder nicht, wie die folgende Beispielausgabe.

```
[...]
Annotations:          CapacityProvisioned: 0.25vCPU 0.5GB
                      Logging: LoggingDisabled: LOGGING_CONFIGMAP_NOT_FOUND
[...]
Events:
  Type     Reason           Age        From                                                           Message
  ----     ------           ----       ----                                                           -------
  Warning  LoggingDisabled  <unknown>  fargate-scheduler                                              Disabled logging because aws-logging configmap was not found. configmap "aws-logging" not found
```

Die Pod-Ereignisse sind kurzlebig mit einem Zeitraum, der von den Einstellungen abhängt. Sie können die Annotationen eines Pods auch mit `kubectl describe pod pod-name ` anzeigen. In der Pod-Annotation finden Sie Informationen darüber, ob die Protokollierungs-Feature aktiviert oder deaktiviert ist, und den Grund.

# Auswahl eines optimalen Amazon-EC2-Knoten-Instance-Typs
<a name="choosing-instance-type"></a>

Amazon EC2 bietet eine große Auswahl an Instance-Typen für Worker-Knoten. Jeder Instance-Typ bietet andere Merkmale in Bezug auf Datenverarbeitung, Arbeitsspeicher, Speicher und Netzwerkfunktionen. Jede Instance wird abhängig von diesen Eigenschaften auch in Instance-Familien eingeordnet. Eine Liste finden Sie unter [Verfügbare Instance-Typen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes) im *Amazon-EC2-Benutzerhandbuch*. Amazon EKS veröffentlicht mehrere Varianten von Amazon EC2 AMIs , um den Support zu ermöglichen. Berücksichtigen Sie die folgenden Kriterien, um sicherzustellen, dass der ausgewählte Instance-Typ mit Amazon EKS kompatibel ist.
+ Alle Amazon EKS unterstützen die `mac` Familie derzeit AMIs nicht.
+ Arm und Amazon EKS ohne Beschleunigung unterstützen die `p` Familien`g3`, `g4``inf`, und AMIs nicht.
+ Accelerated Amazon EKS unterstützt die `t` Familien `a``c`,`hpc`,`m`, und AMIs nicht.
+ Für ARM-basierte Instances unterstützt Amazon Linux 2023 (AL2023) nur Instance-Typen, die Graviton2-Prozessoren oder neuere Prozessoren verwenden. AL2023 unterstützt keine Instances. `A1`

Berücksichtigen Sie bei der Auswahl zwischen Instance-Typen, die von Amazon EKS unterstützt werden, die folgenden Funktionen jedes Typs.

 **Anzahl der Instances in einer Knotengruppe**   
Im Allgemeinen sind weniger, dafür größere Instances vorzuziehen, insbesondere wenn Sie über viele Daemonsets verfügen. Jede Instance erfordert API-Aufrufe an den API-Server. Je mehr Instances Sie haben, desto mehr Last auf dem API-Server.

 **Betriebssystem**   
Überprüfen Sie die unterstützten Instance-Typen für [Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html), [Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html) und [Bottlerocket](https://aws.amazon.com/bottlerocket/faqs/). Lesen Sie vor dem Erstellen von Windows-Instances den Abschnitt [Bereitstellen von Windows-Knoten in EKS-Clustern](windows-support.md).

 **Hardware-Architektur**   
Benötigen Sie x86 oder Arm? Bevor Sie Arm-Instances bereitstellen, sollten Sie sich mit dem für [Amazon EKS optimierten Arm Amazon Linux vertraut machen AMIs](eks-optimized-ami.md#arm-ami). Benötigen Sie Instances, die auf dem Nitro-System ([Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances) oder [Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#ec2-nitro-instances)) basieren oder über [Beschleunigte](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/accelerated-computing-instances.html) Funktionen verfügen? Wenn Sie beschleunigte Funktionen benötigen, können Sie Linux nur mit Amazon EKS verwenden.

 **Maximale Anzahl an Pods**   
Da jedem Pod eine eigene IP-Adresse zugewiesen wird, ist die Anzahl der IP-Adressen für einen Instance-Typ ein Faktor bei der Bestimmung der Anzahl der Pods, die auf der Instance ausgeführt werden können. Um manuell zu bestimmen, wie viele Pods ein Instance-Typ unterstützt, lesen Sie .  
 [AWS Nitro System-Instance-Typen](https://aws.amazon.com/ec2/nitro/) unterstützen optional deutlich mehr IP-Adressen als Instance-Typen, die nicht zu Nitro System gehören. Allerdings stehen Pods nicht alle IP-Adressen zur Verfügung, die einer Instance zugewiesen wurden. Um Ihren Instances eine deutlich größere Anzahl von IP-Adressen zuzuweisen, müssen Sie Version `1.9.0` oder höher des Amazon VPC CNI-Add-ons in Ihrem Cluster installiert und entsprechend konfiguriert haben. Weitere Informationen finden Sie unter [Zuweisung weiterer IP-Adressen mit Präfixen zu Amazon-EKS-Knoten](cni-increase-ip-addresses.md). Um Ihren Instances die größte Anzahl von IP-Adressen zuzuweisen, müssen Sie Version `1.10.1` oder höher des Amazon VPC CNI-Add-ons in Ihrem Cluster installiert haben und den Cluster mit der `IPv6`-Familie bereitstellen.

 **IP-Familie**   
Sie können jeden unterstützten Instance-Typ verwenden, wenn Sie die `IPv4`-Familie für einen Cluster nutzen, was es Ihrem Cluster ermöglicht, Ihren Pods und Services private `IPv4`-Adressen zuzuweisen. Wenn Sie jedoch die `IPv6`-Familie für Ihren Cluster verwenden möchten, müsste Sie die [AWS -Nitro-System](https://aws.amazon.com/ec2/nitro/)-Instance-Typen oder Bare-Metal-Instance-Typen verwenden. Nur `IPv4` wird für Windows-Instances unterstützt. Ihr Cluster muss auf dem Version `1.10.1` oder höher des Amazon-VPC-CNI-Add-ons ausgeführt wird. Weitere Informationen zur Verwendung von `IPv6` finden Sie unter [Erfahren Sie mehr über IPv6 Adressen für Cluster, Pods und Dienste](cni-ipv6.md).

 **Version des Amazon-VPC-CNI-Add-Ons, das Sie ausführen**   
Die aktuelle Version des [Amazon-CNI-Plugins für Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s) unterstützt [diese Instance-Typen](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/pkg/vpc/vpc_ip_resource_limit.go). Möglicherweise müssen Sie Ihre Amazon VPC-CNI-Add-on-Version aktualisieren, um die Vorteile der neuesten unterstützten Instance-Typen zu nutzen. Weitere Informationen finden Sie unter [Pods mit dem Amazon VPC CNI zuweisen IPs](managing-vpc-cni.md). Die neueste Version unterstützt die neuesten Features für die Verwendung mit Amazon EKS. Frühere Versionen unterstützen nicht alle Feature. Sie können die von verschiedenen Versionen unterstützten Features im [Änderungsverlauf](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/CHANGELOG.md) auf GitHub anzeigen.

 ** AWS -Region, in der Sie Ihre Knoten erstellen**   
Nicht alle Instanztypen sind in allen Regionen verfügbar. AWS 

 **Ob Sie Sicherheitsgruppen für Pods verwenden**   
Wenn Sie Sicherheitsgruppen für Pods verwenden, werden nur bestimmte Instance-Typen unterstützt. Weitere Informationen finden Sie unter [Einzelnen Pods Sicherheitsgruppen zuweisen](security-groups-for-pods.md).

## Wie wird MaxPods bestimmt
<a name="max-pods-precedence"></a>

Der endgültige `maxPods` Wert, der auf einen Knoten angewendet wird, hängt von mehreren Komponenten ab, die in einer bestimmten Rangfolge interagieren. Wenn Sie diese Reihenfolge kennen, können Sie unerwartetes Verhalten beim Anpassen `maxPods` vermeiden.

 **Rangfolge (vom höchsten zum niedrigsten Wert):** 

1.  **Durchsetzung verwalteter Knotengruppen** — Wenn Sie eine verwaltete Knotengruppe ohne [benutzerdefiniertes AMI](launch-templates.md#launch-template-custom-ami) verwenden, erzwingt Amazon EKS eine Obergrenze für die Benutzerdaten des Knotens. `maxPods` Für Instances mit weniger als 30 V CPUs beträgt `110` die Obergrenze. Für Fälle mit mehr als 30 V CPUs beträgt die Obergrenze`250`. Dieser Wert hat Vorrang vor jeder anderen `maxPods` Konfiguration, einschließlich`maxPodsExpression`.

1.  **`maxPods`Kubelet-Konfiguration** — Wenn Sie ihn `maxPods` direkt in der Kubelet-Konfiguration festlegen (z. B. über eine Startvorlage mit einem benutzerdefinierten AMI), hat dieser Wert Vorrang vor. `maxPodsExpression`

1.  **nodeadm `maxPodsExpression`** — Wenn Sie [https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/examples/#defining-a-max-pods-expression](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/examples/#defining-a-max-pods-expression)in Ihrem `NodeConfig` verwenden, wertet nodeadm den zu berechnenden Ausdruck aus. `maxPods` Dies ist nur wirksam, wenn der Wert nicht bereits von einer Quelle mit höherer Priorität festgelegt wurde.

1.  **ENI-basierte Standardberechnung** — Wenn kein anderer Wert festgelegt ist, berechnet das AMI auf der `maxPods` Grundlage der Anzahl der Elastic Network-Schnittstellen und IP-Adressen, die vom Instance-Typ unterstützt werden. Dies entspricht der Formel. `(number of ENIs × (IPs per ENI − 1)) + 2` Die `+ 2` Konten für die Amazon VPC CNI, die auf jedem Knoten `kube-proxy` laufen und keine Pod-IP-Adresse verbrauchen.

**Wichtig**  
Wenn Sie eine verwaltete Knotengruppe verwenden und Ihre angeben `maxPodsExpression``NodeConfig`, hat die Durchsetzung der verwalteten Knotengruppe Vorrang vor Ihrem Ausdruck. Um einen benutzerdefinierten `maxPods` Wert mit verwalteten Knotengruppen zu verwenden, müssen Sie in Ihrer Startvorlage ein benutzerdefiniertes AMI angeben und `maxPods` direkt festlegen. Weitere Informationen finden Sie unter [Verwaltete Knoten mit Startvorlagen anpassen](launch-templates.md).

 **Verwaltete Knotengruppen im Vergleich zu selbstverwalteten Knoten** 

Bei verwalteten Knotengruppen (ohne benutzerdefiniertes AMI) fügt Amazon EKS den `maxPods` Wert in die Bootstrap-Benutzerdaten des Knotens ein. Das bedeutet Folgendes:
+ Der `maxPods` Wert ist immer auf `110` oder `250` abhängig von der Instance-Größe begrenzt.
+ Jeder von `maxPodsExpression` Ihnen konfigurierte Wert wird durch diesen injizierten Wert überschrieben.
+ Um einen anderen `maxPods` Wert zu verwenden, geben Sie ein benutzerdefiniertes AMI in Ihrer Startvorlage an `--use-max-pods false` und übergeben `--kubelet-extra-args '--max-pods=my-value'` es an das `bootstrap.sh` Skript. Beispiele finden Sie unter [Verwaltete Knoten mit Startvorlagen anpassen](launch-templates.md).

Bei selbstverwalteten Knoten haben Sie die volle Kontrolle über den Bootstrap-Prozess. Sie können es `maxPodsExpression` in Ihrem verwenden `NodeConfig` oder `--max-pods` direkt an übergeben. `bootstrap.sh`

## Überlegungen zu EKS Auto Mode
<a name="_considerations_for_eks_auto_mode"></a>

EKS Auto Mode begrenzt die Anzahl der Pods auf Knoten auf den niedrigeren der folgenden Werte:
+ 110 Pods, feste Obergrenze
+ Das Ergebnis der oben beschriebenen Berechnung der maximalen Anzahl von Pods.

# Erstellung von Knoten mit vorgefertigten optimierten Images
<a name="eks-optimized-amis"></a>

Sie können Knoten mit vorgefertigten, für [Amazon EKS optimierten Amazon Machine Images](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) (AMIs) oder Ihren eigenen benutzerdefinierten AMIs bereitstellen, wenn Sie verwaltete Knotengruppen oder selbstverwaltete Knoten verwenden. Wenn Sie Hybridknoten ausführen, lesen Sie [Vorbereitung des Betriebssystems für Hybridknoten](hybrid-nodes-os.md). Informationen über die einzelnen Typen von Amazon-EKS-optimierten AMIs finden Sie in den folgenden Themen. Anweisungen zum Erstellen eines eigenen benutzerdefinierten AMI finden Sie unter [Erstellen Sie ein benutzerdefiniertes EKS-optimiertes Amazon Linux-AMI](eks-ami-build-scripts.md).

Mit Amazon EKS Auto Mode verwaltet EKS die EC2-Instance, einschließlich der Auswahl und Aktualisierung der AMI.

**Topics**
+ [

# Leitfaden zu den Funktionen von EKS AL2 und AL2 -Accelerated AMIs Transition
](eks-ami-deprecation-faqs.md)
+ [

# Knoten mit optimiertem Amazon Linux erstellen AMIs
](eks-optimized-ami.md)
+ [

# Erstellen Sie Knoten mit optimiertem Bottlerocket AMIs
](eks-optimized-ami-bottlerocket.md)
+ [

# Erstellung von Knoten mit optimierten Ubuntu-Linux-AMIs
](eks-partner-amis.md)
+ [

# Knoten mit optimiertem Windows erstellen AMIs
](eks-optimized-windows-ami.md)

# Leitfaden zu den Funktionen von EKS AL2 und AL2 -Accelerated AMIs Transition
<a name="eks-ami-deprecation-faqs"></a>

**Warnung**  
Amazon EKS hat die Veröffentlichung von EKS-optimiertem Amazon Linux 2 (AL2) AMIs am 26. November 2025 eingestellt. AL2023 und Bottlerocket auf Basis von Amazon EKS sind AMIs für alle unterstützten Kubernetes-Versionen einschließlich 1.33 und höher verfügbar.

 AWS wird die Unterstützung für EKS — AL2 optimiert und AL2 beschleunigt — mit Wirkung zum 26. November 2025 einstellen. AMIs Sie können EKS zwar auch AL2 AMIs nach dem end-of-support (EOS-) Datum (26. November 2025) weiter verwenden, nach diesem Datum wird EKS jedoch keine neuen Kubernetes-Versionen oder Updates mehr veröffentlichen AL2 AMIs, einschließlich kleinerer Releases, Patches und Bugfixes. Wir empfehlen ein Upgrade auf Amazon Linux 2023 (AL2023) oder AMIs Bottlerocket:
+ AL2023 ermöglicht einen secure-by-default Ansatz mit vorkonfigurierten Sicherheitsrichtlinien SELinux im permissiven Modus, standardmäßig aktiviertem IMDSv2 Nur-Modus, optimierten Startzeiten und verbesserter Paketverwaltung für mehr Sicherheit und Leistung. Er eignet sich gut für Infrastrukturen, die umfangreiche Anpassungen wie direkten Zugriff auf Betriebssystemebene oder umfangreiche Knotenänderungen erfordern. Weitere Informationen finden Sie unter [AL2 FAQs023](https://aws.amazon.com/linux/amazon-linux-2023/faqs/) oder in unseren ausführlichen Migrationsleitlinien unter. [Upgrade von Amazon Linux 2 zu Amazon Linux 2023](al2023.md)
+ Bottlerocket bietet mit seinem speziell entwickelten, containeroptimierten Design verbesserte Sicherheit, schnellere Bootzeiten und eine kleinere Angriffsfläche für mehr Effizienz. Es eignet sich gut für containernative Ansätze mit minimalen Knotenanpassungen. Weitere Informationen finden Sie auf [Bottlerocket FAQs](https://aws.amazon.com/bottlerocket/faqs/) oder in unseren ausführlichen Migrationsleitfäden unter. [Erstellen Sie Knoten mit optimiertem Bottlerocket AMIs](eks-optimized-ami-bottlerocket.md)

Alternativ können Sie dies [Erstellen Sie ein benutzerdefiniertes EKS-optimiertes Amazon Linux-AMI](eks-ami-build-scripts.md) bis zum EOS-Datum (26. November 2025) tun. Darüber hinaus können Sie bis zum Amazon Linux 2 EOS-Datum (30. Juni 2026) ein benutzerdefiniertes AMI mit einer Amazon Linux 2-Basis-Instance erstellen.

## Migration und Support FAQs
<a name="_migration_and_support_faqs"></a>

### Wie migriere ich von meinem AL2 auf ein AL2 023 AMI?
<a name="_how_do_i_migrate_from_my_al2_to_an_al2023_ami"></a>

Wir empfehlen, einen Migrationsplan zu erstellen und zu implementieren, der gründliche Anwendungs-Workload-Tests und dokumentierte Rollback-Verfahren umfasst. Folgen Sie anschließend den step-by-step Anweisungen im [Abschnitt Upgrade von Amazon Linux 2 auf Amazon Linux 2023](https://docs.aws.amazon.com/eks/latest/userguide/al2023.html) in der offiziellen EKS-Dokumentation.

### Kann ich ein benutzerdefiniertes AL2 AMI erstellen, das nach dem EKS end-of-support (EOS) -Datum für EKS optimiert ist AL2 AMIs?
<a name="_can_i_build_a_custom_al2_ami_past_the_eks_end_of_support_eos_date_for_eks_optimized_al2_amis"></a>

Wir empfehlen zwar, auf offiziell unterstütztes und veröffentlichtes EKS umzusteigen, das AMIs für AL2 023 oder Bottlerocket optimiert ist, aber Sie können AMIs bis zum AL2 AL2 AMI-EOS-Datum (26. November 2025) benutzerdefinierte EKS erstellen, die optimiert und AL2 beschleunigt sind. Alternativ können Sie bis zum EOS-Datum von Amazon Linux 2 (30. Juni 2026) eine benutzerdefinierte AMI mit einer Basis-Instance für Amazon Linux 2 erstellen. step-by-stepAnweisungen zum Erstellen eines benutzerdefinierten AL2 EKS-optimierten und AL2 -beschleunigten AMI finden Sie unter [Erstellen eines benutzerdefinierten Amazon Linux-AMI](https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-build-scripts.html) in der offiziellen EKS-Dokumentation.

### Ist die EKS-Kubernetes-Versionsrichtlinie für Amazon-Linux-Verteilungen anwendbar?
<a name="_does_the_eks_kubernetes_version_support_policy_apply_to_amazon_linux_distributions"></a>

Nein. Das EOS-Datum für EKS AL2 — optimiert und AL2 beschleunigt — AMIs ist unabhängig von den standardmäßigen und erweiterten Supportzeiten für Kubernetes-Versionen von EKS. Sie müssen zu AL2 023 oder Bottlerocket migrieren, auch wenn Sie den erweiterten EKS-Support verwenden.

### Wie wirkt sich die Umstellung von cgroupv1 auf cgroupv2 auf meine Migration aus?
<a name="_how_does_the_shift_from_cgroupv1_to_cgroupv2_affect_my_migration"></a>

Die [Kubernetes-Community](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/4569-cgroup-v1-maintenance-mode/README.md) hat den `cgroupv1` Support (verwendet von AL2) in den Wartungsmodus versetzt, was bedeutet, dass keine neuen Funktionen hinzugefügt werden und nur kritische Sicherheits- und größere Bugfixes bereitgestellt werden. Um `cgroupv2` in Kubernetes zu implementieren, müssen Sie die Kompatibilität zwischen Betriebssystem, Kernel, Container-Laufzeit und Kubernetes-Komponenten sicherstellen. Dies erfordert eine `cgroupv2` standardmäßig aktivierte Linux-Distribution wie AL2 023, Bottlerocket, Red Hat Enterprise Linux (RHEL) 9\$1, Ubuntu 22.04\$1 oder Debian 11\$1. Diese Verteilungen werden mit Kernel-Versionen ≥5.8 bereitgestellt, was die Mindestanforderung für den `cgroupv2`-Support in Kubernetes darstellt. Weitere Informationen finden Sie unter [Über cgroup v2](https://kubernetes.io/docs/concepts/architecture/cgroups/).

### Was mache ich, wenn ich Neuron in meinem benutzerdefinierten AL2 AMI benötige?
<a name="_what_do_i_do_if_i_need_neuron_in_my_custom_al2_ami"></a>

Sie können Ihre vollständigen Neuron-gestützten Anwendungen nicht nativ auf einem Based ausführen. AL2 AMIs Um AWS Neuron auf einem AL2 AMI zu nutzen, müssen Sie Ihre Anwendungen mithilfe eines von NEURON unterstützten Containers mit einer AL2 Nicht-Linux-Distribution (z. B. Ubuntu 22.04, Amazon Linux 2023 usw.) containerisieren und diese Container dann auf einem AL2 basierten AMI bereitstellen, auf dem der Neuron Driver () installiert ist. `aws-neuronx-dkms`

### Sollte ich nach dem EKS AL2 AMI EOS-Datum (26. November 2025) zu einer bloßen Amazon Linux 2-Basisinstanz wechseln?
<a name="_should_i_switch_to_a_bare_amazon_linux_2_base_instance_after_the_eks_al2_ami_eos_date_november_26_2025"></a>

Beim Umstieg auf eine bloße Amazon Linux 2-Basisinstanz fehlen die spezifischen Optimierungen, Container-Laufzeitkonfigurationen und Anpassungen, die von der offiziellen AL2 EKS-Version bereitgestellt werden — optimiert und beschleunigt. AL2 AMIs Wenn Sie weiterhin eine AL2 basierte Lösung verwenden müssen, empfehlen wir stattdessen, ein benutzerdefiniertes AMI mithilfe der EKS AMI-Rezepte unter [Erstellen Sie ein benutzerdefiniertes EKS-optimiertes Amazon Linux-AMI](eks-ami-build-scripts.md) oder der [Amazon EKS AMI Build Specification zu erstellen](https://github.com/awslabs/amazon-eks-ami). Dies gewährleistet die Kompatibilität mit Ihren vorhandenen Workloads und beinhaltet AL2 Kernel-Updates bis zum Amazon Linux 2 EOS-Datum (30. Juni 2026).

### Welche Unterstützung ist für Pakete aus GitHub Repositorys wie amzn2-core und amzn2extra-docker verfügbar, wenn ein benutzerdefiniertes AL2 AL2 AMI mithilfe des EKS-AMI-Repositorys nach dem EKS AMI-EOS-Datum (26. November 2025) erstellt wird?
<a name="_when_building_a_custom_al2_ami_using_the_eks_ami_github_repository_after_the_eks_al2_ami_eos_date_november_26_2025_what_support_is_available_for_packages_from_repositories_like_amzn2_core_and_amzn2extra_docker"></a>

Die EKS-AMI-Anleitung unter [Amazon-EKS-AMI-Entwicklungspezifikation](https://github.com/awslabs/amazon-eks-ami) zieht Pakete über YUM aus standardmäßiger Amazon Linux 2 Software wie [amzn2-core](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html) und [amzn2extra-docker](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html). Nach dem EKS AL2 AMI EOS-Datum (26. November 2025) wird diese Software bis zum breiteren Amazon Linux 2 EOS-Datum (30. Juni 2026) weiterhin unterstützt. Beachten Sie, dass der Support während dieses Zeitraums auf Kernel-Aktualisierungen beschränkt ist. Das bedeutet, dass Sie andere Paket-Aktualisierungen, Sicherheits-Patches und alle Nicht-Kernel-Abhängigkeiten manuell verwalten und anwenden müssen, um die Sicherheit und Kompatibilität aufrechtzuerhalten.

### Warum kann es bei Java-Anwendungen, die ältere Versionen von JDK8 auf Amazon EKS mit AL2 023 verwenden, zu Out-of-Memory-Ausnahmen (OOM) und Pod-Neustarts kommen, und wie kann dieses Problem behoben werden?
<a name="_why_might_java_applications_using_older_versions_of_jdk8_on_amazon_eks_with_al2023_experience_out_of_memory_oom_exceptions_and_pod_restarts_and_how_can_this_be_resolved"></a>

Bei der Ausführung auf Amazon EKS-Knoten mit AL2 023 `jdk8u372` können Java-Anwendungen, die auf früheren JDK 8-Versionen basieren, OOM-Ausnahmen und Pod-Neustarts verursachen, da die JVM nicht kompatibel mit ist. `cgroupv2` Dieses Problem entsteht insbesondere dadurch, dass die JVM-Container-Speichergrenzen mit `cgroupv2`, dem Standard in Amazon Linux 2023, nicht erkennen kann. Daher basiert die Heap-Zuweisung auf dem Gesamtspeicher des Knotens und nicht auf dem definierten Limit des Pods. Dies liegt daran, dass `cgroupv2` den Speicherort für Speicher-Limitdaten ändert, wodurch ältere Java-Versionen den verfügbaren Speicher falsch lesen und Ressourcen auf Knotenebene annehmen. Einige mögliche Optionen sind:
+  **JDK-Version aktualisieren**: Durch ein Upgrade auf `jdk8u372` oder höher oder auf eine neuere JDK-Version mit vollständigem `cgroupv2`-Support kann dieses Problem behoben werden. Eine Liste der kompatiblen Java-Versionen, die `cgroupv2` vollständig unterstützen, finden Sie unter [Über cgroup v2](https://kubernetes.io/docs/concepts/architecture/cgroups/).
+  **Erstellen Sie ein benutzerdefiniertes AMI**: Wenn Sie weiterhin eine AL2 basierte Lösung verwenden müssen, können Sie ein benutzerdefiniertes AL2 AMI (bis 26. November 2025) mithilfe [Erstellen Sie ein benutzerdefiniertes EKS-optimiertes Amazon Linux-AMI](eks-ami-build-scripts.md) der [Amazon EKS AMI Build Specification erstellen](https://github.com/awslabs/amazon-eks-ami). Sie können beispielsweise ein AL2 auf Version 1.33 basierendes AMI erstellen (bis 26. November 2025). Amazon EKS wird AMIs bis AL2 zum AL2 EKS EOS-Datum (26. November 2025) stationär zur Verfügung stellen. Nach dem EOS-Datum (26. November 2025) müssen Sie Ihre eigene AMI erstellen.
+  **Aktivieren Sie cgroupv1**: Wenn Sie es weiterhin verwenden müssen`cgroupv1`, können Sie es `cgroupv1` auf einem EKS AL2 023 AMI aktivieren. Um das System zu aktivieren, führen Sie es aus `sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"` und starten Sie es neu (z. B. eine EC2 Instance oder einen Knoten, auf dem Amazon Linux 2023 ausgeführt wird). Dadurch werden die Startparameter für das System geändert (z. B. durch Hinzufügen des Kernel-Parameters „systemd.unified\$1cgroup\$1hierarchy=0” zur GRUB-Konfiguration, wodurch systemd angewiesen wird, die veraltete `cgroupv1`-Hierarchie zu verwenden) und `cgroupv1` aktiviert. Beachten Sie, dass Sie mit diesem Grubby-Befehl den Kernel so konfigurieren, dass er mit aktiviertem `cgroupv1` und deaktiviertem `cgroupv2` startet. Nur eine dieser Cgroup-Versionen wird für die aktive Ressourcenverwaltung auf einem Knoten verwendet. Dies ist nicht dasselbe wie die Ausführung von `cgroupv2` mit Abwärtskompatibilität für die `cgroupv1`-API.

**Warnung**  
Wir raten von der weiteren Nutzung von `cgroupv1` ab. Stattdessen empfehlen wir die Migration auf `cgroupv2`. Die Kubernetes-Community hat den `cgroupv1` Support (verwendet von AL2) in den Wartungsmodus versetzt, was bedeutet, dass keine neuen Funktionen oder Updates hinzugefügt werden und nur kritische Sicherheits- und größere Bugfixes bereitgestellt werden. Die vollständige Einstellung des `cgroupv1`-Supports wird in einer zukünftigen Version erwartet. Ein konkretes Datum hierfür wurde jedoch noch nicht bekannt gegeben. Wenn Sie Probleme mit haben`cgroupv1`, können AWS wir Ihnen keinen Support anbieten und Ihnen empfehlen, ein Upgrade auf. `cgroupv2`

## Kompatibilität und Versionen
<a name="_compatibility_and_versions"></a>

### Unterstützte Kubernetes-Versionen für AL2 AMIs
<a name="_supported_kubernetes_versions_for_al2_amis"></a>

Kubernetes Version 1.32 ist die letzte Version, für die Amazon EKS veröffentlicht wird AL2 (Amazon Linux 2). AMIs Für [unterstützte](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) Kubernetes-Versionen bis 1.32 wird EKS bis zum 26. November 2025 weiterhin Versionen AL2 AMIs (AL2\$1ARM\$164, \$1x86\$164) und -beschleunigte Versionen ( AL2\$1x86\$164\$1GPU) veröffentlichen. AL2 AMIs AL2 Nach diesem Datum wird AL2 AL2 EKS AMIs die Veröffentlichung von -optimierten und -beschleunigten Versionen für alle Kubernetes-Versionen einstellen. Beachten Sie, dass das EOS-Datum für EKS AL2 — optimiert und AL2 beschleunigt — unabhängig von den standardmäßigen und erweiterten Supportzeiten für Kubernetes-Versionen von EKS AMIs ist.

### Vergleich der unterstützten Treiber und Linux-Kernel-Versionen für, 023 und Bottlerocket AL2 AL2 AMIs
<a name="_supported_drivers_and_linux_kernel_versions_comparison_for_al2_al2023_and_bottlerocket_amis"></a>


| Komponente |  AL2 EKS-AMI | EKS AL2 023 AMI | EKS Bottlerocket AMI | 
| --- | --- | --- | --- | 
|  Grundlegende Betriebssystemkompatibilität  |  RHEL7/CentOS 7  |  Fedora/CentOS 9  |  –  | 
|   [CUDA-Benutzermodus-Treiber](https://docs.nvidia.com/deploy/cuda-compatibility/why-cuda-compatibility.html#why-cuda-compatibility)   |  12.x  |  12.x, 13.x  |  12.x, 13.x  | 
|  NVIDIA-GPU-Treiber  |  R570  |  R580  |  R570, R580  | 
|   AWS Neuron-Treiber  |  2,20 \$1  |  2,20\$1  |  2,20\$1  | 
|  Linux-Kernel  |  5,10  |  6.1, 6.12  |  6.1, 6.12  | 

Weitere Informationen zur NVIDIA-Treiber- und CUDA-Kompatibilität finden Sie in der [NVIDIA-Dokumentation](https://docs.nvidia.com/datacenter/tesla/drivers/index.html#supported-drivers-and-cuda-toolkit-versions).

### AWS Neuron-Kompatibilität mit AL2 AMIs
<a name="shared_aws_neuron_compatibility_with_al2_amis"></a>

Ab [AWS der Neuron-Version 2.20](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/release-notes/prev/rn.html#neuron-2-20-0-whatsnew) unterstützt die von EKS AL-Based verwendete Neuron Runtime (`aws-neuronx-runtime-lib`) Amazon Linux 2 () nicht AMIs mehr. AL2 Der Neuron-Treiber (`aws-neuronx-dkms`) ist jetzt das einzige AWS Neuron-Paket, das Amazon Linux 2 unterstützt. Das bedeutet, dass Sie Ihre Neuron-gestützten Anwendungen nicht nativ auf einem AL2 AMI ausführen können. [Informationen zur Einrichtung von Neuron auf AL2 023 AMIs finden Sie in der Neuron-Setup-Anleitung.AWS](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/setup/index.html#setup-guide-index)

### Kubernetes-Kompatibilität mit AL2 AMIs
<a name="_kubernetes_compatibility_with_al2_amis"></a>

Die Kubernetes-Community hat den `cgroupv1` Support (verwendet von AL2) in den Wartungsmodus versetzt. Dies bedeutet, dass keine neuen Features hinzugefügt werden und nur kritische Sicherheitsaktualisierungen und wichtige Fehlerbehebungen bereitgestellt werden. Alle Kubernetes-Funktionen, die auf cgroupv2 basieren, wie MemoryQo S und erweiterte Ressourcenisolierung, sind unter nicht verfügbar. AL2 Darüber hinaus war Amazon EKS Kubernetes Version 1.32 die letzte Version, die unterstützt wurde. AL2 AMIs Um die Kompatibilität mit den neuesten Kubernetes-Versionen aufrechtzuerhalten, empfehlen wir die Migration zu AL2 023 oder Bottlerocket, die standardmäßig aktiviert sind. `cgroupv2`

### Kompatibilität der Linux-Version mit AL2 AMIs
<a name="_linux_version_compatibility_with_al2_amis"></a>

Amazon Linux 2 (AL2) wird AWS bis zu seinem end-of-support (EOS) Datum am 30. Juni 2026 unterstützt. Mit zunehmendem Alter AL2 wurde der Support für neue Anwendungen und Funktionen durch die breitere Linux-Community jedoch immer eingeschränkter. AL2 AMIs basieren auf dem [Linux-Kernel 5.10](https://docs.aws.amazon.com/linux/al2/ug/kernel.html), während AL2 023 den [Linux-Kernel 6.1](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2-kernel.html) verwendet. Im Gegensatz zu AL2 023 wird es AL2 von der breiteren Linux-Community nur begrenzt unterstützt. Das bedeutet, dass viele Upstream-Linux-Pakete und -Tools zurückportiert werden müssen, um mit AL2 der älteren Kernel-Version zu arbeiten, einige moderne Linux-Funktionen und Sicherheitsverbesserungen sind aufgrund des älteren Kernels nicht verfügbar, und viele Open-Source-Projekte unterstützen ältere Kernelversionen wie 5.10 nicht mehr oder nur eingeschränkt.

### Veraltete Pakete, die nicht in 0.23 enthalten sind AL2
<a name="_deprecated_packages_not_included_in_al2023"></a>

Zu den gängigsten Paketen, die nicht enthalten sind oder die in Version AL2 023 geändert wurden, gehören:
+ Einige [Quell-Binärpakete in Amazon Linux 2](https://docs.aws.amazon.com/linux/al2023/release-notes/removed-AL2023.6-AL2.html) sind in Amazon Linux 2023 nicht mehr verfügbar
+ Änderungen in der Art und Weise, wie Amazon Linux verschiedene Versionen von Paketen (z. B. [amazon-linux-extras System](https://repost.aws/questions/QUWGU3VFJMRSGf6MDPWn4tLg/how-to-resolve-amazon-linux-extras-in-al2023)) in AL2 023 unterstützt
+  [Zusätzliche Pakete für Enterprise Linux (EPEL) werden in Version](https://docs.aws.amazon.com/linux/al2023/ug/epel.html) 023 nicht unterstützt AL2
+  [32-Bit-Anwendungen](https://docs.aws.amazon.com/linux/al2023/ug/deprecated-al2.html#deprecated-32bit-rpms) werden in 023 nicht unterstützt AL2

Weitere Informationen finden Sie unter Comparing [ AL2 und AL2 023](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html).

### Vergleich der FIPS-Validierung zwischen AL2 023 AL2 und Bottlerocket
<a name="_fips_validation_comparison_across_al2_al2023_and_bottlerocket"></a>

Amazon Linux 2 (AL2), Amazon Linux 2023 (AL2023) und Bottlerocket unterstützen die Einhaltung der Federal Information Processing Standards (FIPS).
+ AL2 ist nach FIPS 140-2 zertifiziert und 023 ist nach FIPS 140-3 zertifiziert. AL2 Um den FIPS-Modus auf AL2 023 zu aktivieren, installieren Sie die erforderlichen Pakete auf Ihrer EC2 Amazon-Instance und befolgen Sie die Konfigurationsschritte anhand der Anweisungen unter [FIPS-Modus aktivieren](https://docs.aws.amazon.com/linux/al2023/ug/fips-mode.html) auf 023. AL2 [Weitere Informationen finden Sie unter 023. AL2 FAQs](https://aws.amazon.com/linux/amazon-linux-2023/faqs)
+ Bottlerocket bietet speziell für FIPS entwickelte Varianten, die den Kernel und die Userspace-Komponenten auf die Verwendung von Kryptografie-Modulen beschränken, die dem FIPS 140-3 Cryptographic Module Validation Program unterzogen wurden.

### EKS-AMI-Treiber und Versions-Änderungsprotokoll
<a name="_eks_ami_driver_and_versions_changelog"></a>

Eine vollständige Liste aller EKS AMI-Komponenten und ihrer Versionen finden Sie in den [Amazon EKS AMI-Versionshinweisen](https://github.com/awslabs/amazon-eks-ami/releases) unter GitHub.

# Knoten mit optimiertem Amazon Linux erstellen AMIs
<a name="eks-optimized-ami"></a>

Amazon Elastic Kubernetes Service (Amazon EKS) bietet spezielle Amazon Machine Images (AMIs), die für die Ausführung von Kubernetes-Worker-Knoten optimiert sind. Diese EKS-optimierten Amazon Linux (AL) AMIs sind mit wichtigen Komponenten wie dem AWS IAM Authenticator und vorkonfiguriert`kubelet`, um eine nahtlose Integration und Sicherheit innerhalb Ihrer `containerd` Cluster zu gewährleisten. In diesem Handbuch werden die verfügbaren AMI-Versionen beschrieben und spezielle Optionen für beschleunigtes Rechnen und ARM-basierte Architekturen beschrieben.

## Überlegungen
<a name="ami-considerations"></a>
+ Sie können Sicherheits- oder Datenschutzereignisse für [Amazon Linux im Amazon-Linux-Sicherheitscenter](https://alas.aws.amazon.com/) verfolgen, indem Sie die Registerkarte für die gewünschte Version auswählen. Sie können auch den entsprechenden RSS-Feed abonnieren. Sicherheits- oder Datenschutzereignisse enthalten eine Übersicht über das Problem, welche Pakete betroffen sind und wie Sie Ihre Instances aktualisieren, um das Problem zu beheben.
+ Bevor Sie ein beschleunigtes AMI oder ein ARM-AMI bereitstellen, lesen Sie die Informationen in [Amazon EKS-optimiertem beschleunigtem Amazon Linux AMIs](#gpu-ami) und. [Amazon EKS-optimierter Arm Amazon Linux AMIs](#arm-ami)
+  EC2 `P2`Amazon-Instances werden auf Amazon EKS nicht unterstützt, da sie `NVIDIA` Treiberversion 470 oder früher benötigen.
+ Alle neu erstellten verwalteten Knotengruppen in Clustern der Version `1.30` oder neuer verwenden automatisch standardmäßig AL2 023 als Knotenbetriebssystem.

## Amazon EKS-optimiertes beschleunigtes Amazon Linux AMIs
<a name="gpu-ami"></a>

Amazon EKS-optimiertes beschleunigtes Amazon Linux (AL) AMIs baut auf dem standardmäßigen EKS-optimierten Amazon Linux auf. AMIs Sie sind so konfiguriert, dass sie als optionale Images für Amazon-EKS-Knoten dienen, um GPU-, [Inferentia](https://aws.amazon.com/machine-learning/inferentia/)- und [Trainium](https://aws.amazon.com/machine-learning/trainium/)-basierte Workloads zu unterstützen.

Weitere Informationen finden Sie unter [Verwenden Sie EKS-optimierte beschleunigte AMIs GPU-Instanzen](ml-eks-optimized-ami.md).

## Amazon EKS-optimierter Arm Amazon Linux AMIs
<a name="arm-ami"></a>

Arm-Instances führen zu deutlichen Kosteneinsparungen für skalierbare und Arm-basierte Anwendungen wie Webserver, Container-Microservices, Zwischenspeicherflotten und verteilte Datenspeicher. Beachten Sie beim Hinzufügen von Arm-Knoten zu Ihrem Cluster die folgenden Überlegungen.
+ Wenn Ihr Cluster vor dem 17. August 2020 bereitgestellt wurde, müssen Sie ein einmaliges Upgrade kritischer Cluster-Add-on-Manifeste durchführen. Dies ist so, dass Kubernetes für jede Hardwarearchitektur, die in Ihrem Cluster verwendet wird, das richtige Image abrufen kann. Weitere Informationen zum Aktualisieren von Cluster-Add-ons finden Sie unter [Schritt 1: Upgrade vorbereiten](update-cluster.md#update-existing-cluster). Wenn Sie Ihren Cluster am oder nach dem 17. August 2020 bereitgestellt haben, sind Ihr CoreDNS-, `kube-proxy`- und Amazon VPC-CNI-Plug-in für Kubernetes-Add-Ons bereits Multi-Architektur-fähig.
+ Anwendungen, die auf Arm-Knoten bereitgestellt werden, müssen für Arm kompiliert werden.
+ Wenn Sie DaemonSets diese in einem vorhandenen Cluster bereitgestellt haben oder sie in einem neuen Cluster bereitstellen möchten, in dem Sie auch ARM-Knoten bereitstellen möchten, stellen Sie sicher, dass Sie auf allen Hardwarearchitekturen in Ihrem Cluster ausgeführt werden DaemonSet können.
+ Sie können Arm-Knotengruppen und x86-Knotengruppen im selben Cluster ausführen. In diesem Fall sollten Sie Container-Images mit mehreren Architekturen in einem Container-Repository wie Amazon Elastic Container Registry bereitstellen und dann Knoten-Selektoren zu Ihren Manifesten hinzufügen, damit Kubernetes weiß, auf welcher Hardwarearchitektur ein Pod bereitgestellt werden kann. Weitere Informationen finden Sie unter [Übertragen eines Multi-Architektur-Images](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-multi-architecture-image.html) im *Amazon-ECR-Benutzerhandbuch* und im Blogbeitrag [Einführung in Multi-Architektur-Container-Images für Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr).

## Weitere Informationen
<a name="linux-more-information"></a>

Weitere Informationen zur Verwendung von Amazon EKS-optimiertem Amazon Linux AMIs finden Sie in den folgenden Abschnitten:
+ Informationen zur Verwendung von Amazon Linux mit verwalteten Knotengruppen finden Sie unter [Vereinfachung des Knotenlebenszyklus mit verwalteten Knotengruppen](managed-node-groups.md).
+ Informationen zum Starten selbstverwalteter Amazon-Linux-Knoten finden Sie unter [Rufen Sie das empfohlene Amazon Linux AMI ab IDs](retrieve-ami-id.md).
+ Versionsinformationen finden Sie unter [Abrufen der Versionsinformationen zu Amazon-Linux-AMI](eks-linux-ami-versions.md).
+ Informationen zum Abrufen der neuesten Version IDs des für Amazon EKS optimierten Amazon Linux AMIs finden Sie unter. [Rufen Sie das empfohlene Amazon Linux AMI ab IDs](retrieve-ami-id.md)
+ Informationen zu Open-Source-Skripten, die zur Erstellung der Amazon EKS-optimierten AMIs Version verwendet werden, finden Sie unter. [Erstellen Sie ein benutzerdefiniertes EKS-optimiertes Amazon Linux-AMI](eks-ami-build-scripts.md)

# Upgrade von Amazon Linux 2 zu Amazon Linux 2023
<a name="al2023"></a>

**Warnung**  
Amazon EKS hat die Veröffentlichung von EKS-optimiertem Amazon Linux 2 (AL2) AMIs am 26. November 2025 eingestellt. AL2023 und Bottlerocket auf Basis von Amazon EKS sind AMIs für alle unterstützten Kubernetes-Versionen einschließlich 1.33 und höher verfügbar.

AL2023 ist ein Linux-basiertes Betriebssystem, das entwickelt wurde, um eine sichere, stabile und leistungsstarke Umgebung für Ihre Cloud-Anwendungen bereitzustellen. Es handelt sich um die nächste Generation von Amazon Linux von Amazon Web Services und ist für alle unterstützten Amazon-EKS-Versionen verfügbar.

AL2023 bietet mehrere Verbesserungen gegenüber AL2. Einen vollständigen Vergleich finden Sie unter [ AL2 Comparing and Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html) im *Amazon Linux 2023-Benutzerhandbuch*. Es wurden mehrere Pakete hinzugefügt, aktualisiert und entfernt AL2. Es wird dringend empfohlen, Ihre Anwendungen AL2023 vor dem Upgrade mit zu testen. Eine Liste aller Paketänderungen in AL2023 finden Sie unter [Paketänderungen in Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/release-notes/compare-packages.html) in den *Versionshinweisen zu Amazon Linux 2023*.

Zusätzlich zu diesen Änderungen sollten Sie Folgendes beachten:
+ AL2023 führt einen neuen Knoteninitialisierungsprozess ein`nodeadm`, der ein YAML-Konfigurationsschema verwendet. Wenn Sie selbstverwaltete Knotengruppen oder eine AMI mit einer Startvorlage verwenden, müssen Sie nun beim Erstellen einer neuen Knotengruppe explizit zusätzliche Cluster-Metadaten angeben. Ein [Beispiel](https://awslabs.github.io/amazon-eks-ami/nodeadm/) für die mindestens erforderlichen Parameter ist wie folgt, wobei jetzt `apiServerEndpoint`, `certificateAuthority` und Service-`cidr` erforderlich sind:

  ```
  ---
  apiVersion: node.eks.aws/v1alpha1
  kind: NodeConfig
  spec:
    cluster:
      name: my-cluster
      apiServerEndpoint: https://example.com
      certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
      cidr: 10.100.0.0/16
  ```

   AL2In wurden die Metadaten dieser Parameter aus dem Amazon `DescribeCluster` EKS-API-Aufruf ermittelt. Mit hat sich dieses Verhalten geändert AL2023, da durch den zusätzlichen API-Aufruf die Gefahr einer Drosselung bei der Skalierung großer Knoten besteht. Diese Änderung betrifft Sie nicht, wenn Sie verwaltete Knotengruppen ohne Startvorlage verwenden oder wenn Sie Karpenter verwenden. Weitere Informationen zu `certificateAuthority` und Service `cidr` finden Sie unter [https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html) in der *API-Referenz von Amazon EKS*.
+ Denn ändert `nodeadm` auch das Format AL2023, in dem Parameter `kubelet` für jeden verwendeten Knoten angewendet werden. [https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec) In AL2, das wurde mit dem `--kubelet-extra-args` Parameter gemacht. Dies wird häufig verwendet, um Knoten mit Beschriftungen und Taints zu versehen. Ein Beispiel unten zeigt die Anwendung von `maxPods` und `--node-labels` auf den Knoten.

  ```
  ---
  apiVersion: node.eks.aws/v1alpha1
  kind: NodeConfig
  spec:
    cluster:
      name: test-cluster
      apiServerEndpoint: https://example.com
      certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
      cidr: 10.100.0.0/16
    kubelet:
      config:
        maxPods: 110
      flags:
        - --node-labels=karpenter.sh/capacity-type=on-demand,karpenter.sh/nodepool=test
  ```
+ Amazon VPC CNI-Version `1.16.2` oder höher ist erforderlich für. AL2023
+ AL2023 erfordert `IMDSv2` standardmäßig. `IMDSv2`hat mehrere Vorteile, die zur Verbesserung der Sicherheitslage beitragen. Das Programm verwendet eine sitzungsorientierte Authentifizierungsmethode, welche die Erstellung eines geheimen Tokens in einer einfachen HTTP-PUT-Anfrage zum Starten der Sitzung erfordert. Die Gültigkeitsdauer eines Sitzungs-Tokens kann zwischen 1 Sekunde und 6 Stunden variieren. Weitere Informationen zum Übergang von `IMDSv1` zu `IMDSv2` finden Sie unter [Umstellung auf Instance Metadata Service Version 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html) und [Nutzen Sie alle Vorteile IMDSv2 und deaktivieren Sie Ihre IMDSv1 gesamte AWS Infrastruktur](https://aws.amazon.com/blogs/security/get-the-full-benefits-of-imdsv2-and-disable-imdsv1-across-your-aws-infrastructure). Wenn Sie `IMDSv1` verwenden möchten, können Sie dies dennoch tun, indem Sie die Einstellungen mithilfe der Starteigenschaften der Instance-Metadatenoption manuell überschreiben.
**Anmerkung**  
`IMDSv2`Bei kann AL2023 die Standard-Hop-Anzahl für verwaltete Knotengruppen variieren:  
Wenn keine Startvorlage verwendet wird, ist der Standardwert auf `1` eingestellt. Dies bedeutet, dass Container über IMDS keinen Zugriff auf die Anmeldeinformationen des Knotens haben. Wenn Sie Container-Zugriff auf die Anmeldeinformationen des Knotens benötigen, können Sie dies weiterhin mithilfe einer [benutzerdefinierten Amazon-EC2-Startvorlage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html) tun.
Wenn Sie in einer Startvorlage ein benutzerdefiniertes AMI verwenden, wird das Standard-`HttpPutResponseHopLimit` auf `2` gesetzt. Sie können `HttpPutResponseHopLimit` in der Startvorlage manuell überschreiben.
Alternativ können Sie anstelle von `IMDSv2` [Amazon EKS Pod Identity](pod-identities.md) verwenden, um Anmeldeinformationen bereitzustellen.
+ AL2023 bietet die nächste Generation einheitlicher Kontrollgruppenhierarchien (`cgroupv2`). `cgroupv2`wird verwendet, um eine Container-Laufzeit zu implementieren, und von`systemd`. Es enthält zwar AL2023 immer noch Code, mit dem das System zum Laufen gebracht werden kann`cgroupv1`, ist aber keine empfohlene oder unterstützte Konfiguration. Diese Konfiguration wird in einer zukünftigen Hauptversion von Amazon Linux vollständig entfernt.
+  `eksctl`Für `eksctl` die Unterstützung ist eine Version `0.176.0` oder höher erforderlich AL2023.

Für bereits bestehende verwaltete Knotengruppen können Sie entweder ein direktes Upgrade oder ein blue/green Upgrade durchführen, je nachdem, wie Sie eine Startvorlage verwenden:
+ Wenn Sie ein benutzerdefiniertes AMI mit einer verwalteten Knotengruppe verwenden, können Sie ein direktes Upgrade durchführen, indem Sie die AMI-ID in der Startvorlage austauschen. Sie sollten sicherstellen, dass Ihre Anwendungen und alle Benutzerdaten an AL2023 First übertragen werden, bevor Sie diese Upgrade-Strategie durchführen.
+ Wenn Sie verwaltete Knotengruppen entweder mit der Standardstartvorlage oder mit einer benutzerdefinierten Startvorlage verwenden, die die AMI-ID nicht angibt, müssen Sie das Upgrade mithilfe einer blue/green Strategie durchführen. Ein blue/green Upgrade ist in der Regel komplexer und beinhaltet die Erstellung einer völlig neuen Knotengruppe, die Sie AL2023 als AMI-Typ angeben würden. Die neue Knotengruppe muss anschließend sorgfältig konfiguriert werden, um sicherzustellen, dass alle benutzerdefinierten Daten aus der AL2 Knotengruppe mit dem neuen Betriebssystem kompatibel sind. Sobald die neue Knotengruppe mit Ihren Anwendungen getestet und validiert wurde, können Pods von der alten Knotengruppe auf die neue Knotengruppe migriert werden. Nach Abschluss der Migration können Sie die alte Knotengruppe löschen.

Wenn Sie Karpenter verwenden und verwenden möchten AL2023, müssen Sie das `EC2NodeClass` `amiFamily` Feld mit ändern. AL2023 Drift ist standardmäßig in Karpenter aktiviert. Dies bedeutet, dass Karpenter nach einer Änderung des `amiFamily`-Feldes Ihre Worker-Knoten automatisch auf die neueste AMI aktualisiert, sobald diese verfügbar ist.

## Zusätzliche Informationen zu nodeadm
<a name="_additional_information_about_nodeadm"></a>

Wenn Sie ein EKS-optimiertes Amazon Linux 2023 AMI verwenden oder ein benutzerdefiniertes EKS Amazon Linux 2023 AMI mithilfe der im offiziellen amazon-eks-ami GitHub Repository bereitgestellten Packer-Skripts erstellen, sollten Sie es vermeiden, nodeadm init explizit in EC2-Benutzerdaten oder als Teil Ihres benutzerdefinierten AMI auszuführen.

Wenn Sie NodeConfig in Ihren Benutzerdaten Dynamik erzeugen möchten, können Sie diese Konfiguration in eine Drop-In-Yaml- oder JSON-Datei schreiben. `/etc/eks/nodeadm.d` Diese Konfigurationsdateien werden zusammengeführt und auf Ihren Knoten angewendet, wenn nodeadm init später im Startvorgang automatisch gestartet wird. Beispiel:

```
cat > /etc/eks/nodeadm.d/additional-node-labels.yaml << EOF
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  kubelet:
    flags:
      - --node-labels=foo=bar
EOF
```

Das EKS-optimierte Amazon Linux 2023 führt nodeadm init AMIs automatisch in zwei Phasen über separate Systemd-Dienste aus: nodeadm-config wird vor der Ausführung der Benutzerdaten ausgeführt, während nodeadm-run danach ausgeführt wird. Der Dienst nodeadm-config richtet Basiskonfigurationen für containerd und kubelet ein, bevor Benutzerdaten ausgeführt werden. Der Dienst nodeadm-run führt ausgewählte System-Daemons aus und schließt alle endgültigen Konfigurationen nach der Ausführung der Benutzerdaten ab. Wenn der Befehl nodeadm init ein weiteres Mal über Benutzerdaten oder ein benutzerdefiniertes AMI ausgeführt wird, kann er Annahmen über die Reihenfolge der Ausführung widerlegen, was zu unerwarteten Ergebnissen, einschließlich einer Fehlkonfiguration, führen kann. ENIs

# Abrufen der Versionsinformationen zu Amazon-Linux-AMI
<a name="eks-linux-ami-versions"></a>

Für Amazon EKS optimierte Amazon-Linux-AMIs werden anhand der Kubernetes-Version und des Veröffentlichungsdatums des AMI in folgendem Format versioniert:

```
k8s_major_version.k8s_minor_version.k8s_patch_version-release_date
```

Jede AMI-Version enthält verschiedene Versionen von [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/), dem Linux-Kernel und [containerd](https://containerd.io/). Die beschleunigten AMIs umfassen auch verschiedene Versionen des NVIDIA-Treibers. Diese Informationen finden Sie im [Änderungsprotokoll](https://github.com/awslabs/amazon-eks-ami/blob/main/CHANGELOG.md) in GitHub.

# Rufen Sie das empfohlene Amazon Linux AMI ab IDs
<a name="retrieve-ami-id"></a>

Beim Bereitstellen von Knoten können Sie eine ID für ein vorkonfiguriertes, für Amazon EKS optimiertes Amazon Machine Image (AMI) angeben. Um eine AMI-ID abzurufen, die Ihrer gewünschten Konfiguration entspricht, fragen Sie die AWS Systems Manager Parameter Store-API ab. Durch die Verwendung dieser API entfällt die Notwendigkeit, manuell nach Amazon EKS-optimiertem AMI zu suchen IDs. Weitere Informationen finden Sie unter [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Das von Ihnen verwendete [IAM-Prinzipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) muss über die `ssm:GetParameter`-IAM-Berechtigung zum Abrufen der Amazon EKS-optimierten AMI-Metadaten verfügen.

Sie können die Image-ID des aktuellen empfohlenen für Amazon EKS optimierten Amazon-Linux-AMI mit dem folgenden Befehl abrufen, der den Unterparameter `image_id` verwendet. Nehmen Sie nach Bedarf die folgenden Änderungen am Befehl vor und führen Sie anschließend den geänderten Befehl aus:
+ Ersetzen Sie `<kubernetes-version>` durch eine von [Amazon EKS unterstützte Version](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).
+ *ami-type*Ersetzen Sie es durch eine der folgenden Optionen. Informationen zu den Typen von EC2 Amazon-Instances finden Sie unter [ EC2 Amazon-Instance-Typen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html).
  + Wird *amazon-linux-2023/x86\$164/standard* für Amazon Linux 2023 (AL2023) `x86` -basierte Instances verwendet.
  + Wird *amazon-linux-2023/arm64/standard* für AL2 023 ARM-Instances verwendet, z. B. [AWS Graviton-basierte](https://aws.amazon.com/ec2/graviton/) Instances.
  + Wird *amazon-linux-2023/x86\$164/nvidia* für die neuesten genehmigten AL2 023 `x86` NVIDIA-basierten Instanzen verwendet.
  + Wird *amazon-linux-2023/arm64/nvidia* für die neuesten genehmigten AL2 023 `arm64` NVIDIA-basierten Instanzen verwendet.
  + Wird *amazon-linux-2023/x86\$164/neuron* für die neuesten AL2 023 [AWS Neuron-Instanzen](https://aws.amazon.com/machine-learning/neuron/) verwendet.
+ `<region-code>`Ersetzen Sie durch eine von [Amazon EKS unterstützte AWS Region](https://docs.aws.amazon.com/general/latest/gr/eks.html), für die Sie die AMI-ID benötigen.

```
aws ssm get-parameter --name /aws/service/eks/optimized-ami/<kubernetes-version>/<ami-type>/recommended/image_id \
    --region <region-code> --query "Parameter.Value" --output text
```

Hier ist ein Beispielbefehl, nachdem Platzhalter ersetzt wurden.

```
aws ssm get-parameter --name /aws/service/eks/optimized-ami/1.31/amazon-linux-2023/x86_64/standard/recommended/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

Eine Beispielausgabe sieht wie folgt aus.

```
ami-1234567890abcdef0
```

# Erstellen Sie ein benutzerdefiniertes EKS-optimiertes Amazon Linux-AMI
<a name="eks-ami-build-scripts"></a>

**Warnung**  
Amazon EKS hat die Veröffentlichung von EKS-optimiertem Amazon Linux 2 (AL2) AMIs am 26. November 2025 eingestellt. AL2023 und Bottlerocket auf Basis von Amazon EKS sind AMIs für alle unterstützten Kubernetes-Versionen einschließlich 1.33 und höher verfügbar.

Amazon EKS bietet Open-Source-Build-Skripte im [Amazon EKS AMI Build Specification-Repository](https://github.com/awslabs/amazon-eks-ami), mit denen Sie die Konfigurationen für `kubelet` die Laufzeit und den AWS IAM Authenticator für Kubernetes anzeigen und Ihr eigenes AL-basiertes AMI von Grund auf neu erstellen können.

Dieses Repository enthält das spezielle [Bootstrap-Skript für AL2 und das [Nodeadm-Tool](https://awslabs.github.io/amazon-eks-ami/nodeadm/) für 023](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh), das beim Booten ausgeführt wird. AL2 Diese Skripte konfigurieren die Zertifikatsdaten Ihrer Instance, den Endpunkt der Steuerebene, den Cluster-Namen und weitere Elemente. Die Skripts gelten als Informationsquelle für Amazon EKS-optimierte AMI-Builds, sodass Sie dem GitHub Repository folgen können, um Änderungen an unseren zu überwachen. AMIs

Bei der Erstellung benutzerdefinierter Systeme AMIs mit EKS-Optimized AMIs als Basis wird die Ausführung eines Betriebssystem-Upgrades nicht empfohlen oder unterstützt (z. `dnf upgrade`) oder eines der Kubernetes- oder GPU-Pakete aktualisieren, die im EKS-optimierten Paket enthalten sind AMIs, da dadurch die Komponentenkompatibilität beeinträchtigt werden kann. Wenn Sie das Betriebssystem oder die Pakete, die in EKS-Optimized enthalten sind, aktualisieren, wird empfohlen AMIs, vor der Bereitstellung in der Produktion gründliche Tests in einer Entwicklungs- oder Staging-Umgebung durchzuführen.

Bei der Erstellung benutzerdefinierter GPU-Instanzen empfiehlt es sich, AMIs AMIs für jeden Instance-Typ, jede Generation und Familie, die Sie ausführen möchten, separate benutzerdefinierte Instances zu erstellen. Die für EKS optimierten beschleunigten AMIs Systeme installieren Treiber und Pakete selektiv zur Laufzeit, basierend auf der Generation und Familie des zugrunde liegenden Instance-Typs. Weitere Informationen finden Sie in den EKS AMI-Skripts für [Installation](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/provisioners/install-nvidia-driver.sh) und [Laufzeit](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/runtime/gpu/nvidia-kmod-load.sh).

## Voraussetzungen
<a name="_prerequisites"></a>
+  [Installieren Sie die AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) 
+  [Installieren Sie HashiCorp Packer v1.9.4\$1](https://developer.hashicorp.com/packer/downloads) 
+  [Installation von GNU Make](https://www.gnu.org/software/make/) 

## Quickstart
<a name="_quickstart"></a>

Dieser Schnellstart zeigt Ihnen die Befehle zum Erstellen eines benutzerdefinierten AMI in Ihrem AWS Konto. Weitere Informationen zu den verfügbaren Konfigurationen zur Anpassung Ihrer AMI finden Sie unter den Vorlagenvariablen auf der Seite [Amazon Linux 2023](https://awslabs.github.io/amazon-eks-ami/usage/al2023/).

### Voraussetzungen
<a name="_prerequisites_2"></a>

Installieren Sie das erforderliche [Amazon-Plugin](https://developer.hashicorp.com/packer/integrations/hashicorp/amazon). Beispiel:

```
packer plugins install github.com/hashicorp/amazon
```

### Schritt 1. Einrichtung Ihrer Umgebung
<a name="_step_1_setup_your_environment"></a>

Klonen oder forken Sie das offizielle Amazon-EKS-AMI-Repository. Beispiel:

```
git clone https://github.com/awslabs/amazon-eks-ami.git
cd amazon-eks-ami
```

Überprüfen Sie, ob Packer installiert ist:

```
packer --version
```

### Schritt 2. So erstellen Sie ein benutzerdefiniertes -AMI
<a name="_step_2_create_a_custom_ami"></a>

Im Folgenden finden Sie Beispielbefehle für verschiedene benutzerdefinierte AMIs Befehle.

 **Grundlegendes AL2 NVIDIA-AMI:** 

```
make k8s=1.31 os_distro=al2 \
  enable_accelerator=nvidia \
  nvidia_driver_major_version=560 \
  enable_efa=true
```

 **Grundlegendes NVIDIA AL2 023 AMI:** 

```
make k8s=1.31 os_distro=al2023 \
  enable_accelerator=nvidia \
  nvidia_driver_major_version=560 \
  enable_efa=true
```

 **STIG-konformes Neuron 023 AMI AL2:** 

```
make k8s=1.31 os_distro=al2023 \
  enable_accelerator=neuron \
  enable_fips=true \
  source_ami_id=ami-0abcd1234efgh5678 \
  kms_key_id=alias/aws-stig
```

Nachdem Sie diese Befehle ausgeführt haben, geht Packer wie folgt vor: \$1 Startet eine temporäre EC2 Amazon-Instance. \$1 Installieren Sie Kubernetes-Komponenten, -Treiber und -Konfigurationen. \$1 Erstellen Sie das AMI in Ihrem AWS Konto.

Die erwartete Ausgabe sollte in etwa wie folgt aussehen:

```
==> Wait completed after 8 minutes 42 seconds

==> Builds finished. The artifacts of successful builds are:
--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9

--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9

--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9
```

### Schritt 3. Standardwerte anzeigen
<a name="_step_3_view_default_values"></a>

Um Standardwerte und zusätzliche Optionen anzuzeigen, führen Sie den folgenden Befehl aus:

```
make help
```

# Erstellen Sie Knoten mit optimiertem Bottlerocket AMIs
<a name="eks-optimized-ami-bottlerocket"></a>

 [Bottlerocket](https://aws.amazon.com/bottlerocket/) ist eine Open-Source-Linux-Distribution, die von gesponsert und unterstützt wird. AWS Bottlerocket wurde speziell für das Hosting von Container-Workloads entwickelt. Mit Bottlerocket können Sie die Verfügbarkeit von containerisierten Bereitstellungen verbessern und die Betriebskosten senken, indem Sie Aktualisierungen Ihrer Container-Infrastruktur automatisieren. Bottlerocket enthält ausschließlich die für den Betrieb von Containern erforderliche Software. Dies führt zu einer verbesserten Ressourcennutzung, einer Reduzierung von Sicherheitsrisiken und einem geringeren Verwaltungsaufwand. Das Bottlerocket AMI umfasst`containerd`,`kubelet`, und AWS IAM Authenticator. Neben verwalteten Knotengruppen und selbstverwalteten Knoten wird Bottlerocket auch von [Karpenter](https://karpenter.sh/) unterstützt.

## Vorteile
<a name="bottlerocket-advantages"></a>

Die Verwendung von Bottlerocket mit Ihrem Amazon-EKS-Cluster hat die folgenden Vorteile:
+  **Höhere Verfügbarkeit bei geringeren Betriebskosten und weniger Verwaltungsaufwand** – Bottlerocket benötigt weniger Ressourcen, hat kürzere Startzeiten und ist weniger anfällig für Sicherheitsbedrohungen als andere Linux-Verteilungen. Der geringere Ressourcenbedarf von Bottlerocket trägt zur Kostensenkung bei, da weniger Speicher-, Rechen- und Netzwerkressourcen benötigt werden.
+  **Verbesserte Sicherheit durch automatische Betriebssystemupdates** – Updates für Bottlerocket werden als eine Einheit installiert, die bei Bedarf rückgängig gemacht werden kann. Dadurch wird das Risiko beschädigter oder fehlgeschlagener Updates vermieden, die das System in einen unbrauchbaren Zustand versetzen können. Mit Bottlerocket können Sicherheitsaktualisierungen automatisch angewendet werden, sobald sie verfügbar sind, und das mit minimaler Unterbrechung. Bei Ausfällen können sie zurückgesetzt werden.
+  **Premium-Support** — AWS sofern Versionen von Bottlerocket auf Amazon EC2 verfügbar sind, fallen unter dieselben AWS Support-Pläne, die auch AWS Services wie Amazon EC2, Amazon EKS und Amazon ECR abdecken.

## Überlegungen
<a name="bottlerocket-considerations"></a>

Beachten Sie bei der Verwendung von Bottlerocket für Ihren AMI-Typ Folgendes:
+ Bottlerocket unterstützt EC2 Amazon-Instances mit `x86_64` und Prozessoren. `arm64`
+ Bottlerocket unterstützt EC2 Amazon-Instances mit. GPUs Weitere Informationen finden Sie unter [Verwenden Sie EKS-optimierte beschleunigte AMIs GPU-Instanzen](ml-eks-optimized-ami.md).
+ Bottlerocket-Images enthalten weder einen SSH-Server noch eine Shell. Sie können out-of-band Zugriffsmethoden verwenden, um SSH zuzulassen. Diese Ansätze ermöglichen es dem Administrator-Container, einige Bootstrapping-Konfigurationsschritte mit Benutzerdaten zu übergeben. Weitere Informationen finden Sie in den folgenden Abschnitten von [Bottlerocket](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md) OS unter: GitHub
  +  [Exploration](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#exploration) (Erkundung) 
  +  [Administrator-Container](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#admin-container) 
  +  [Kubernetes-Einstellungen](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#kubernetes-settings) 
+ Bottlerocket verwendet verschiedene Container-Typen:
  + Standardmäßig ist ein [Steuerungs-Container](https://github.com/bottlerocket-os/bottlerocket-control-container) aktiviert. In diesem Container wird der [AWS Systems Manager Manager-Agent](https://github.com/aws/amazon-ssm-agent) ausgeführt, mit dem Sie Befehle ausführen oder Shell-Sitzungen auf Amazon EC2 Bottlerocket-Instances starten können. Weitere Informationen finden Sie unter [Setting up Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html) im * AWS Systems Manager Manager-Benutzerhandbuch*.
  + Wenn bei der Erstellung der Knotengruppe ein SSH-Schlüssel angegeben wird, wird ein Admin-Container aktiviert. Wir empfehlen, den Administrator-Container nur für Entwicklungs- und Testszenarien zu verwenden. Es wird nicht empfohlen, ihn in Produktionsumgebungen zu verwenden. Weitere Informationen finden Sie unter [Administrator-Container](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#admin-container) auf GitHub.

## Weitere Informationen
<a name="bottlerocket-more-information"></a>

Weitere Informationen zur Verwendung des für Amazon EKS optimierten Bottlerocket AMIs finden Sie in den folgenden Abschnitten:
+ Einzelheiten zu Bottlerocket finden Sie in der [Bottlerocket-Dokumentation](https://bottlerocket.dev/en/).
+ Informationen zur Version finden Sie unter [Abrufen von Bottlerocket-AMI-Versionsinformationen](eks-ami-versions-bottlerocket.md).
+ Informationen zur Verwendung von Bottlerocket mit verwalteten Knotengruppen finden Sie unter [Vereinfachung des Knotenlebenszyklus mit verwalteten Knotengruppen](managed-node-groups.md).
+ Um selbstverwaltete Bottlerocket-Knoten zu starten, lesen Sie [Selbstverwaltete Bottlerocket-Knoten erstellen](launch-node-bottlerocket.md).
+ Informationen zum Abrufen der neuesten Version IDs des für Amazon EKS optimierten Bottlerocket AMIs finden Sie unter. [Empfohlene Bottlerocket-AMI-IDs abrufen](retrieve-ami-id-bottlerocket.md)
+ Einzelheiten zur Compliance-Unterstützung finden Sie unter [Compliance-Anforderungen mit Bottlerocket erfüllen](bottlerocket-compliance-support.md).

# Abrufen von Bottlerocket-AMI-Versionsinformationen
<a name="eks-ami-versions-bottlerocket"></a>

Jede Bottlerocket-AMI-Version umfasst verschiedene Versionen von [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/), dem Bottlerocket-Kernel und [containerd](https://containerd.io/). Beschleunigte AMI-Varianten enthalten auch verschiedene Versionen des NVIDIA-Treibers. Sie finden diese Versionsinformationen im Abschnitt [Betriebssystem](https://bottlerocket.dev/en/os/) der *Bottlerocket-Dokumentation*. Navigieren Sie von dieser Seite zum entsprechenden Unterthema *Versionsinformationen*.

Die *Bottlerocket-Dokumentation* kann gelegentlich hinter den auf GitHub verfügbaren Versionen zurückbleiben. Eine Liste der Änderungen für die neuesten Versionen finden Sie in den [Versionen](https://github.com/bottlerocket-os/bottlerocket/releases) auf GitHub.

# Empfohlene Bottlerocket-AMI-IDs abrufen
<a name="retrieve-ami-id-bottlerocket"></a>

Beim Bereitstellen von Knoten können Sie eine ID für ein vorkonfiguriertes, für Amazon EKS optimiertes Amazon Machine Image (AMI) angeben. Um eine AMI-ID abzurufen, die Ihrer gewünschten Konfiguration entspricht, führen Sie eine Abfrage an die API für AWS Systems Manager Parameter Store durch. Durch die Verwendung dieser API entfällt die Notwendigkeit zur manuellen Suche nach Amazon-EKS-optimierten AMI-IDs. Weitere Informationen finden Sie unter [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Das von Ihnen verwendete [IAM-Prinzipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) muss über die `ssm:GetParameter`-IAM-Berechtigung zum Abrufen der Amazon EKS-optimierten AMI-Metadaten verfügen.

Sie können die Image-ID der aktuellsten empfohlenen Amazon-EKS-optimierten Bottlerocket-AMI mit dem folgenden AWS-CLI-Befehl abrufen, der den Unterparameter `image_id` verwendet. Nehmen Sie nach Bedarf die folgenden Änderungen am Befehl vor und führen Sie anschließend den geänderten Befehl aus:
+ Ersetzen Sie *kubernetes-version* durch eine unterstützte [platform-version](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html).
+ Ersetzen Sie *-flavor* durch eine der folgenden Optionen.
  + Entfernen Sie *-flavor* für Varianten ohne GPU
  + Verwenden Sie *-nvidia* für GPU-fähige Varianten.
  + Verwenden Sie *-fips* für FIPS-fähige Varianten.
+ Ersetzen Sie *architecture* durch eine der folgenden Optionen.
  + Verwenden Sie *x86\$164* für `x86`-basierte Instances.
  + Verwenden Sie *arm64* für ARM-Instances.
+ Ersetzen Sie *region-code* durch eine [Amazon-EKS-unterstützte AWS-Region](https://docs.aws.amazon.com/general/latest/gr/eks.html), für die Sie die AMI-ID verwenden möchten.

```
aws ssm get-parameter --name /aws/service/bottlerocket/aws-k8s-kubernetes-version-flavor/architecture/latest/image_id \
    --region region-code --query "Parameter.Value" --output text
```

Hier ist ein Beispielbefehl, nachdem Platzhalter ersetzt wurden.

```
aws ssm get-parameter --name /aws/service/bottlerocket/aws-k8s-1.31/x86_64/latest/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

Eine Beispielausgabe sieht wie folgt aus.

```
ami-1234567890abcdef0
```

# Compliance-Anforderungen mit Bottlerocket erfüllen
<a name="bottlerocket-compliance-support"></a>

Bottlerocket entspricht den von verschiedenen Organisationen festgelegten Empfehlungen:
+ Für Bottlerocket ist ein [CIS-Benchmark](https://www.cisecurity.org/benchmark/bottlerocket) definiert. In einer Standardkonfiguration verfügt das Bottlerocket-Image über die meisten Steuerelemente, die für das CIS-Level-1-Konfigurationsprofil erforderlich sind. Sie können die für ein CIS-Level-2-Konfigurationsprofil erforderlichen Steuerungen implementieren. Weitere Informationen finden Sie unter [Validieren des für Amazon EKS optimierten Bottlerocket-AMIs anhand des CIS-Benchmarks](https://aws.amazon.com/blogs/containers/validating-amazon-eks-optimized-bottlerocket-ami-against-the-cis-benchmark) im AWS-Blog.
+ Der optimierte Feature-Umfang und die reduzierte Angriffsfläche bedeuten, dass Bottlerocket-Instances weniger Konfiguration erfordern, um die PCI-DSS-Anforderungen zu erfüllen. Der [CIS-Benchmark für Bottlerocket](https://www.cisecurity.org/benchmark/bottlerocket) ist eine hervorragende Quelle für Hardening-Richtlinien und unterstützt Ihre Anforderungen an sichere Konfigurationsstandards gemäß der PCI-DSS-Anforderung 2.2. Sie können [Fluent Bit](https://opensearch.org/blog/technical-post/2022/07/bottlerocket-k8s-fluent-bit/) auch nutzen, um Ihre Anforderungen an die Auditprotokollierung auf Betriebssystemebene gemäß der PCI-DSS-Anforderung 10.2 zu erfüllen. AWS veröffentlicht regelmäßig neue (gepatchte) Bottlerocket-Instances, damit Sie die PCI-DSS-Anforderungen 6.2 (für v3.2.1) und 6.3.3 (für v4.0) erfüllen können.
+ Bottlerocket ist ein HIPAA-fähiges Feature, die für die Verwendung mit regulierten Workloads sowohl für Amazon EC2 als auch für Amazon EKS autorisiert ist. Weitere Informationen finden Sie in der [Referenz für HIPAA-berechtigte Services](https://aws.amazon.com/compliance/hipaa-eligible-services-reference/).
+ Es sind Bottlerocket-AMIs verfügbar, die für die Verwendung von FIPS 140-3-validierten kryptografischen Modulen vorkonfiguriert sind. Dazu gehören das Amazon Linux 2023 Kernel Crypto API Cryptographic Module und das AWS-LC Cryptographic Module. Weitere Informationen finden Sie unter [Machen Sie Ihre Worker-Nodes FIPS-fähig mit Bottlerocket FIPS AMIs](bottlerocket-fips-amis.md).

# Machen Sie Ihre Worker-Nodes FIPS-fähig mit Bottlerocket FIPS AMIs
<a name="bottlerocket-fips-amis"></a>

Die Veröffentlichung 140-3 des Federal Information Processing Standard (FIPS) ist ein Sicherheitsstandard der US- und der kanadischen Regierung, mit dem die Sicherheitsanforderungen für Verschlüsselungsmodule angegeben werden, die vertrauliche Informationen schützen. Bottlerocket erleichtert die Einhaltung von FIPS, indem es mit einem FIPS-Kernel anbietet. AMIs 

Diese AMIs sind für die Verwendung von FIPS 140-3-validierten kryptografischen Modulen vorkonfiguriert. Dazu gehören das Amazon Linux 2023 Kernel Cryptographic API Cryptographic Module und das AWS-LC Cryptographic Module.

Durch die Verwendung von Bottlerocket FIPS sind Ihre Worker-Knoten AMIs zwar „FIPS-fähig“, aber nicht automatisch „FIPS-konform“. Weitere Informationen finden Sie unter [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

## Überlegungen
<a name="_considerations"></a>
+ Wenn Ihr Cluster isolierte Subnetze verwendet, ist der Amazon-ECR-FIPS-Endpunkt möglicherweise nicht erreichbar. Dies kann dazu führen, dass der Knoten-Bootstrap fehlschlägt. Stellen Sie sicher, dass Ihre Netzwerkkonfiguration den Zugriff auf die erforderlichen FIPS-Endpunkte zulässt. Weitere Informationen finden Sie im * AWS PrivateLink Handbuch* unter [Zugreifen auf eine Ressource über einen VPC-Endpunkt](https://docs.aws.amazon.com/vpc/latest/privatelink/use-resource-endpoint.html) für Ressourcen.
+ Wenn Ihr Cluster ein Subnetz mit verwendet [PrivateLink](vpc-interface-endpoints.md), schlagen Image-Pulls fehl, weil Amazon ECR FIPS-Endpunkte nicht über verfügbar sind. PrivateLink

## Erstellung einer verwalteten Knotengruppe mit einer Bottlerocket-FIPS-AMI
<a name="_create_a_managed_node_group_with_a_bottlerocket_fips_ami"></a>

Das Bottlerocket FIPS AMI ist in vier Varianten erhältlich, um Ihre Workloads zu unterstützen:
+  `BOTTLEROCKET_x86_64_FIPS` 
+  `BOTTLEROCKET_ARM_64_FIPS` 
+  `BOTTLEROCKET_x86_64_NVIDIA_FIPS` 
+  `BOTTLEROCKET_ARM_64_NVIDIA_FIPS` 

Um eine verwaltete Knotengruppe mit einer Bottlerocket-FIPS-AMI zu erstellen, wählen Sie während des Erstellungsprozesses den entsprechenden AMI-Typ aus. Weitere Informationen finden Sie unter [Eine verwaltete Knotengruppe für Ihren Cluster erstellen](create-managed-node-group.md).

Weitere Informationen zur Auswahl von FIPS-fähigen Varianten finden Sie unter [Empfohlene Bottlerocket-AMI-IDs abrufen](retrieve-ami-id-bottlerocket.md).

## Deaktivieren Sie den FIPS-Endpunkt für nicht unterstützte Regionen AWS
<a name="disable_the_fips_endpoint_for_non_supported_shared_aws_regions"></a>

Bottlerocket FIPS AMIs werden in den Vereinigte Staaten, einschließlich AWS GovCloud (US-) Regionen, direkt unterstützt. AWS In Regionen, in denen sie verfügbar AMIs sind, aber nicht direkt unterstützt werden, können Sie sie trotzdem verwenden, AMIs indem Sie eine verwaltete Knotengruppe mit einer Startvorlage erstellen.

Das Bottlerocket-FIPS-AMI basiert während des Bootstraps auf dem Amazon ECR-FIPS-Endpunkt, der außerhalb der Vereinigten Staaten in der Regel nicht verfügbar ist. Um das AMI für seinen FIPS-Kernel in AWS Regionen zu verwenden, in denen der Amazon ECR-FIPS-Endpunkt nicht verfügbar ist, gehen Sie wie folgt vor, um den FIPS-Endpunkt zu deaktivieren:

1. Erstellen Sie eine neue Konfigurationsdatei mit dem nachfolgenden Inhalt oder integrieren Sie den Inhalt in Ihre bestehende Konfigurationsdatei.

```
[default]
use_fips_endpoint=false
```

1. Codieren Sie den Dateiinhalt im Base64-Format.

1. Fügen Sie in Ihrer Startvorlage `UserData` die folgende codierte Zeichenfolge im TOML-Format hinzu:

```
[settings.aws]
config = "<your-base64-encoded-string>"
```

[Weitere Einstellungen finden Sie in der Beschreibung der Einstellungen von Bottlerocket unter.](https://github.com/bottlerocket-os/bottlerocket?tab=readme-ov-file#description-of-settings) GitHub

Hier ist ein Beispiel von `UserData` für eine Startvorlage:

```
[settings]
motd = "Hello from eksctl!"
[settings.aws]
config = "W2RlZmF1bHRdCnVzZV9maXBzX2VuZHBvaW50PWZhbHNlCg==" # Base64-encoded string.
[settings.kubernetes]
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
cluster-name = "<cluster-name>"
...<other-settings>
```

Weitere Informationen zum Erstellen einer Startvorlage mit Benutzerdaten finden Sie unter [Verwaltete Knoten mit Startvorlagen anpassen](launch-templates.md).

# Erstellung von Knoten mit optimierten Ubuntu-Linux-AMIs
<a name="eks-partner-amis"></a>

Canonical hat in enger Zusammenarbeit mit Amazon EKS Knoten-AMIs erstellt, die Sie in Ihren Clustern verwenden können.

 [Canonical](https://www.canonical.com/) stellt ein zu diesem Zweck erstelltes Kubernetes-Knoten-OS-Image bereit. Dieses minimierte Ubuntu-Image ist für Amazon EKS optimiert und enthält den benutzerdefinierten AWS-Kernel, der gemeinsam mit AWS entwickelt wurde. Weitere Informationen finden Sie unter [Ubuntu in Amazon Elastic Kubernetes Service (EKS)](https://cloud-images.ubuntu.com/aws-eks/) und [Selbstverwaltete Ubuntu Linux-Knoten erstellen](launch-node-ubuntu.md). Informationen zum Support finden Sie im Abschnitt [Software von Drittanbietern](https://aws.amazon.com/premiumsupport/faqs/#Third-party_software) in den *Häufig gestellten Fragen zum AWS-Premium-Support*.

# Knoten mit optimiertem Windows erstellen AMIs
<a name="eks-optimized-windows-ami"></a>

Windows Amazon EKS Optimized AMIs basiert auf Windows Server 2019, Windows Server 2022 und Windows Server 2025. Sie sind so konfiguriert, dass sie als Basis-Image für Amazon-EKS-Knoten dienen. Standardmäßig AMIs enthalten sie die folgenden Komponenten:
+  [Kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) 
+  [kube-proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/) 
+  [AWS IAM-Authentifikator für Kubernetes](https://github.com/kubernetes-sigs/aws-iam-authenticator) 
+  [csi-proxy](https://github.com/kubernetes-csi/csi-proxy) 
+  [containerd](https://containerd.io/) 

**Anmerkung**  
Sie können Sicherheits- oder Datenschutzereignisse für Windows Server mit dem [Microsoft Security Update Guide](https://portal.msrc.microsoft.com/en-us/security-guidance) verfolgen.

Amazon EKS-Angebote AMIs , die für Windows-Container optimiert sind, gibt es in den folgenden Varianten:
+ Amazon-EKS-optimierte Windows-Server-2019-Core-AMI
+ Amazon-EKS-optimierte Windows-Server-2019-Full-AMI
+ Amazon-EKS-optimierte Windows Server 2022 Core AMI
+ Amazon-EKS-optimierte Windows Server 2022 Full AMI
+ Amazon EKS-optimiertes Windows Server 2025 Core-AMI
+ Vollständiges AMI für Amazon EKS für Windows Server 2025

**Wichtig**  
Die Amazon-EKS-optimierte Windows Server 20H2 Core AMI ist veraltet. Es werden keine neuen Versionen dieses AMI veröffentlicht.
Um sicherzustellen, dass Sie standardmäßig über die neuesten Sicherheitsupdates verfügen, hat Amazon EKS AMIs Windows in den letzten 4 Monaten optimiert. Jede neue AMI wird ab dem Zeitpunkt der ersten Veröffentlichung für 4 Monate verfügbar sein. Nach Ablauf dieses Zeitraums AMIs werden ältere Dateien als privat eingestuft und sind nicht mehr zugänglich. Wir empfehlen, die neuesten Versionen AMIs zu verwenden, um Sicherheitslücken zu vermeiden und den Zugriff auf ältere Versionen zu vermeiden AMIs , die das Ende ihrer unterstützten Lebensdauer erreicht haben. Wir können zwar nicht garantieren, dass wir Zugriff auf privat gemachte AMIs Inhalte gewähren können, aber du kannst den Zugriff beantragen, indem du ein Ticket beim AWS Support einreichst.

## Veröffentlichungskalender
<a name="windows-ami-release-calendar"></a>

In der folgenden Tabelle sind die Veröffentlichungs- und Daten für das Ende der Unterstützung für Windows-Versionen auf Amazon EKS aufgeführt. Wenn ein Enddatum leer ist, liegt dies daran, dass die Version weiterhin unterstützt wird.


| Windows-Version | Amazon-EKS-Version | Ende der Unterstützung für Amazon EKS | 
| --- | --- | --- | 
|  Windows Server 2025 Core  |  27.01.2026  |  | 
|  Windows Server 2025 ist voll  |  27.01.2026  |  | 
|  Windows Server 2022 Kern  |  17.10.2022  |  | 
|  Windows Server 2022 Voll  |  17.10.2022  |  | 
|  Windows Server 20H2 Core  |  12.8.2021  |  9.8.2022  | 
|  Windows Server 2004 Core  |  19.8.2020  |  14.12.2021  | 
|  Windows Server 2019 Kern  |  7.10.2019  |  | 
|  Windows Server 2019 Full  |  7.10.2019  |  | 
|  Windows Server 1909 Core  |  7.10.2019  |  8.12.2020  | 

## Bootstrap-Skript-Konfigurationsparameter
<a name="bootstrap-script-configuration-parameters"></a>

Wenn Sie einen Windows-Knoten erstellen, gibt es auf dem Knoten ein Skript, mit dem unterschiedliche Parameter konfiguriert werden können. Abhängig von Ihrem Setup kann dieses Skript auf dem Knoten an einem Ort gefunden werden, der ähnlich ist wie: `C:\Program Files\Amazon\EKS\Start-EKSBootstrap.ps1`. Sie können benutzerdefinierte Parameterwerte angeben, indem Sie sie als Argumente für das Bootstrap-Skript angeben. So können Sie beispielsweise die Benutzerdaten in der Startvorlage aktualisieren. Weitere Informationen finden Sie unter [Amazon-EC2-Benutzerdaten](launch-templates.md#launch-template-user-data).

Das Skript enthält die folgenden Befehlszeilenparameter:
+  `-EKSClusterName` – Gibt den Namen des Amazon-EKS-Clusters an, dem dieser Worker-Knoten beitreten soll.
+  `-KubeletExtraArgs` – Gibt zusätzliche Argumente für `kubelet` an (optional).
+  `-KubeProxyExtraArgs` – Gibt zusätzliche Argumente für `kube-proxy` an (optional).
+  `-APIServerEndpoint` – Gibt den Amazon-EKS-Cluster-API-Server-Endpunkt an (optional). Nur gültig bei Verwendung mit `-Base64ClusterCA`. Umgehung des Anrufs `Get-EKSCluster`.
+  `-Base64ClusterCA` – Gibt den base64-codierten Cluster-CA-Inhalt an (optional). Nur gültig bei Verwendung mit `-APIServerEndpoint`. Umgehung des Anrufs `Get-EKSCluster`.
+  `-DNSClusterIP` – Überschreibt die IP-Adresse, die für DNS-Abfragen innerhalb des Clusters verwendet werden soll (optional). Der Standardwert ist `10.100.0.10` oder `172.20.0.10`, basierend auf der IP-Adresse der primären Schnittstelle.
+  `-ServiceCIDR` – Überschreibt den Kubernetes-Service-IP-Adressbereich, aus dem Cluster adressiert werden. Der Standardwert ist `172.20.0.0/16` oder `10.100.0.0/16`, basierend auf der IP-Adresse der primären Schnittstelle.
+  `-ExcludedSnatCIDRs`— Eine Liste von Programmen `IPv4` CIDRs , die von der Source Network Address Translation (SNAT) ausgeschlossen werden sollen. Das bedeutet, dass die private Pod-IP, die über VPC adressierbar ist, nicht in die IP-Adresse der primären `IPv4`-Adresse der ENI der Instance für ausgehenden Datenverkehr übersetzt wird. Standardmäßig wird das `IPv4`-CIDR der VPC für den Amazon-EKS-Windows-Knoten hinzugefügt. Wenn Sie CIDRs diesen Parameter angeben, wird der angegebene Wert zusätzlich ausgeschlossen. CIDRs Weitere Informationen finden Sie unter [Aktivierung des ausgehenden Internetzugangs für Pods](external-snat.md).

Zusätzlich zu den Befehlszeilenparametern können Sie auch einige Parameter für Umgebungsvariablen angeben. Wenn Sie einen Befehlszeilenparameter angeben, hat dieser Vorrang vor der jeweiligen Umgebungsvariablen. Die Umgebungsvariablen sollten als Maschinen- (oder System-) Bereich definiert werden, da das Bootstrap-Skript nur maschinenspezifische Variablen liest.

Das Skript berücksichtigt die folgenden Umgebungsvariablen:
+  `SERVICE_IPV4_CIDR` – Die Definition finden Sie im `ServiceCIDR`-Befehlszeilenparameter.
+  `EXCLUDED_SNAT_CIDRS` – Sollte eine durch Kommas getrennte Zeichenfolge sein. Die Definition finden Sie im `ExcludedSnatCIDRs`-Befehlszeilenparameter.

### Support für gMSA-Authentifizierung
<a name="ad-and-gmsa-support"></a>

Amazon EKS Windows Pods ermöglichen verschiedene Arten der Authentifizierung von Group Managed Service Accounts (gMSA).
+ Amazon EKS unterstützt Active-Directory-Domain-Identitäten für die Authentifizierung. Weitere Informationen zu domänengebundenen GmSA finden Sie im Blog unter [Windows-Authentifizierung auf Amazon EKS Windowspods](https://aws.amazon.com/blogs/containers/windows-authentication-on-amazon-eks-windows-pods). AWS 
+ Amazon EKS bietet ein Plugin, mit dem non-domain-joined Windows-Knoten gMSA-Anmeldeinformationen mit einer portablen Benutzeridentität abrufen können. Weitere Informationen zu domainless gMSA finden Sie im Blog unter [Domainless Windows Authentication for Amazon EKS Windowspods](https://aws.amazon.com/blogs/containers/domainless-windows-authentication-for-amazon-eks-windows-pods). AWS 

## Zwischengespeicherte Container-Images
<a name="windows-cached-container-images"></a>

Amazon EKS ist für Windows optimiert und AMIs hat bestimmte Container-Images für die `containerd` Laufzeit zwischengespeichert. Container-Images werden zwischengespeichert, wenn benutzerdefinierte Images AMIs mit von Amazon verwalteten Build-Komponenten erstellt werden. Weitere Informationen finden Sie unter [Verwendung der von Amazon verwalteten Entwicklungskomponente](eks-custom-ami-windows.md#custom-windows-ami-build-component).

Die folgenden zwischengespeicherten Container-Images sind für die `containerd`-Laufzeit bestimmt:
+  `amazonaws.com/eks/pause-windows` 
+  `mcr.microsoft.com/windows/nanoserver` 
+  `mcr.microsoft.com/windows/servercore` 

## Weitere Informationen
<a name="windows-more-information"></a>

Weitere Informationen zur Verwendung von Amazon EKS-optimiertem Windows AMIs finden Sie in den folgenden Abschnitten:
+ Einzelheiten zur Ausführung von Workloads auf Amazon EKS-optimiertem beschleunigtem Windows finden Sie AMIs unter[Ausführung von GPU-beschleunigten Containern (Windows in EC2-G-Serie)](ml-eks-windows-optimized-ami.md).
+ Informationen zur Verwendung von Windows mit verwalteten Knotengruppen finden Sie unter [Vereinfachung des Knotenlebenszyklus mit verwalteten Knotengruppen](managed-node-groups.md).
+ Informationen zum Starten von selbstverwalteten Windows-Knoten finden Sie unter [Selbstverwaltete Microsoft-Windows-Knoten erstellen](launch-windows-workers.md).
+ Versionsinformationen finden Sie unter [Abrufen der Windows-AMI-Versionsinformationen](eks-ami-versions-windows.md).
+ Informationen zum Abrufen der neuesten Version IDs des für Amazon EKS optimierten Windows AMIs finden Sie unter[Rufen Sie das empfohlene Microsoft Windows AMI ab IDs](retrieve-windows-ami-id.md).
+ Informationen zur Verwendung von Amazon EC2 Image Builder zur Erstellung benutzerdefinierter Amazon EKS-optimierter Windows AMIs finden Sie unter[Entwicklung einer benutzerdefinierten Windows-AMI mit Image Builder](eks-custom-ami-windows.md).
+ Bewährte Methoden finden Sie unter [Amazon-EKS-optimierte Windows-AMI-Verwaltung](https://aws.github.io/aws-eks-best-practices/windows/docs/ami/) im *EKS-Leitfaden für bewährte Methoden*.

# Selbstverwaltete Knoten für Windows Server 2022 mit `eksctl` erstellen
<a name="self-managed-windows-server-2022"></a>

Sie können das folgende `test-windows-2022.yaml` als Referenz für die Erstellung selbstverwalteter Knoten für Windows Server 2022 verwenden. Ersetzen Sie jede *example value* durch Ihre eigenen Werte.

**Anmerkung**  
Sie müssen `eksctl`-Version [0.116.0](https://github.com/weaveworks/eksctl/releases/tag/v0.116.0) oder höher verwenden, um selbstverwaltete Knoten für Windows Server 2022 auszuführen.

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: windows-2022-cluster
  region: region-code
  version: '1.35'

nodeGroups:
  - name: windows-ng
    instanceType: m5.2xlarge
    amiFamily: WindowsServer2022FullContainer
    volumeSize: 100
    minSize: 2
    maxSize: 3
  - name: linux-ng
    amiFamily: AmazonLinux2
    minSize: 2
    maxSize: 3
```

Die Knotengruppen können dann mit dem folgenden Befehl erstellt werden.

```
eksctl create cluster -f test-windows-2022.yaml
```

# Abrufen der Windows-AMI-Versionsinformationen
<a name="eks-ami-versions-windows"></a>

[In diesem Thema werden Versionen des für Amazon EKS optimierten Windows AMIs und die entsprechenden Versionen von [Kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/), [Containerd](https://containerd.io/) und csi-proxy aufgeführt.](https://github.com/kubernetes-csi/csi-proxy)

Die Amazon-EKS-optimierten AMI-Metadaten, einschließlich der AMI-ID für jede Variante, können programmgesteuert abgerufen werden. Weitere Informationen finden Sie unter [Rufen Sie das empfohlene Microsoft Windows AMI ab IDs](retrieve-windows-ami-id.md).

AMIs werden nach der Kubernetes-Version und dem Veröffentlichungsdatum des AMI im folgenden Format versioniert:

```
k8s_major_version.k8s_minor_version-release_date
```

**Anmerkung**  
Von Amazon EKS verwaltete Knotengruppen unterstützen die Windows-Versionen November 2022 und spätere Versionen AMIs.

Um Benachrichtigungen über alle Änderungen an den Quelldateien dieser spezifischen Dokumentationsseite zu erhalten, können Sie die folgende URL mit einem RSS-Reader abonnieren:

```
https://github.com/awsdocs/amazon-eks-user-guide/commits/mainline/latest/ug/nodes/eks-ami-versions-windows.adoc.atom
```

## Amazon EKS-optimiertes Windows Server 2025 Core-AMI
<a name="eks-ami-versions-windows-2025-core"></a>

In den folgenden Tabellen sind die aktuellen und früheren Versionen des für Amazon EKS optimierten Windows Server 2025 Core AMI aufgeführt.

**Example**  


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 

## Amazon EKS-optimiertes Windows Server 2025 Vollständiges AMI
<a name="eks-ami-versions-windows-2025-full"></a>

In den folgenden Tabellen sind die aktuellen und früheren Versionen des für Amazon EKS optimierten Windows Server 2025 Full AMI aufgeführt.

**Example**  


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 

## Amazon-EKS-optimierte Windows-Server-2022-Core-AMI
<a name="eks-ami-versions-windows-2022-core"></a>

In den folgenden Tabellen sind die aktuellen und früheren Versionen des Amazon-EKS-optimierten Windows-Server-2022-Core-AMI aufgeführt.

**Example**  


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  `containerd` wurde auf `2.1.6` aktualisiert.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.15`   |   `1.32.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  `containerd` wurde auf `1.7.20` aktualisiert.  | 
|   `1.30-2025.02.15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  `containerd` wurde auf `1.7.14` aktualisiert.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  `containerd` wurde auf `1.7.20` aktualisiert.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  `containerd` wurde auf `1.7.11` aktualisiert. `kubelet` wurde auf `1.29.3` aktualisiert.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  `containerd` wurde auf `1.6.28` aktualisiert. CNI und `csi-proxy` unter Verwendung von `golang 1.22.1` neu erstellt.  | 
|   `1.29-2024.03.12`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Ein Fehler wurde behoben, bei dem das Pause-Image durch den `kubelet`-Garbage-Collection-Prozess fälschlicherweise gelöscht wurde.  | 
|   `1.29-2024.01.11`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  Ausgeschlossen ist das eigenständige Windows-Update [KB5034439](https://support.microsoft.com/en-au/topic/kb5034439-windows-recovery-environment-update-for-azure-stack-hci-version-22h2-and-windows-server-2022-january-9-2024-6f9d26e6-784c-4503-a3c6-0beedda443ca)auf Windows Server 2022 Core. AMIs Die KB gilt nur für Windows-Installationen mit einer separaten WinRE-Partition, die in keinem unserer für Amazon EKS optimierten Windows AMIs enthalten sind.  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  `containerd` wurde auf `1.7.20` aktualisiert.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025.01.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  `containerd` wurde auf `1.7.11` aktualisiert.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  `containerd` wurde auf `1.6.28` aktualisiert. `kubelet` wurde auf `1.28.8` aktualisiert.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  `containerd` wurde auf `1.6.25` aktualisiert. CNI und `csi-proxy` unter Verwendung von `golang 1.22.1` neu erstellt.  | 
|   `1.28-2024.03.12`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.11`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  Ausgeschlossen ist das eigenständige Windows-Update [KB5034439](https://support.microsoft.com/en-au/topic/kb5034439-windows-recovery-environment-update-for-azure-stack-hci-version-22h2-and-windows-server-2022-january-9-2024-6f9d26e6-784c-4503-a3c6-0beedda443ca)auf Windows Server 2022 Core. AMIs Die KB gilt nur für Windows-Installationen mit einer separaten WinRE-Partition, die in keinem unserer für Amazon EKS optimierten Windows AMIs enthalten sind.  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  `containerd` wurde auf `1.6.18` aktualisiert. Neue [Umgebungsvariablen für Bootstrap-Skripte](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) hinzugefügt (`SERVICE_IPV4_CIDR` und `EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Ein [Security Advisory](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) wurde in `kubelet` behoben.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

## Amazon-EKS-optimierte Windows-Server-2022-Full-AMI
<a name="eks-ami-versions-windows-2022-full"></a>

In den folgenden Tabellen sind die aktuellen und früheren Versionen des Amazon-EKS-optimierten Windows-Server-2022-Full-AMI aufgeführt.

**Example**  


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  `containerd` wurde auf `2.1.6` aktualisiert.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  `containrd` auf `1.7.27` aktualisiert   | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.01`   |   `1.32.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  `contianerd` wurde auf `1.7.20` aktualisiert.  | 
|   `1.30-2025.02.15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  `containerd` wurde auf `1.7.14` aktualisiert.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  `containerd` wurde auf `1.7.20` aktualisiert.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  `containerd` wurde auf `1.7.11` aktualisiert. `kubelet` wurde auf `1.29.3` aktualisiert.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  `containerd` wurde auf `1.6.28` aktualisiert. CNI und `csi-proxy` unter Verwendung von `golang 1.22.1` neu erstellt.  | 
|   `1.29-2024.03.12`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Ein Fehler wurde behoben, bei dem das Pause-Image durch den `kubelet`-Garbage-Collection-Prozess fälschlicherweise gelöscht wurde.  | 
|   `1.29-2024.01.09`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  `containerd` wurde auf `1.7.20` aktualisiert.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025.01.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025.01.01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  `containerd` wurde auf `1.7.11` aktualisiert.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  `containerd` wurde auf `1.6.28` aktualisiert. `kubelet` wurde auf `1.28.8` aktualisiert.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  `containerd` wurde auf `1.6.25` aktualisiert. CNI und `csi-proxy` unter Verwendung von `golang 1.22.1` neu erstellt.  | 
|   `1.28-2024.03.12`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.09`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  `containerd` wurde auf `1.6.18` aktualisiert. Neue [Umgebungsvariablen für Bootstrap-Skripte](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) hinzugefügt (`SERVICE_IPV4_CIDR` und `EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Ein [Security Advisory](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) wurde in `kubelet` behoben.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

## Amazon-EKS-optimierte Windows-Server-2019-Core-AMI
<a name="eks-ami-versions-windows-2019-core"></a>

In den folgenden Tabellen sind die aktuellen und früheren Versionen des Amazon-EKS-optimierten Windows-Server-2019-Core-AMI aufgeführt.

**Example**  


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  `containerd` wurde auf `2.1.6` aktualisiert.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.15`   |   `1.32.4`   |   `1.7.20`   |   `1.1.3`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  `containerd` wurde auf `1.7.20` aktualisiert.  | 
|   `1.30-2025-02-15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  `containerd` wurde auf `1.7.14` aktualisiert.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  `containerd` wurde auf `1.7.20` aktualisiert.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  `containerd` wurde auf `1.7.11` aktualisiert. `kubelet` wurde auf `1.29.3` aktualisiert.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  `containerd` wurde auf `1.6.28` aktualisiert. CNI und `csi-proxy` unter Verwendung von `golang 1.22.1` neu erstellt.  | 
|   `1.29-2024.03.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Ein Fehler wurde behoben, bei dem das Pause-Image durch den `kubelet`-Garbage-Collection-Prozess fälschlicherweise gelöscht wurde.  | 
|   `1.29-2024.01.09`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  `containerd` wurde auf `1.7.20` aktualisiert.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  `containerd` wurde auf `1.7.11` aktualisiert.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  `containerd` wurde auf `1.6.28` aktualisiert. `kubelet` wurde auf `1.28.8` aktualisiert.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  `containerd` wurde auf `1.6.25` aktualisiert. CNI und `csi-proxy` unter Verwendung von `golang 1.22.1` neu erstellt.  | 
|   `1.28-2024.03.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.09`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  `containerd` wurde auf `1.6.18` aktualisiert. Neue [Umgebungsvariablen für Bootstrap-Skripte](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) hinzugefügt (`SERVICE_IPV4_CIDR` und `EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Ein [Security Advisory](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) wurde in `kubelet` behoben.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

## Amazon-EKS-optimierte Windows-Server-2019-Full-AMI
<a name="eks-ami-versions-windows-2019-full"></a>

In den folgenden Tabellen sind die aktuellen und früheren Versionen des Amazon-EKS-optimierten Windows-Server-2019-Full-AMI aufgeführt.

**Example**  


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  `containerd` wurde auf `2.1.6` aktualisiert.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.15`   |   `1.32.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  `containerd` wurde auf `1.7.20` aktualisiert.  | 
|   `1.30-2025.02.15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  `containerd` wurde auf `1.7.14` aktualisiert.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  `containerd` wurde auf `1.7.30` aktualisiert.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  `containerd` wurde auf `1.7.20` aktualisiert.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  `containerd` wurde auf `1.7.11` aktualisiert. `kubelet` wurde auf `1.29.3` aktualisiert.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  `containerd` wurde auf `1.6.28` aktualisiert. CNI und `csi-proxy` unter Verwendung von `golang 1.22.1` neu erstellt.  | 
|   `1.29-2024.03.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Ein Fehler wurde behoben, bei dem das Pause-Image durch den `kubelet`-Garbage-Collection-Prozess fälschlicherweise gelöscht wurde.  | 
|   `1.29-2024.01.09`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  | 


| AMI-Version | kubelet-Version | containerd-Version | csi-proxy-Version | Versionshinweise | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  GMSA-Plugin-Protokolle in Windows-Ereignisse geändert  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  `containerd` wurde auf `1.7.27` aktualisiert.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  `containerd` wurde auf `1.7.20` aktualisiert.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Beinhaltet Patches für `CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  `containerd` wurde auf `1.7.11` aktualisiert.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  `containerd` wurde auf `1.6.28` aktualisiert. `kubelet` wurde auf `1.28.8` aktualisiert.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  `containerd` wurde auf `1.6.25` aktualisiert. CNI und `csi-proxy` unter Verwendung von `golang 1.22.1` neu erstellt.  | 
|   `1.28-2024.03.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.09`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Beinhaltet Patches für `CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  `containerd` wurde auf `1.6.18` aktualisiert. Neue [Umgebungsvariablen für Bootstrap-Skripte](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) hinzugefügt (`SERVICE_IPV4_CIDR` und `EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Ein [Security Advisory](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) wurde in `kubelet` behoben.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

# Rufen Sie das empfohlene Microsoft Windows AMI ab IDs
<a name="retrieve-windows-ami-id"></a>

Beim Bereitstellen von Knoten können Sie eine ID für ein vorkonfiguriertes, für Amazon EKS optimiertes Amazon Machine Image (AMI) angeben. Um eine AMI-ID abzurufen, die Ihrer gewünschten Konfiguration entspricht, fragen Sie die AWS Systems Manager Parameter Store-API ab. Durch die Verwendung dieser API entfällt die Notwendigkeit, manuell nach Amazon EKS-optimiertem AMI zu suchen IDs. Weitere Informationen finden Sie unter [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Das von Ihnen verwendete [IAM-Prinzipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) muss über die `ssm:GetParameter`-IAM-Berechtigung zum Abrufen der Amazon EKS-optimierten AMI-Metadaten verfügen.

Sie können die Image-ID des neuesten empfohlenen, für Amazon EKS optimierten Windows-AMI mit dem folgenden Befehl abrufen, der den Unterparameter `image_id` verwendet. Nehmen Sie nach Bedarf die folgenden Änderungen am Befehl vor und führen Sie anschließend den geänderten Befehl aus:
+ *release*Ersetzen Sie es durch eine der folgenden Optionen.
  + *2025*Für Windows Server 2025 verwenden.
  + *2022*Für Windows Server 2022 verwenden.
  + *2019*Für Windows Server 2019 verwenden.
+ *installation-option*Ersetzen Sie durch eine der folgenden Optionen. Weitere Informationen finden Sie unter [Was ist die Server-Core-Installationsoption in Windows Server?](https://learn.microsoft.com/en-us/windows-server/administration/server-core/what-is-server-core).
  + Verwenden Sie es *Core* für eine minimale Installation mit einer kleineren Angriffsfläche.
  + Wird verwendet*Full*, um das Windows-Desktop-Erlebnis einzubeziehen.
+ *kubernetes-version*Durch eine unterstützte [Plattformversion](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) ersetzen.
+ *region-code*Ersetzen Sie durch eine von [Amazon EKS unterstützte AWS Region](https://docs.aws.amazon.com/general/latest/gr/eks.html), für die Sie die AMI-ID benötigen.

```
aws ssm get-parameter --name /aws/service/ami-windows-latest/Windows_Server-release-English-installation-option-EKS_Optimized-kubernetes-version/image_id \
    --region region-code --query "Parameter.Value" --output text
```

Hier ist ein Beispielbefehl, nachdem Platzhalter ersetzt wurden.

```
aws ssm get-parameter --name /aws/service/ami-windows-latest/Windows_Server-2022-English-Core-EKS_Optimized-k8s-n-2/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

Eine Beispielausgabe sieht wie folgt aus.

```
ami-1234567890abcdef0
```

# Entwicklung einer benutzerdefinierten Windows-AMI mit Image Builder
<a name="eks-custom-ami-windows"></a>

Sie können EC2 Image Builder verwenden, um benutzerdefinierte, für Amazon EKS optimierte Windows AMIs mit einer der folgenden Optionen zu erstellen:
+  [Verwendung einer für Amazon EKS optimierten Windows-AMI als Grundlage](#custom-windows-ami-as-base) 
+  [Verwendung der von Amazon verwalteten Entwicklungskomponente](#custom-windows-ami-build-component) 

Bei beiden Methoden müssen Sie Ihr eigenes Image-Builder-Rezept erstellen. Weitere Informationen finden Sie unter [Erstellen einer neuen Version eines Bildrezeptes](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-image-recipes.html) im Image-Builder-Benutzerhandbuch.

**Wichtig**  
Die folgenden **von Amazon verwalteten** Komponenten für `eks` enthalten Patches für `CVE-2024-5321`.  
 `1.28.2` und höher
 `1.29.2` und höher
 `1.30.1` und höher
Alle Versionen für Kubernetes 1.31 und höher

## Verwendung einer für Amazon EKS optimierten Windows-AMI als Grundlage
<a name="custom-windows-ami-as-base"></a>

Diese Option ist die empfohlene Methode, um Ihr benutzerdefiniertes Windows zu erstellen AMIs. Das von AMIs uns bereitgestellte Amazon EKS-optimierte Windows wird häufiger aktualisiert als die von Amazon verwaltete Build-Komponente.

1. Starten Sie ein neues Image-Builder-Rezept.

   1. Öffnen Sie die EC2 Image Builder Builder-Konsole unter https://console.aws.amazon.com /imagebuilder.

   1. Wählen Sie im linken Navigationsbereich **Image recipes** (Image-Rezepte) aus.

   1. Wählen Sie **Create image recipe** (Image-Rezept erstellen) aus.

1. Geben Sie im Abschnitt **Recipe details** (Rezeptdetails) einen **Namen** und eine **Version** ein.

1. Geben Sie die ID der für Amazon EKS optimierten Windows-AMI im Abschnitt **Basis-Image** an.

   1. Wählen Sie **Enter custom AMI ID** (Benutzerdefinierte AMI-ID eingeben) aus.

   1. Rufen Sie die AMI-ID für die benötigte Windows-Betriebssystemversion ab. Weitere Informationen finden Sie unter [Rufen Sie das empfohlene Microsoft Windows AMI ab IDs](retrieve-windows-ami-id.md).

   1. Geben Sie die benutzerdefinierte **AMI-ID** ein. Wenn die AMI-ID nicht gefunden wird, stellen Sie sicher, dass die AWS Region für die AMI-ID mit der AWS Region übereinstimmt, die oben rechts auf Ihrer Konsole angezeigt wird.

1. (Optional) Um die neuesten Sicherheitsupdates zu erhalten, fügen Sie die `update-windows`-Komponente im Abschnitt **Build components – ** (Build-Komponenten – ) hinzu.

   1. Wählen Sie in der Dropdownliste rechts neben dem Suchfeld **Find components by name** (Komponenten nach Namen suchen) **Amazon-managed** (Von Amazon verwaltet) aus.

   1. Geben Sie im Suchfeld **Find components by name** (Komponenten nach Namen suchen) `update-windows` ein.

   1. Markieren Sie das Kontrollkästchen des **`update-windows`**-Suchergebnisses. Diese Komponente schließt die neuesten Windows-Patches für das Betriebssystem ein.

1. Füllen Sie die verbleibenden Image-Rezepteingaben mit Ihren erforderlichen Konfigurationen aus. Weitere Informationen finden Sie unter [Erstellen einer neuen Version eines Image-Rezeptes (Konsole)](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-image-recipes.html#create-image-recipe-version-console) im Image-Builder-Benutzerhandbuch.

1. Wählen Sie **Create Recipe** (Rezept erstellen) aus.

1. Verwenden Sie das neue Image-Rezept in einer neuen oder vorhandenen Image-Pipeline. Sobald Ihre Image-Pipeline erfolgreich ausgeführt wurde, wird Ihr benutzerdefiniertes AMI als Ausgabe-Image aufgeführt und ist einsatzbereit. Weitere Informationen finden Sie unter [Erstellen einer Image-Pipeline mit dem EC2 Image Builder Builder-Konsolenassistenten](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html).

## Verwendung der von Amazon verwalteten Entwicklungskomponente
<a name="custom-windows-ami-build-component"></a>

Wenn die Verwendung eines für Amazon EKS optimierten Windows-AMI als Grundlage nicht praktikabel ist, können Sie stattdessen die von Amazon verwaltete Entwicklungskomponente verwenden. Diese Option kann hinter den aktuellsten unterstützten Kubernetes-Versionen zurückbleiben.

1. Starten Sie ein neues Image-Builder-Rezept.

   1. Öffnen Sie die EC2 Image Builder Builder-Konsole unter https://console.aws.amazon.com /imagebuilder.

   1. Wählen Sie im linken Navigationsbereich **Image recipes** (Image-Rezepte) aus.

   1. Wählen Sie **Create image recipe** (Image-Rezept erstellen) aus.

1. Geben Sie im Abschnitt **Recipe details** (Rezeptdetails) einen **Namen** und eine **Version** ein.

1. Legen Sie im Abschnitt **Base image** (Basis-Image) fest, welche Option Sie verwenden werden, um Ihr benutzerdefiniertes AMI zu erstellen:
   +  **Select managed images** (Verwaltete Images auswählen) – Wählen Sie **Windows** als Ihr **Image Operating System (OS)** (Image-Betriebssystem (OS)) aus. Wählen Sie dann eine der folgenden Optionen für **Image origin** (Image-Ursprung) aus:
     +  **Schnellstart (von Amazon verwaltet)** – Wählen Sie in der Dropdown-Liste für den **Image-Namen** eine von Amazon EKS unterstützte Windows-Server-Version aus. Weitere Informationen finden Sie unter [Knoten mit optimiertem Windows erstellen AMIs](eks-optimized-windows-ami.md).
     +  **Images owned by me** (Bilder in meinem Besitz) – Wählen Sie für **Image-Name** den ARN Ihres eigenen Image mit Ihrer eigenen Lizenz aus. Auf dem von Ihnen bereitgestellten Image können Amazon-EKS-Komponenten nicht bereits installiert sein.
   +  **Enter custom AMI ID** (Benutzerdefinierte AMI-ID eingeben) – Geben Sie für AMI-ID die ID für Ihr AMI mit Ihrer eigenen Lizenz ein. Auf dem von Ihnen bereitgestellten Image können Amazon-EKS-Komponenten nicht bereits installiert sein.

1. Gehen Sie im Abschnitt **Build components – Windows** (Komponenten erstellen – Windows) wie folgt vor:

   1. Wählen Sie in der Dropdownliste rechts neben dem Suchfeld **Find components by name** (Komponenten nach Namen suchen) **Amazon-managed** (Von Amazon verwaltet) aus.

   1. Geben Sie im Suchfeld **Find components by name** (Komponenten nach Namen suchen) `eks` ein.

   1. Markieren Sie das Kästchen des Suchergebnisses **`eks-optimized-ami-windows`**, auch wenn das zurückgegebene Ergebnis möglicherweise nicht die gewünschte Version ist.

   1. Geben Sie im Suchfeld **Find components by name** (Komponenten nach Namen suchen) `update-windows` ein.

   1. Markieren Sie das Kontrollkästchen des Suchergebnisses **update-windows**. Diese Komponente schließt die neuesten Windows-Patches für das Betriebssystem ein.

1. Gehen Sie im Abschnitt **Selected components** (Ausgewählte Komponenten) wie folgt vor:

   1. Wählen Sie **Optionen zur Versionsverwaltung** für **`eks-optimized-ami-windows`** aus.

   1. Wählen Sie **Specify component versio ** (Komponentenversion angeben) aus.

   1. Geben Sie im Feld **Komponentenversion Folgendes** ein: Ersetzen durch eine *version.x* unterstützte *version* Kubernetes-Version. Wenn Sie *x* für einen Teil der Versionsnummer eingeben, wird die neueste Komponentenversion verwendet, die auch mit dem Teil der Version übereinstimmt, den Sie explizit definieren. Achten Sie auf die Konsolenausgabe, da sie Sie darüber informiert, ob Ihre gewünschte Version als verwaltete Komponente verfügbar ist. Beachten Sie, dass die neuesten Kubernetes-Versionen möglicherweise nicht für die Entwicklungskomponente verfügbar sind. Weitere Informationen zu den verfügbaren Versionen finden Sie unter [Abrufen von Informationen zu `eks-optimized-ami-windows`-Komponentenversionen](#custom-windows-ami-component-versions).

1. Füllen Sie die verbleibenden Image-Rezepteingaben mit Ihren erforderlichen Konfigurationen aus. Weitere Informationen finden Sie unter [Erstellen einer neuen Version eines Image-Rezeptes (Konsole)](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-image-recipes.html#create-image-recipe-version-console) im Image-Builder-Benutzerhandbuch.

1. Wählen Sie **Create Recipe** (Rezept erstellen) aus.

1. Verwenden Sie das neue Image-Rezept in einer neuen oder vorhandenen Image-Pipeline. Sobald Ihre Image-Pipeline erfolgreich ausgeführt wurde, wird Ihr benutzerdefiniertes AMI als Ausgabe-Image aufgeführt und ist einsatzbereit. Weitere Informationen finden Sie unter [Erstellen einer Image-Pipeline mit dem EC2 Image Builder Builder-Konsolenassistenten](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html).

## Abrufen von Informationen zu `eks-optimized-ami-windows`-Komponentenversionen
<a name="custom-windows-ami-component-versions"></a>

Sie können spezifische Informationen darüber abrufen, was mit den einzelnen Komponenten installiert ist. Sie können beispielsweise überprüfen, welche `kubelet`-Version installiert ist. Die Komponenten durchlaufen Funktionstests auf den von Amazon EKS unterstützten Windows-Betriebssystemversionen. Weitere Informationen finden Sie unter [Veröffentlichungskalender](eks-optimized-windows-ami.md#windows-ami-release-calendar). Alle anderen Windows-Betriebssystemversionen, die nicht aufgelistet sind oder deren Support eingestellt wird, sind möglicherweise nicht mit der Komponente kompatibel.

1. Öffnen Sie die EC2 Image Builder Builder-Konsole unter https://console.aws.amazon.com /imagebuilder.

1. Wählen Sie im linken Navigationsbereich **Components** (Komponenten) aus.

1. Ändern Sie in der Dropdownliste rechts neben dem Suchfeld **Find components by name** (Komponenten nach Namen suchen) **Owned by me** (In meinem Besitz) zu **Quick start (Amazon-managed)** (Schnellstart (Von Amazon verwaltet)).

1. Geben Sie im Feld **Komponenten nach Name suchen** `eks` ein.

1. (Optional) Wenn Sie eine aktuelle Version verwenden, sortieren Sie die Spalte **Version** in absteigender Reihenfolge, indem Sie sie zweimal auswählen.

1. Wählen Sie den Link ** `eks-optimized-ami-windows` ** mit der gewünschten Version aus.

Unter **Description** (Beschreibung) auf der resultierenden Seite werden die spezifischen Informationen angezeigt.

# Erkennen Sie Probleme mit dem Knotenstatus und aktivieren Sie die automatische Knotenreparatur
<a name="node-health"></a>

Der Knotenstatus bezieht sich auf den Betriebsstatus und die Fähigkeit eines Kubernetes-Knotens, Workloads effektiv auszuführen. Ein fehlerfreier Knoten hält die erwartete Netzwerkkonnektivität aufrecht, verfügt über ausreichende Rechen- und Speicherressourcen und kann Workloads ohne Unterbrechung erfolgreich ausführen.

Um bei der Aufrechterhaltung fehlerfreier Knoten in EKS-Clustern zu helfen, bietet EKS den *Knotenüberwachungsagenten* und die *automatische Knotenreparatur*. Diese Funktionen werden bei EKS Auto Mode Compute automatisch aktiviert. Sie können die automatische Knotenreparatur auch mit von EKS verwalteten Knotengruppen und Karpenter verwenden und den EKS-Knotenüberwachungsagenten mit allen EKS-Compute-Typen außer Fargate verwenden. AWS Der EKS-Knotenüberwachungsagent und die automatische Knotenreparatur sind am effektivsten, wenn sie zusammen verwendet werden. Sie können jedoch auch einzeln in EKS-Clustern verwendet werden.

**Wichtig**  
Der *Knoten-Überwachungsagente* und die *Knotenreparatur* sind nur in Linux verfügbar. Diese Features sind unter Windows nicht verfügbar.

## Knotenüberwachungsagent
<a name="node-monitoring-agent"></a>

Der EKS-Knotenüberwachungsagent liest Knotenprotokolle, um Gesundheitsprobleme zu erkennen. Er analysiert Protokolle, um Fehler zu erkennen, und zeigt Statusinformationen über den Gesundheitszustand der Knoten an. Für jede Kategorie erkannter Probleme wendet der Agent eine für die Worker-Knoten spezifische Methode `NodeCondition` an. Ausführliche Informationen zu den vom EKS-Knotenüberwachungsagenten festgestellten Problemen mit dem Knotenstatus finden Sie unter[Erkennen Sie Probleme mit dem Knotenüberwachungsagenten von EKS](node-health-nma.md).

EKS Auto Mode Compute beinhaltet den Node Monitoring Agent. Für andere EKS-Berechnungstypen können Sie den Node Monitoring Agent als EKS-Add-on hinzufügen oder ihn mit Kubernetes-Tools wie Helm verwalten. Weitere Informationen finden Sie unter [Konfigurieren Sie den Node Monitoring Agent](node-health-nma.md#node-monitoring-agent-configure).

Mit dem EKS-Node-Monitoring-Agenten werden die folgenden Kategorien von Problemen mit dem Knotenstatus als Knotenbedingungen angezeigt. Beachten Sie, `Ready``DiskPressure`, und `MemoryPressure` sind Standardbedingungen für Kubernetes-Knoten, die auch ohne den EKS-Knotenüberwachungsagenten angezeigt werden.


| Zustand des Knotens | Description | 
| --- | --- | 
|  AcceleratedHardwareReady  |  AcceleratedHardwareReady gibt an, ob die beschleunigte Hardware (GPU, Neuron) auf dem Knoten ordnungsgemäß funktioniert.  | 
|  ContainerRuntimeReady  |  ContainerRuntimeReady gibt an, ob die Container-Laufzeit (containerd usw.) korrekt funktioniert und Container ausführen kann.  | 
|  DiskPressure  |  DiskPressure ist eine Standardbedingung für Kubernetes, die darauf hinweist, dass der Knoten unter Druck steht (geringer Festplattenspeicher oder hoher I/O).  | 
|  KernelReady  |  KernelReady gibt an, ob der Kernel ohne kritische Fehler, Panik oder Ressourcenerschöpfung ordnungsgemäß funktioniert.  | 
|  MemoryPressure  |  MemoryPressure ist eine Standardbedingung für Kubernetes, die darauf hinweist, dass der Knoten unter Speicherdruck steht (zu wenig verfügbarer Speicher).  | 
|  NetworkingReady  |  NetworkingReady gibt an, ob der Netzwerkstapel des Knotens ordnungsgemäß funktioniert (Schnittstellen, Routing, Konnektivität).  | 
|  StorageReady  |  StorageReady gibt an, ob das Speichersubsystem des Knotens ordnungsgemäß funktioniert (Festplatten, Dateisysteme, I/O).  | 
|  Bereit  |  Bereit ist die Standardbedingung für Kubernetes, die angibt, dass der Knoten fehlerfrei und bereit ist, Pods anzunehmen.  | 

## Automatische Knotenreparatur
<a name="node-auto-repair"></a>

Die automatische Knotenreparatur von EKS überwacht kontinuierlich den Zustand der Knoten, reagiert auf erkannte Probleme und ersetzt Knoten oder startet sie neu, wenn möglich. Dies verbessert die Zuverlässigkeit des Clusters bei minimalem manuellem Eingriff und trägt dazu bei, die Ausfallzeiten von Anwendungen zu reduzieren.

Die automatische EKS-Knotenreparatur reagiert von selbst auf die `Ready` Bedingungen im Kubelet, auf alle manuell gelöschten Knotenobjekte und auf von EKS verwaltete Knotengruppeninstanzen, die dem Cluster nicht beitreten können. Wenn die automatische EKS-Knotenreparatur aktiviert ist und der Node Monitoring Agent installiert ist, reagiert die automatische Knotenreparatur von EKS auf zusätzliche Knotenbedingungen:`AcceleratedHardwareReady`,`ContainerRuntimeReady`, `KernelReady``NetworkingReady`, und. `StorageReady`

Die automatische EKS-Knotenreparatur reagiert nicht auf standardmäßige Kubernetes `DiskPressure` - `MemoryPressure` oder `PIDPressure` Knotenbedingungen. Diese Bedingungen deuten häufig eher auf Probleme mit dem Anwendungsverhalten, der Workload-Konfiguration oder Ressourcenbeschränkungen als auf Ausfälle auf Knotenebene hin, was es schwierig macht, eine geeignete Standardreparaturaktion zu ermitteln. [In diesen Szenarien unterliegen Workloads dem Verhalten von Kubernetes-Knotenüberlastung.](https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction)

Weitere Informationen zur automatischen Knotenreparatur von EKS finden Sie unter. [Automatisches Reparieren von Knoten in EKS-Clustern](node-repair.md)

**Topics**

# Erkennen Sie Probleme mit dem Knotenüberwachungsagenten von EKS
<a name="node-health-nma"></a>

In diesem Thema werden die vom EKS-Node-Monitoring-Agenten erkannten Knotenzustandsprobleme beschrieben, wie diese Probleme als Knotenbedingungen oder -ereignisse zum Vorschein kommen und wie der Node Monitoring Agent konfiguriert wird.

Der EKS-Knotenüberwachungsagent kann mit oder ohne automatische EKS-Knotenreparatur verwendet werden. Weitere Informationen zur automatischen EKS-Knotenreparatur finden Sie unter[Automatisches Reparieren von Knoten in EKS-Clustern](node-repair.md).

Der Quellcode für den EKS-Node-Monitoring-Agenten ist am GitHub im [eks-node-monitoring-agentaws/-Repository](https://github.com/aws/eks-node-monitoring-agent) veröffentlicht.

## Probleme mit dem Zustand des Knotens
<a name="node-health-issues"></a>

In den folgenden Tabellen werden Knotenintegritätsprobleme beschrieben, die vom Knoten-Überwachungsagenten erkannt werden können. Es gibt zwei Arten von Problemen:
+ Zustand – Ein schwerwiegendes Problem, das eine Behebungsmaßnahme wie den Austausch einer Instance oder einen Neustart erfordert. Wenn die automatische Reparatur aktiviert ist, führt Amazon EKS eine Reparaturmaßnahme durch, entweder einen Knotenaustausch oder einen Neustart. Weitere Informationen finden Sie unter [Knotenzustände](learn-status-conditions.md#status-node-conditions).
+ Ereignis – Ein vorübergehendes Problem oder eine suboptimale Knotenkonfiguration. Es erfolgt keine automatische Reparatur. Weitere Informationen finden Sie unter [Knotenereignisse](learn-status-conditions.md#status-node-events).

## AcceleratedHardware Probleme mit dem Zustand des Knotens
<a name="node-health-AcceleratedHardware"></a>

Der Überwachungszustand ist `AcceleratedHardwareReady` für Probleme in der folgenden Tabelle mit dem Schweregrad „Zustand“. Die Ereignisse und Bedingungen in der folgenden Tabelle beziehen sich auf Probleme mit dem Zustand von Knoten im Zusammenhang mit NVIDIA und Neuron.


| Name | Schweregrad | Description | Aktion reparieren | 
| --- | --- | --- | --- | 
|  DCGMDiagnosticFehlschlag  |  Bedingung  |  Ein Testfall aus der Test-Suite für die aktive DCGM-Diagnose ist fehlgeschlagen.  |  Keine  | 
|  DCGMError  |  Bedingung  |  Die Verbindung zum DCGM-Hostprozess wurde unterbrochen oder konnte nicht hergestellt werden.  |  Keine  | 
|  DCGMFieldFehler [Code]  |  Veranstaltung  |  DCGM hat anhand einer Feld-ID eine Verschlechterung der GPU festgestellt.  |  Keine  | 
|  DCGMHealthCode [Kode]  |  Veranstaltung  |  Ein DCGM-Gesundheitscheck schlug ohne schwerwiegenden Fehler fehl.  |  Keine  | 
|  DCGMHealthKode [Kodierung]  |  Bedingung  |  Ein DCGM-Gesundheitscheck ist auf fatale Weise fehlgeschlagen.  |  Keine  | 
|  Neuron DMAError  |  Bedingung  |  Bei einer DMA-Engine ist ein nicht behebbarer Fehler aufgetreten.  |  Ersetzen  | 
|  Neuronenfehler HBMUncorrectable  |  Bedingung  |  Bei einem HBM ist ein nicht korrigierbarer Fehler aufgetreten und es wurden falsche Ergebnisse ausgegeben.  |  Ersetzen  | 
|  Neuronenfehler NCUncorrectable  |  Bedingung  |  Ein nicht korrigierbarer Neuron Core-Speicherfehler wurde erkannt.  |  Ersetzen  | 
|  Neuronenfehler SRAMUncorrectable  |  Bedingung  |  Ein On-Chip-SRAM hat einen Paritätsfehler festgestellt und unkorrekte Ergebnisse erzeugt.  |  Ersetzen  | 
|  NvidiaDeviceCountMismatch  |  Veranstaltung  |  Die Anzahl der durch NVML GPUs sichtbaren Geräte stimmt nicht mit der Anzahl der NVIDIA-Geräte im Dateisystem überein.  |  Keine  | 
|  NvidiaDoubleBitError  |  Bedingung  |  Der GPU-Treiber hat einen doppelten Bit-Fehler erzeugt.  |  Ersetzen  | 
|  Nvidia NCCLError  |  Veranstaltung  |  In der NVIDIA-Bibliothek für kollektive Kommunikation (`libnccl`) ist ein Sicherheitsfehler aufgetreten.  |  Keine  | 
|  Nvidia-Fehler NVLink  |  Bedingung  |  NVLink Fehler wurden vom GPU-Treiber gemeldet.  |  Ersetzen  | 
|  PCIeNvidia-Fehler  |  Veranstaltung  |  PCIe Wiederholungen wurden ausgelöst, um Übertragungsfehler zu beheben.  |  Keine  | 
|  NvidiaPageRetirement  |  Veranstaltung  |  Der GPU-Treiber hat eine Speicherseite zur Außerbetriebnahme markiert. Dies kann auftreten, wenn ein einzelner Doppel-Bit-Fehler oder zwei Einzel-Bit-Fehler an derselben Adresse auftreten.  |  Keine  | 
|  NvidiaPowerError  |  Veranstaltung  |  Der Stromverbrauch von hat die zulässigen GPUs Grenzwerte überschritten.  |  Keine  | 
|  NvidiaThermalError  |  Veranstaltung  |  Thermischer Status hat die GPUs zulässigen Grenzwerte überschritten.  |  Keine  | 
|  NVIDIAxID [Code] -Fehler  |  Bedingung  |  Ein kritischer GPU-Fehler ist aufgetreten.  |  Ersetzen oder neu starten  | 
|  NvidiaXID[Code]Warning  |  Veranstaltung  |  Ein unkritischer GPU-Fehler ist aufgetreten.  |  Keine  | 

## NVIDIA XID-Fehlercodes
<a name="nvidia-xid-codes"></a>

Der Node Monitoring Agent erkennt NVIDIA XID-Fehler anhand von GPU-Kernelprotokollen. XID-Fehler lassen sich in zwei Kategorien einteilen:
+  **Bekannte XID-Codes** — Kritische Fehler, die eine Knotenbedingung (`AcceleratedHardwareReady=False`) festlegen und bei Aktivierung eine auto Reparatur auslösen. Das Format des Ursachencodes lautet`NvidiaXID[Code]Error`. Die bekannten XID-Codes, die der EKS-Knotenüberwachungsagent erkennt, stellen möglicherweise nicht die vollständige Liste der NVIDIA-XID-Codes dar, für die Reparaturmaßnahmen erforderlich sind.
+  **Unbekannte XID-Codes** — Nur als Kubernetes-Ereignisse protokolliert. Diese lösen keine Autoreparatur aus. Das Format des Ursachencodes ist`NvidiaXID[Code]Warning`. Um unbekannte XID-Fehler zu untersuchen, überprüfen Sie Ihre Kernelprotokolle mit`dmesg | grep -i nvrm`.

Weitere Informationen zu XID-Fehlern finden Sie unter [XID-Fehler](https://docs.nvidia.com/deploy/xid-errors/index.html#topic_5_1) in der *Dokumentation zur Bereitstellung und Verwaltung von NVIDIA-GPUs*. Weitere Informationen zu den einzelnen XID-Meldungen finden Sie unter [XID-Meldungen verstehen](https://docs.nvidia.com/deploy/gpu-debug-guidelines/index.html#understanding-xid-messages) in der *Dokumentation zur Bereitstellung und Verwaltung von NVIDIA-GPUs*.

In der folgenden Tabelle sind die bekannten XID-Codes, ihre Bedeutung und die Standardaktion zur Knotenreparatur, falls diese aktiviert ist, aufgeführt.


| XID-Code | Description | Aktion reparieren | 
| --- | --- | --- | 
|  13  |  Grafik-Engine-Ausnahme — Ein GPU-Grafik-Engine-Fehler ist aufgetreten, der in der Regel durch Software- oder Treiberfehler verursacht wird.  |  Starten Sie neu  | 
|  31  |  Fehler bei der GPU-Speicherseite — Eine Anwendung hat versucht, auf GPU-Speicher zuzugreifen, der weder zugeordnet noch zugänglich ist.  |  Starten Sie neu  | 
|  48  |  Double-Bit-ECC-Fehler — Im GPU-Speicher ist ein nicht behebbarer Doppelbitfehler aufgetreten, der auf eine mögliche Hardwareverschlechterung hindeutet.  |  Starten Sie neu  | 
|  63  |  Ereignis zur Neuzuweisung des GPU-Speichers — Der GPU-Treiber hat aufgrund festgestellter Fehler einen Teil des GPU-Speichers neu zugeordnet. Dies ist oft wiederherstellbar.  |  Starten Sie neu  | 
|  64  |  Fehler bei der Neuzuweisung des GPU-Speichers — Die GPU konnte defekten Speicher nicht neu zuordnen, was auf Hardwareprobleme hindeutet.  |  Starten Sie neu  | 
|  74  |  NVLink Fehler — Bei der NVLink Hochgeschwindigkeitsverbindung zwischen GPUs ist ein Fehler aufgetreten.  |  Ersetzen  | 
|  79  |  GPU ist vom Bus gefallen — Auf die GPU kann nicht mehr zugegriffen werden PCIe, was in der Regel auf einen Hardware- oder Stromausfall hindeutet.  |  Ersetzen  | 
|  94  |  Fehler im eingeschlossenen Speicher — Es ist ein Speicherfehler aufgetreten, der jedoch eingedämmt wurde und sich nicht auf andere Anwendungen auswirkte.  |  Starten Sie neu  | 
|  95  |  Fehler bei fehlendem Speicher — Es ist ein Speicherfehler aufgetreten, der sich möglicherweise auf andere Anwendungen oder den Systemspeicher ausgewirkt hat.  |  Starten Sie neu  | 
|  119  |  GSP RPC Timeout — Bei der Kommunikation mit dem GPU-Systemprozessor wurde das Zeitlimit überschritten, möglicherweise aufgrund von Firmware-Problemen.  |  Ersetzen  | 
|  120  |  GSP-Fehler — Im GPU-Systemprozessor ist ein Fehler aufgetreten.  |  Ersetzen  | 
|  121  |  C2C-Fehler — Bei der chip-to-chip Verbindung (die bei Multi-Die verwendet wird) ist ein Fehler aufgetreten. GPUs  |  Ersetzen  | 
|  140  |  Nicht wiederhergestellter ECC-Fehler — Ein ECC-Fehler ist der Beschränkung entgangen und hat möglicherweise Daten beschädigt.  |  Ersetzen  | 

Führen Sie den folgenden Befehl aus, um die aktuellen Knotenbedingungen in Bezug auf den GPU-Zustand anzuzeigen.

```
kubectl get nodes -o custom-columns='NAME:.metadata.name,ACCELERATOR_READY:.status.conditions[?(@.type=="AcceleratedHardwareReady")].status,REASON:.status.conditions[?(@.type=="AcceleratedHardwareReady")].reason'
```

Führen Sie einen der folgenden Befehle aus, um XID-bezogene Ereignisse auf Ihrem Cluster anzuzeigen.

```
kubectl get events | grep -i "NvidiaXID"
```

## ContainerRuntime Probleme mit dem Zustand des Knotens
<a name="node-health-ContainerRuntime"></a>

Der Überwachungszustand ist `ContainerRuntimeReady` für Probleme in der folgenden Tabelle mit dem Schweregrad „Zustand“.


| Name | Schweregrad | Description | Aktion reparieren | 
| --- | --- | --- | --- | 
|  ContainerRuntimeFailed  |  Veranstaltung  |  Die Container-Laufzeit konnte keinen Container erstellen. Dies hängt wahrscheinlich mit einem der gemeldeten Probleme zusammen, wenn es wiederholt auftritt.  |  Keine  | 
|  DeprecatedContainerdConfiguration  |  Veranstaltung  |  Ein Container-Image, das die veraltete Image-Manifest-Version 2, Schema 1 verwendet, wurde kürzlich auf den Knoten übertragen. `containerd`  |  Keine  | 
|  KubeletFailed  |  Veranstaltung  |  Der kubelet ist in einen fehlerhaften Zustand übergegangen.  |  Keine  | 
|  LivenessProbeFailures  |  Veranstaltung  |  Es wurde ein Fehler bei der Aktivitätsprüfung erkannt, der bei wiederholtem Auftreten möglicherweise auf Probleme mit dem Anwendungscode oder unzureichende Timeout-Werte hinweist.  |  Keine  | 
|  PodStuckTerminating  |  Bedingung  |  Ein Pod ist oder war über einen längeren Zeitraum hinweg blockiert. Dies kann auf CRI-Fehler zurückzuführen sein, die den Fortschritt des Pod-Status verhindern.  |  Ersetzen  | 
|  ReadinessProbeFailures  |  Veranstaltung  |  Es wurde ein Fehler bei der Bereitschaftsprüfung erkannt, der bei wiederholtem Auftreten möglicherweise auf Probleme mit dem Anwendungscode oder unzureichende Timeout-Werte hinweist.  |  Keine  | 
|  [Name] RepeatedRestart  |  Veranstaltung  |  Eine Systemd-Einheit wird häufig neu gestartet.  |  Keine  | 
|  ServiceFailedToStart  |  Veranstaltung  |  Eine systemd-Einheit konnte nicht gestartet werden  |  Keine  | 

## Integritätsprobleme des Kernelknotens
<a name="node-health-Kernel"></a>

Der Überwachungszustand ist `KernelReady` für Probleme in der folgenden Tabelle mit dem Schweregrad „Zustand“.


| Name | Schweregrad | Description | Aktion reparieren | 
| --- | --- | --- | --- | 
|  AppBlocked  |  Veranstaltung  |  Die Aufgabe wurde für einen längeren Zeitraum aus der Planung ausgeschlossen, was in der Regel darauf zurückzuführen ist, dass sie bei der Eingabe oder Ausgabe blockiert wurde.  |  Keine  | 
|  AppCrash  |  Veranstaltung  |  Eine Anwendung auf dem Knoten ist abgestürzt.  |  Keine  | 
|  ApproachingKernelPidMax  |  Veranstaltung  |  Die Anzahl der Prozesse nähert sich der maximalen Anzahl PIDs , die gemäß der aktuellen `kernel.pid_max` Einstellung verfügbar sind. Danach können keine Prozesse mehr gestartet werden.  |  Keine  | 
|  ApproachingMaxOpenFiles  |  Veranstaltung  |  Die Anzahl der geöffneten Dateien nähert sich der maximalen Anzahl möglicher geöffneter Dateien gemäß den aktuellen Kernel-Einstellungen. Danach wird das Öffnen neuer Dateien fehlschlagen  |  Keine  | 
|  ConntrackExceededKernel  |  Veranstaltung  |  Die Verbindungsverfolgung hat das Maximum für den Kernel überschritten, und es konnten keine neuen Verbindungen hergestellt werden, was zu Paketverlusten führen kann.  |  Keine  | 
|  ExcessiveZombieProcesses  |  Veranstaltung  |  Es sammeln sich zahlreiche Prozesse, die nicht vollständig wiederhergestellt werden können. Dies weist auf Anwendungsprobleme hin und kann dazu führen, dass die Grenzen der Systemprozesse erreicht werden.  |  Keine  | 
|  ForkFailedOutOfPIDs  |  Bedingung  |  Ein Fork- oder Exec-Aufruf ist fehlgeschlagen, weil das System keinen Prozess IDs - oder Speicherzugriff mehr hatte. Dies kann durch Zombie-Prozesse oder physische Speichererschöpfung verursacht werden.  |  Ersetzen  | 
|  KernelBug  |  Veranstaltung  |  Ein Kernel-Fehler wurde vom Linux-Kernel selbst erkannt und gemeldet. Dieser kann jedoch manchmal durch Knoten mit hoher CPU- oder Speicherauslastung verursacht werden, was zu einer verzögerten Ereignisverarbeitung führt.  |  Keine  | 
|  LargeEnvironment  |  Veranstaltung  |  Die Anzahl der Umgebungsvariablen für diesen Prozess ist größer als erwartet, was möglicherweise auf viele Dienste zurückzuführen ist, deren Wert auf true `enableServiceLinks` gesetzt ist, was zu Leistungsproblemen führen kann.  |  Keine  | 
|  RapidCron  |  Veranstaltung  |  Ein Cron-Auftrag wird auf diesem Knoten schneller als alle fünf Minuten ausgeführt. Dies kann die Leistung beeinträchtigen, wenn der Auftrag erhebliche Ressourcen verbraucht.  |  Keine  | 
|  SoftLockup  |  Veranstaltung  |  Die CPU ist für eine bestimmte Zeit blockiert.  |  Keine  | 

## Probleme mit der Integrität von Netzwerkknoten
<a name="node-health-Networking"></a>

Der Überwachungszustand ist `NetworkingReady` für Probleme in der folgenden Tabelle mit dem Schweregrad „Zustand“.


| Name | Schweregrad | Description | Aktion reparieren | 
| --- | --- | --- | --- | 
|  BandwidthInExceeded  |  Veranstaltung  |  Pakete wurden in die Warteschlange gestellt oder verworfen, da die eingehende Gesamtbandbreite das Maximum für die Instance überschritten hat.  |  Keine  | 
|  BandwidthOutExceeded  |  Veranstaltung  |  Pakete wurden in die Warteschlange gestellt oder verworfen, da die ausgehende Gesamtbandbreite das Maximum für die Instance überschritten hat.  |  Keine  | 
|  ConntrackExceeded  |  Veranstaltung  |  Die Verbindungsverfolgung hat das Maximum für die Instance überschritten und es konnten keine neuen Verbindungen hergestellt werden, was zu Paketverlusten führen kann.  |  Keine  | 
|  EFAErrorMetrik  |  Veranstaltung  |  Die EFA-Treiberkennzahlen zeigen, dass es eine Schnittstelle mit Leistungseinbußen gibt.  |  Keine  | 
|  IPAMDInconsistentStatus  |  Veranstaltung  |  Der Status des IPAMD-Checkpoints auf der Festplatte spiegelt nicht die Laufzeit IPs in der Container-Laufzeit wider.  |  Keine  | 
|  IPAMDNoIPs  |  Veranstaltung  |  IPAMD hat keine IP-Adressen mehr.  |  Keine  | 
|  IPAMDNotBereit  |  Bedingung  |  IPAMD kann keine Verbindung zum API-Server herstellen.  |  Ersetzen  | 
|  IPAMDNotLäuft  |  Bedingung  |  Es wurde festgestellt, dass der Amazon VPC CNI-Prozess nicht läuft.  |  Ersetzen  | 
|  IPAMDRepeatedlyStarten Sie neu  |  Veranstaltung  |  Es sind mehrere Neustarts des IPAMD-Services aufgetreten.  |  Keine  | 
|  InterfaceNotRunning  |  Bedingung  |  Diese Schnittstelle scheint nicht zu funktionieren oder es liegen Netzwerkprobleme vor.  |  Ersetzen  | 
|  InterfaceNotUp  |  Bedingung  |  Diese Schnittstelle scheint derzeit nicht verfügbar zu sein oder es liegen Netzwerkprobleme vor.  |  Ersetzen  | 
|  KubeProxyNotReady  |  Veranstaltung  |  Kube-proxy konnte die Ressourcen nicht überwachen oder auflisten.  |  Keine  | 
|  LinkLocalExceeded  |  Veranstaltung  |  Pakete wurden verworfen, da die PPS des Datenverkehrs zu lokalen Proxy- Services das Maximum der Netzwerkschnittstelle überschritten hat.  |  Keine  | 
|  MACAddressPolicyMisconfigured  |  Veranstaltung  |  Die Verbindungskonfiguration systemd-networkd hat den falschen Wert. `MACAddressPolicy`  |  Keine  | 
|  MissingDefaultRoutes  |  Veranstaltung  |  Es fehlen Standard- Weiterleitungsregeln.  |  Keine  | 
|  Fehlt IPRoutes  |  Veranstaltung  |  Es fehlen Routen für Pod IPs.  |  Keine  | 
|  Es fehlt IPRules  |  Veranstaltung  |  Es fehlen Regeln für Pod IPs.  |  Keine  | 
|  MissingLoopbackInterface  |  Bedingung  |  Die Loopback-Schnittstelle fehlt in dieser Instance, was zu einem Ausfall von Services führt, die von der lokalen Konnektivität abhängig sind.  |  Ersetzen  | 
|  NetworkSysctl  |  Veranstaltung  |  Die `sysctl` Netzwerkeinstellungen dieses Knotens sind möglicherweise falsch.  |  Keine  | 
|  PPSExceeded  |  Veranstaltung  |  Pakete wurden in die Warteschlange gestellt oder verworfen, da die bidirektionale PPS das Maximum für die Instance überschritten hat.  |  Keine  | 
|  PortConflict  |  Veranstaltung  |  Wenn ein Pod HostPort verwendet, kann er `iptables` Regeln schreiben, die die bereits gebundenen Ports des Hosts außer Kraft setzen und so möglicherweise den API-Serverzugriff `kubelet` verhindern.  |  Keine  | 
|  UnexpectedRejectRule  |  Veranstaltung  |  Im wurde eine unerwartete `REJECT` `DROP` Oder-Regel gefunden`iptables`, die möglicherweise den erwarteten Datenverkehr blockiert.  |  Keine  | 

## Probleme mit der Integrität von Speicherknoten
<a name="node-health-Storage"></a>

Der Überwachungszustand ist `StorageReady` für Probleme in der folgenden Tabelle mit dem Schweregrad „Zustand“.


| Name | Schweregrad | Description | Aktion reparieren | 
| --- | --- | --- | --- | 
|  EBSInstanceIOPSExceeded  |  Veranstaltung  |  Die maximale Anzahl an IOPS für die Instanz wurde überschritten.  |  Keine  | 
|  EBSInstanceThroughputExceeded  |  Veranstaltung  |  Der maximale Durchsatz für die Instanz wurde überschritten.  |  Keine  | 
|  EBSVolumeIOPSExceeded  |  Veranstaltung  |  Die maximale Anzahl an IOPS für ein bestimmtes EBS-Volume wurde überschritten.  |  Keine  | 
|  EBSVolumeThroughputExceeded  |  Veranstaltung  |  Der maximale Durchsatz für ein bestimmtes Amazon EBS-Volume wurde überschritten.  |  Keine  | 
|  EtcHostsMountFailed  |  Veranstaltung  |  Das Mounten des generierten Kubelets ist `/etc/hosts` fehlgeschlagen, da die Benutzerdaten während des Betriebs erneut bereitgestellt wurden. `/var/lib/kubelet/pods` `kubelet-container`  |  Keine  | 
|  IODelays  |  Veranstaltung  |  In einem Prozess wurde eine Eingabe- oder Ausgabeverzögerung festgestellt, die bei übermäßiger Dauer auf eine unzureichende Eingabe-Ausgabe-Bereitstellung hindeuten könnte.  |  Keine  | 
|  KubeletDiskUsageSlow  |  Veranstaltung  |  Der meldet `kubelet` eine langsame Festplattennutzung beim Versuch, auf das Dateisystem zuzugreifen. Dies deutet möglicherweise auf eine unzureichende Eingabe- und Ausgabekapazität der Festplatte oder auf Probleme mit dem Dateisystem hin.  |  Keine  | 
|  XFSSmallAverageClusterSize  |  Veranstaltung  |  Die durchschnittliche XFS-Clustergröße ist klein, was auf eine übermäßige Fragmentierung des freien Speicherplatzes hindeutet. Dies kann die Erstellung von Dateien trotz verfügbarer Inodes oder freiem Speicherplatz verhindern.  |  Keine  | 

## Konfigurieren Sie den Node Monitoring Agent
<a name="node-monitoring-agent-configure"></a>

Der EKS-Knotenüberwachungsagent wird als bereitgestellt DaemonSet. Wenn Sie ihn als EKS-Add-On bereitstellen, können Sie die Installation mit den folgenden Konfigurationswerten anpassen. Standardkonfigurationen finden Sie in der [Helm-Tabelle](https://github.com/aws/eks-node-monitoring-agent/blob/main/charts/eks-node-monitoring-agent/values.yaml) des EKS-Knotenüberwachungs-Agenten.


| Konfigurationsoption | Description | 
| --- | --- | 
|   `monitoringAgent.resources.requests.cpu`   |  CPU-Ressourcenanforderung für den Monitoring-Agenten.  | 
|   `monitoringAgent.resources.requests.memory`   |  Speicherressourcenanforderung für den Monitoring-Agenten.  | 
|   `monitoringAgent.resources.limits.cpu`   |  CPU-Ressourcenlimit für den Monitoring-Agenten.  | 
|   `monitoringAgent.resources.limits.memory`   |  Speicherressourcenlimit für den Monitoring-Agenten.  | 
|   `monitoringAgent.tolerations`   |  Toleranzen bei der Planung des Monitoring-Agenten auf fehlerhaften Knoten.  | 
|   `monitoringAgent.additionalArgs`   |  Zusätzliche Befehlszeilenargumente, die an den Monitoring-Agenten übergeben werden sollen.  | 

**Anmerkung**  
Sie können `verbosity` wie `monitoringAgent.additionalArgs` bei der EKS-Add-Ons oder der Helm-Installation konfigurieren`hostname-override`. Derzeit können Sie die Einstellungen `probe-address` (`8002`) oder `metrics-address` (`8003`) des Node Monitoring Agents nicht über zusätzliche Argumente mit EKS-Add-Ons oder der Helm-Installation anpassen.

Der Node Monitoring Agent umfasst eine NVIDIA DCGM (Data Center GPU Manager) -Serverkomponente (`nv-hostengine`) zur Überwachung von NVIDIA. GPUs Diese Komponente wird nur auf Knoten ausgeführt, bei denen es sich um NVIDIA-GPU-Instanztypen handelt, wie `nodeAffinity` im [Helm-Diagramm](https://github.com/aws/eks-node-monitoring-agent/blob/main/charts/eks-node-monitoring-agent/values.yaml) des Agenten dargestellt. Sie können eine bestehende NVIDIA DCGM-Installation nicht mit dem EKS-Node-Monitoring-Agenten verwenden. Bitte geben Sie Feedback zum [GitHub EKS-Roadmap-Problem \$12763](https://github.com/aws/containers-roadmap/issues/2763), wenn Sie diese Funktionalität benötigen.

Wenn Sie den EKS-Node-Monitoring-Agenten als EKS-Add-On bereitstellen, können Sie die NVIDIA DCGM-Installation mit den folgenden Konfigurationswerten anpassen.


| Konfigurationsoption | Description | 
| --- | --- | 
|   `dcgmAgent.resources.requests.cpu`   |  CPU-Ressourcenanforderung für den DCGM-Agenten.  | 
|   `dcgmAgent.resources.requests.memory`   |  Speicherressourcenanforderung für den DCGM-Agenten.  | 
|   `dcgmAgent.resources.limits.cpu`   |  CPU-Ressourcenlimit für den DCGM-Agenten.  | 
|   `dcgmAgent.resources.limits.memory`   |  Speicherressourcenlimit für den DCGM-Agenten.  | 
|   `dcgmAgent.tolerations`   |  Toleranzen bei der Planung des DCGM-Agenten auf fehlerhaften Knoten.  | 

Sie können die folgenden AWS CLI-Befehle verwenden, um nützliche Informationen zu den Versionen und dem Schema für das EKS-Add-On für den EKS-Knotenüberwachungsagenten zu erhalten.

Holen Sie sich die neueste Agent-Add-On-Version für Ihre Kubernetes-Version. Ersetzen Sie sie `1.35` durch Ihre Kubernetes-Version.

```
aws eks describe-addon-versions \
  --addon-name eks-node-monitoring-agent \
  --kubernetes-version 1.35 \
  --query='addons[].addonVersions[].addonVersion'
```

Holen Sie sich das Agent-Add-On-Schema, das in EKS-Add-ons unterstützt wird. `v1.5.1-eksbuild.1`Ersetzen Sie es durch Ihre Agentenversion.

```
aws eks describe-addon-configuration \
  --addon-name eks-node-monitoring-agent \
  --addon-version v1.5.1-eksbuild.1
```

# Automatisches Reparieren von Knoten in EKS-Clustern
<a name="node-repair"></a>

In diesem Thema wird das Verhalten der automatischen EKS-Knotenreparatur und die Konfiguration gemäß Ihren Anforderungen beschrieben. Die automatische EKS-Knotenreparatur ist im automatischen EKS-Modus standardmäßig aktiviert und kann mit von EKS verwalteten Knotengruppen und Karpenter verwendet werden.

Die standardmäßigen automatischen EKS-Knotenreparaturaktionen sind in der folgenden Tabelle zusammengefasst und gelten für das Verhalten im automatischen EKS-Modus, bei EKS-verwalteten Knotengruppen und bei Karpenter. Bei Verwendung von EKS Auto Mode oder Karpenter werden alle `AcceleratedHardwareReady` Reparaturaktionen `Reboot` als Reparaturaktion unterstützt`Replace`, und nur von EKS verwaltete Knotengruppen werden unterstützt.

Eine ausführliche Liste der vom EKS-Knotenüberwachungsagenten erkannten Knotenzustandsprobleme und der entsprechenden Reparaturaktionen für Knoten finden Sie unter. [Erkennen Sie Probleme mit dem Knotenüberwachungsagenten von EKS](node-health-nma.md)


| Zustand des Knotens | Description | Danach reparieren | Aktion (en) reparieren | 
| --- | --- | --- | --- | 
|  AcceleratedHardwareReady  |  AcceleratedHardwareReady gibt an, ob die beschleunigte Hardware (GPU, Neuron) auf dem Knoten ordnungsgemäß funktioniert.  |  10m  |  Ersetzen oder neu starten  | 
|  ContainerRuntimeReady  |  ContainerRuntimeReady gibt an, ob die Container-Laufzeit (containerd usw.) korrekt funktioniert und Container ausführen kann.  |  30m  |  Ersetzen  | 
|  DiskPressure  |  DiskPressure ist eine Standardbedingung für Kubernetes, die darauf hinweist, dass der Knoten unter Druck steht (geringer Festplattenspeicher oder hoher I/O).  |  –  |  Keine  | 
|  KernelReady  |  KernelReady gibt an, ob der Kernel ohne kritische Fehler, Panik oder Ressourcenerschöpfung ordnungsgemäß funktioniert.  |  30m  |  Ersetzen  | 
|  MemoryPressure  |  MemoryPressure ist eine Standardbedingung für Kubernetes, die darauf hinweist, dass der Knoten unter Speicherdruck steht (zu wenig verfügbarer Speicher).  |  –  |  Keine  | 
|  NetworkingReady  |  NetworkingReady gibt an, ob der Netzwerkstapel des Knotens ordnungsgemäß funktioniert (Schnittstellen, Routing, Konnektivität).  |  30m  |  Ersetzen  | 
|  StorageReady  |  StorageReady gibt an, ob das Speichersubsystem des Knotens ordnungsgemäß funktioniert (Festplatten, Dateisysteme, I/O).  |  30m  |  Ersetzen  | 
|  Bereit  |  Bereit ist die Standardbedingung für Kubernetes, die angibt, dass der Knoten fehlerfrei und bereit ist, Pods anzunehmen.  |  30m  |  Ersetzen  | 

Die automatischen EKS-Node-Reparaturaktionen sind in den folgenden Szenarien standardmäßig deaktiviert. In Bearbeitung befindliche Knotenreparaturaktionen werden in jedem Szenario fortgesetzt. Informationen [Konfigurieren Sie die automatische Knotenreparatur](#configure-node-repair) zum Überschreiben dieser Standardeinstellungen finden Sie unter.

 **Von EKS verwaltete Knotengruppen** 
+ Die Knotengruppe hat mehr als fünf Knoten und mehr als 20% der Knoten in der Knotengruppe sind fehlerhaft.
+ Eine Zonenverschiebung für Ihren Cluster wird durch den Application Recovery Controller (ARC) ausgelöst.

 **EKS-Automatikmodus und Karpenter** 
+ Mehr als 20% der Knoten in der NodePool sind fehlerhaft.
+ Im eigenständigen NodeClaims Modus sind 20% der Knoten im Cluster fehlerhaft.

## Konfigurieren Sie die automatische Knotenreparatur
<a name="configure-node-repair"></a>

Die automatische Knotenreparatur kann nicht konfiguriert werden, wenn der EKS-Automatikmodus verwendet wird, und sie ist immer mit den gleichen Standardeinstellungen wie Karpenter aktiviert.

### Karpenter
<a name="configure-node-repair-karpenter"></a>

Um die automatische Knotenreparatur mit Karpenter zu verwenden, aktivieren Sie das Feature Gate. `NodeRepair=true` Sie können die Feature-Gates über die `--feature-gates` CLI-Option oder die `FEATURE_GATES` Umgebungsvariable in der Karpenter-Bereitstellung aktivieren. Weitere Informationen finden Sie in der [Karpenter](https://karpenter.sh/docs/concepts/disruption/#node-auto-repair)-Dokumentation.

### Verwaltete Knotengruppen
<a name="configure-node-repair-mng"></a>

Sie können die automatische Knotenreparatur aktivieren, wenn Sie neue von EKS verwaltete Knotengruppen erstellen oder indem Sie bestehende von EKS verwaltete Knotengruppen aktualisieren.
+  **Amazon EKS-Konsole** — Wählen Sie das Kontrollkästchen **auto Knotenreparatur aktivieren** für die verwaltete Knotengruppe aus. Weitere Informationen finden Sie unter [Eine verwaltete Knotengruppe für Ihren Cluster erstellen](create-managed-node-group.md).
+  ** AWS CLI** — `--node-repair-config enabled=true` Zum [https://docs.aws.amazon.com/cli/latest/reference/eks/update-nodegroup-config.html](https://docs.aws.amazon.com/cli/latest/reference/eks/update-nodegroup-config.html)Befehl [https://docs.aws.amazon.com/cli/latest/reference/eks/create-nodegroup.html](https://docs.aws.amazon.com/cli/latest/reference/eks/create-nodegroup.html)oder hinzufügen.
+  **eksctl** [— Konfiguration`managedNodeGroups.nodeRepairConfig.enabled: true`, siehe das Beispiel in eksctl. GitHub](https://github.com/eksctl-io/eksctl/blob/main/examples/44-node-repair.yaml)

Wenn Sie von EKS verwaltete Knotengruppen verwenden, können Sie das Verhalten bei der auto Reparatur von Knoten mit den folgenden Einstellungen steuern.

Um zu steuern, wann die auto Knotenreparatur nicht mehr aktiv wird, legen Sie einen Schwellenwert fest, der auf der Anzahl der fehlerhaften Knoten in der Knotengruppe basiert. Legen Sie entweder die absolute Anzahl oder den Prozentsatz fest, aber nicht beide.


| Einstellung | Description | 
| --- | --- | 
|   `maxUnhealthyNodeThresholdCount`   |  Die absolute Anzahl fehlerhafter Knoten, bei deren Überschreitung die auto Knotenreparatur beendet wird. Verwenden Sie diese Option, um den Umfang der Reparaturen einzuschränken.  | 
|   `maxUnhealthyNodeThresholdPercentage`   |  Der Prozentsatz fehlerhafter Knoten, bei dessen Überschreitung die auto Knotenreparatur beendet wird (0-100).  | 

Um zu kontrollieren, wie viele Knoten gleichzeitig repariert werden, können Sie die Reparaturparallelität konfigurieren. Legen Sie wie beim Schwellenwert für fehlerhafte Knoten entweder die absolute Anzahl oder den Prozentsatz fest, aber nicht beides.


| Einstellung | Description | 
| --- | --- | 
|   `maxParallelNodesRepairedCount`   |  Die maximale Anzahl von Knoten, die gleichzeitig repariert werden sollen.  | 
|   `maxParallelNodesRepairedPercentage`   |  Der maximale Prozentsatz fehlerhafter Knoten, die gleichzeitig repariert werden müssen (0-100).  | 

Mit `nodeRepairConfigOverrides` können Sie das Reparaturverhalten an bestimmte Bedingungen anpassen. Verwenden Sie diese Option, wenn Sie unterschiedliche Reparaturaktionen oder Wartezeiten für verschiedene Problemtypen benötigen.

Für jede Überschreibung sind alle der folgenden Felder erforderlich:


| Feld | Description | 
| --- | --- | 
|   `nodeMonitoringCondition`   |  Der vom Node-Monitoring-Agent gemeldete Knotenbedingungstyp. Zum Beispiel:`AcceleratedHardwareReady`,`NetworkingReady`,`StorageReady`,`KernelReady`.  | 
|   `nodeUnhealthyReason`   |  Der spezifische Ursachencode für den ungesunden Zustand. Zum Beispiel: `NvidiaXID31Error`, `IPAMDNotRunning`.  | 
|   `minRepairWaitTimeMins`   |  Die Mindestdauer in Minuten, für die der Zustand bestehen muss, bevor der Knoten repariert werden kann. Verwenden Sie diese Option, um zu vermeiden, dass Knoten aufgrund vorübergehender Probleme repariert werden.  | 
|   `repairAction`   |  Die Aktion, die ergriffen werden muss, wenn die Bedingungen erfüllt sind. Gültige Werte: `Replace` (Knoten beenden und ersetzen), `Reboot` (Knoten neu starten) oder `NoAction` (keine Reparaturaktionen).  | 

Das folgende AWS CLI-Beispiel erstellt eine Knotengruppe mit benutzerdefinierten Reparatureinstellungen.

```
aws eks create-nodegroup \
  --cluster-name my-cluster \
  --nodegroup-name my-nodegroup \
  --node-role arn:aws:iam::111122223333:role/NodeRole \
  --subnets subnet-0123456789abcdef0 \
  --node-repair-config '{
    "enabled": true,
    "maxUnhealthyNodeThresholdPercentage": 10,
    "maxParallelNodesRepairedCount": 3,
    "nodeRepairConfigOverrides": [
      {
        "nodeMonitoringCondition": "AcceleratedHardwareReady",
        "nodeUnhealthyReason": "NvidiaXID64Error",
        "minRepairWaitTimeMins": 5,
        "repairAction": "Replace"
      },
      {
        "nodeMonitoringCondition": "AcceleratedHardwareReady",
        "nodeUnhealthyReason": "NvidiaXID31Error",
        "minRepairWaitTimeMins": 15,
        "repairAction": "NoAction"
      }
    ]
  }'
```

Diese Konfiguration macht Folgendes:
+ Aktiviert die auto Knotenreparatur
+ Stoppt Reparaturaktionen, wenn mehr als 10% der Knoten fehlerhaft sind
+ Repariert bis zu 3 Knoten gleichzeitig
+ Überschreibt XID 64-Fehler (Fehler bei der Neuzuweisung des GPU-Speichers), um den Knoten nach 5 Minuten zu ersetzen. Die Standardeinstellung ist ein Neustart nach 10 Minuten.
+ Überschreibt XID 31-Fehler (GPU-Speicherseitenfehler), sodass keine Maßnahmen ergriffen werden. Die Standardeinstellung ist ein Neustart nach 10 Minuten.

# Integritätsstatus Ihrer Knoten anzeigen
<a name="learn-status-conditions"></a>

In diesem Thema werden die Tools und Methoden beschrieben, die zur Überwachung des Zustands von Knoten in Amazon-EKS-Clustern verfügbar sind. Die Informationen umfassen Knotenbedingungen, Ereignisse und Erkennungsfälle, die Sie bei der Identifizierung und Diagnose von Problemen auf Knotenebene unterstützen. Verwenden Sie die hier beschriebenen Befehle und Muster, um die Ressourcen für den Knotenstatus zu überprüfen, Statusbedingungen zu interpretieren und Knotenereignisse für die Fehlerbehebung im Betrieb zu analysieren.

Mit Kubernetes-Befehlen können Sie einige Informationen zum Knotenzustand für alle Knoten abrufen. Wenn Sie den Knoten-Überwachungsagent über den Amazon EKS Auto Mode oder das verwaltete Amazon-EKS-Add-On verwenden, erhalten Sie eine größere Auswahl an Knotensignalen, die Ihnen bei der Fehlerbehebung helfen. Beschreibungen der vom Knoten-Überwachungsagent erkannten Integritätsprobleme werden auch im Dashboard zur Beobachtbarkeit angezeigt. Weitere Informationen finden Sie unter [Erkennen Sie Probleme mit dem Knotenüberwachungsagenten von EKS](node-health-nma.md).

## Knotenzustände
<a name="status-node-conditions"></a>

Knotenzustände stellen terminale Probleme dar, die Abhilfemaßnahmen wie den Austausch oder Neustart einer Instance erfordern.

 **So rufen Sie die Zustände für alle Knoten ab:** 

```
kubectl get nodes -o 'custom-columns=NAME:.metadata.name,CONDITIONS:.status.conditions[*].type,STATUS:.status.conditions[*].status'
```

 **So erhalten Sie detaillierte Bedingungen für einen bestimmten Knoten** 

```
kubectl describe node node-name
```

 **Beispiel für die Ausgabe des Zustands eines fehlerfreien Knotens:** 

```
  - lastHeartbeatTime: "2024-11-21T19:07:40Z"
    lastTransitionTime: "2024-11-08T03:57:40Z"
    message: Monitoring for the Networking system is active
    reason: NetworkingIsReady
    status: "True"
    type: NetworkingReady
```

 **Beispiel für den Zustand eines fehlerhaften Knotens mit einem Netzwerkproblem:** 

```
  - lastHeartbeatTime: "2024-11-21T19:12:29Z"
    lastTransitionTime: "2024-11-08T17:04:17Z"
    message: IPAM-D has failed to connect to API Server which could be an issue with
      IPTable rules or any other network configuration.
    reason: IPAMDNotReady
    status: "False"
    type: NetworkingReady
```

## Knotenereignisse
<a name="status-node-events"></a>

Knotenereignisse weisen auf vorübergehende Probleme oder nicht optimale Konfigurationen hin.

 **So rufen Sie alle vom Knoten-Überwachungsagenten gemeldeten Ereignisse ab** 

Wenn der Knoten-Überwachungsagent verfügbar ist, können Sie den folgenden Befehl ausführen.

```
kubectl get events --field-selector=reportingComponent=eks-node-monitoring-agent
```

Beispielausgabe:

```
LAST SEEN   TYPE      REASON       OBJECT                                              MESSAGE
4s          Warning   SoftLockup   node/ip-192-168-71-251.us-west-2.compute.internal   CPU stuck for 23s
```

 **So erhalten Sie Ereignisse für alle Knoten** 

```
kubectl get events --field-selector involvedObject.kind=Node
```

 **So rufen Sie Ereignisse für einen bestimmten Knoten ab** 

```
kubectl get events --field-selector involvedObject.kind=Node,involvedObject.name=node-name
```

 **So beobachten Sie Ereignisse in Echtzeit** 

```
kubectl get events -w --field-selector involvedObject.kind=Node
```

 **Beispiel für eine Ereignisausgabe:** 

```
LAST SEEN   TYPE     REASON           OBJECT         MESSAGE
2m          Warning  MemoryPressure   Node/node-1    Node experiencing memory pressure
5m          Normal   NodeReady        Node/node-1    Node became ready
```

## Gängige Befehle zur Fehlerbehebung
<a name="status-node-troubleshooting"></a>

```
# Get comprehensive node status
kubectl get node node-name -o yaml

# Watch node status changes
kubectl get nodes -w

# Get node metrics
kubectl top node
```

# Abrufen von Knotenprotokollen für einen verwalteten Knoten mithilfe von kubectl und S3
<a name="auto-get-logs"></a>

Erfahren Sie, wie Sie Knotenprotokolle für einen von Amazon EKS verwalteten Knoten abrufen können, auf dem der Knoten-Überwachungsagent installiert ist.

## Voraussetzungen
<a name="_prerequisites"></a>

Stellen Sie sicher, dass Sie über Folgendes verfügen:
+ Ein vorhandener Amazon-EKS-Cluster mit dem Knoten-Überwachungsagent. Weitere Informationen finden Sie unter [Erkennen Sie Probleme mit dem Knotenstatus und aktivieren Sie die automatische Knotenreparatur](node-health.md).
+ Das Befehlszeilentool `kubectl`, das für die Kommunikation mit Ihrem Cluster installiert und konfiguriert wurde.
+ Die AWS CLI wurde installiert und hat sich mit ausreichenden Berechtigungen angemeldet, um S3-Buckets und -Objekte zu erstellen.
+ Eine aktuelle Installation von Python 3
+ Das AWS SDK für Python 3, Boto 3, ist installiert.

## Schritt 1: S3-Bucket-Ziel erstellen (optional)
<a name="_step_1_create_s3_bucket_destination_optional"></a>

Falls Sie noch nicht über einen S3-Bucket zum Speichern der Protokolle verfügen, erstellen Sie einen. Verwenden Sie den folgenden AWS CLI-Befehl. Der Bucket verwendet standardmäßig die `private`-Zugriffskontroll-Liste. *bucket-name*Ersetzen Sie es durch den von Ihnen ausgewählten eindeutigen Bucket-Namen.

```
aws s3api create-bucket --bucket <bucket-name>
```

## Schritt 2: Vorab signierte S3-URL für HTTP Put erstellen
<a name="_step_2_create_pre_signed_s3_url_for_http_put"></a>

Amazon EKS gibt die Knotenprotokolle zurück, indem es eine HTTP-PUT-Operation an eine von Ihnen angegebene URL durchführt. In diesem Tutorial erstellen wir eine vorab signierte S3-HTTP-PUT-URL.

Die Protokolle werden als gzip tarball mit der `.tar.gz`-Erweiterung zurückgegeben.

**Anmerkung**  
Sie müssen die AWS API oder ein SDK verwenden, um die vorsignierte S3-Upload-URL für EKS zum Hochladen der Protokolldatei zu erstellen. Sie können mit der AWS CLI keine vorsignierte S3-Upload-URL erstellen.

1. Bestimmen Sie, wo im Bucket Sie die Protokolle speichern möchten. Sie können beispielsweise *2024-11-12/logs1.tar.gz* als Schlüssel verwenden.

1. Speichern Sie den folgenden Python-Code in der Datei *presign-upload.py*. Ersetzen Sie *<bucket-name>* und *<key>*. Der Schlüssel sollte mit `.tar.gz` enden.

   ```
   import boto3; print(boto3.client('s3').generate_presigned_url(
      ClientMethod='put_object',
      Params={'Bucket': '<bucket-name>', 'Key': '<key>'},
      ExpiresIn=1000
   ))
   ```

1. Skript ausführen mit

   ```
   python presign-upload.py
   ```

1. Beachten Sie die URL-Ausgabe. Verwenden Sie diesen Wert im nächsten Schritt als *http-put-destination*.

Weitere Informationen finden Sie unter [Generieren einer vorsignierten URL zum Hochladen einer Datei](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html#generating-a-presigned-url-to-upload-a-file) in der Dokumentation zum AWS Boto3-SDK für Python.

## Schritt 3: Ressource erstellen NodeDiagnostic
<a name="_step_3_create_nodediagnostic_resource"></a>

Identifizieren Sie den Namen des Knotens, von dem Sie Protokolle erfassen möchten.

Erstellen Sie ein `NodeDiagnostic`-Manifest, das den Namen des Knotens als Namen der Ressource verwendet und eine HTTP-PUT-URL-Zieladresse angibt.

```
apiVersion: eks.amazonaws.com/v1alpha1
kind: NodeDiagnostic
metadata:
    name: <node-name>
spec:
    logCapture:
        destination: http-put-destination
```

Wenden Sie die Manifestdatei auf Ihren Cluster an.

```
kubectl apply -f nodediagnostic.yaml
```

Sie können den Status der Sammlung überprüfen, indem Sie die `NodeDiagnostic`-Ressource beschreiben:
+ Ein Status von `Success` oder `SuccessWithErrors` zeigt an, dass die Aufgabe abgeschlossen und die Protokolle an das angegebene Ziel hochgeladen wurden (`SuccessWithErrors` zeigt an, dass möglicherweise einige Protokolle fehlen).
+ Wenn der Status „Fehler“ lautet, stellen Sie sicher, dass die Upload-URL korrekt formatiert und nicht abgelaufen ist.

```
kubectl describe nodediagnostics.eks.amazonaws.com/<node-name>
```

## Schritt 4: Protokolle aus S3 herunterladen
<a name="_step_4_download_logs_from_s3"></a>

Warten Sie etwa eine Minute, bevor Sie versuchen, die Protokolle herunterzuladen. Verwenden Sie anschließend die S3-CLI, um die Protokolle herunterzuladen.

```
# Once NodeDiagnostic shows Success status, download the logs
aws s3 cp s3://<bucket-name>/key ./<path-to-node-logs>.tar.gz
```

## Schritt 5: NodeDiagnostic Ressource bereinigen
<a name="_step_5_clean_up_nodediagnostic_resource"></a>
+  `NodeDiagnostic`-Ressourcen werden nicht automatisch gelöscht. Sie sollten diese selbst bereinigen, nachdem Sie Ihre Protokoll-Artefakte erhalten haben

```
# Delete the NodeDiagnostic resource
kubectl delete nodediagnostics.eks.amazonaws.com/<node-name>
```

## NodeDiagnostic `node`Ziel
<a name="_nodediagnostic_node_destination"></a>

Ab `v1.6.0` der Version des Node Monitoring Agents gibt es eine Option, mit der Sie das Ziel für die Protokollerfassung festlegen können`node`. Die Verwendung dieses Ziels führt zur Erfassung und temporären Speicherung von Protokollen auf dem Knoten für eine spätere Erfassung. Zusätzlich zu dieser Funktionalität befindet sich im GitHub Repository des Node Monitoring Agents ein `kubectl` Plugin, das Sie für eine einfache Interaktion und Protokollerfassung installieren können. Weitere Informationen finden Sie in der [Dokumentation zum `kubectl ekslogs` Plugin](https://github.com/aws/eks-node-monitoring-agent/blob/main/tools/kubectl-ekslogs/README.md).

## Beispielverwendung
<a name="_example_usage"></a>

```
# Collect NodeDiagnostic logs from a single node
kubectl ekslogs <node-name>

# Collect NodeDiagnostic logs from multiple nodes
kubectl ekslogs <node-name-1> <node-name-2> <node-name-3>

# Collect NodeDiagnostic logs from all nodes with a specific label
kubectl ekslogs -l <key>=<value>
```

# Übersicht über Amazon EKS Hybrid Nodes
<a name="hybrid-nodes-overview"></a>

Mit *Amazon EKS Hybrid Nodes* können Sie Ihre On-Premises- und Edge-Infrastruktur als Knoten in Amazon-EKS-Clustern verwenden. AWS verwaltet die von AWS gehostete Kubernetes-Steuerebene des Amazon-EKS-Clusters, und Sie verwalten die Hybridknoten, die in Ihren On-Premises- oder Edge-Umgebungen ausgeführt werden. Dies vereinheitlicht die Kubernetes-Verwaltung in Ihren Umgebungen und lagert die Verwaltung der Kubernetes-Steuerebene für Ihre On-Premises- und Edge-Anwendungen an AWS aus.

Amazon EKS Hybrid Nodes funktioniert mit jeder On-Premises Hardware oder virtuellem Rechner und bietet die Effizienz, Skalierbarkeit und Verfügbarkeit von Amazon EKS überall dort, wo Ihre Anwendungen ausgeführt werden müssen. Mit Amazon EKS Hybrid Nodes können Sie eine Vielzahl von Amazon-EKS-Features verwenden, darunter Amazon-EKS-Add-On, Amazon EKS Pod Identity, Cluster Access Entries, Cluster Insights und erweiterten Support für Kubernetes-Versionen. Amazon EKS Hybrid Nodes lässt sich nahtlos in AWS-Services wie AWS Systems Manager, AWS IAM Roles Anywhere, Amazon Managed Service für Prometheus und Amazon CloudWatch integrieren und ermöglicht so eine zentralisierte Überwachung, Protokollierung und Identitätsverwaltung.

Bei Amazon EKS Hybrid Nodes fallen keine Vorabverpflichtungen oder Mindestgebühren an. Die Kosten werden stündlich für die vCPU-Ressourcen Ihrer Hybridknoten berechnet, wenn diese mit Ihren Amazon-EKS-Clustern verbunden sind. Weitere Preisinformationen finden Sie unter [Amazon EKS – Preise](https://aws.amazon.com/eks/pricing/).

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/tFn9IdlddBw?rel=0/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/tFn9IdlddBw?rel=0)


## Features
<a name="hybrid-nodes-features"></a>

EKS-Hybridknoten bieten die folgenden allgemeinen Features:
+  **Verwaltete Kubernetes-Steuerebene**: AWS verwaltet die von AWS gehostete Kubernetes-Steuerebene des EKS-Clusters, und Sie verwalten die Hybridknoten, die in Ihren On-Premises- oder Edge-Umgebungen ausgeführt werden. Dies vereinheitlicht die Kubernetes-Verwaltung in Ihren Umgebungen und lagert die Verwaltung der Kubernetes-Steuerebene für Ihre On-Premises- und Edge-Anwendungen an AWS aus. Durch die Verlagerung der Kubernetes-Steuerebene auf AWS können Sie On-Premises-Kapazitäten für Ihre Anwendungen einsparen und darauf vertrauen, dass die Kubernetes-Steuerebene mit Ihren Workloads skaliert
+  **Konsistente EKS-Erfahrung**: Die meisten EKS-Features werden von EKS-Hybridknoten unterstützt, um eine konsistente EKS-Erfahrung in Ihren On-Premises- und Cloud-Umgebungen zu gewährleisten. Dazu gehören EKS-Add-Ons, EKS Pod Identity, Cluster-Zugriffseinträge, Cluster-Erkenntnisse, erweiterter Support für Kubernetes-Versionen und vieles mehr. Weitere Informationen zu den von EKS-Hybridknoten unterstützten EKS-Add-Ons finden Sie unter [Konfiguration von Add-Ons für Hybridknoten](hybrid-nodes-add-ons.md).
+  **Zentralisierte Beobachtbarkeit und Identitätsverwaltung**: EKS-Hybridknoten lassen sich nativ in AWS-Services wie AWS Systems Manager, AWS IAM Roles Anywhere, Amazon Managed Service für Prometheus und Amazon CloudWatch integrieren und ermöglicht so eine zentralisierte Überwachung, Protokollierung und Identitätsverwaltung.
+  **Burst-to-Cloud oder Erweiterung der On-Premises-Kapazität**: Ein einzelner EKS-Cluster kann verwendet werden, um Hybridknoten und Knoten in AWS-Regionen, AWS Local Zones oder AWS Outposts auszuführen, um Burst-to-Cloud oder die On-Premises-Kapazität Ihrer EKS-Cluster zu erweitern. Weitere Information finden Sie unter [Überlegungen zu Clustern im kombinierten Modus](hybrid-nodes-webhooks.md#hybrid-nodes-considerations-mixed-mode).
+  **Flexible Infrastruktur**: EKS-Hybridknoten verfolgen einen *Bring-Your-Own-Infrastructure-Ansatz* und sind unabhängig von der Infrastruktur, die Sie für Hybridknoten verwenden. Sie können Hybridknoten auf physischen oder virtuellen Rechnern sowie auf x86- und ARM-Architekturen ausführen, wodurch die Migration von On-Premises-Workloads, die in Hybridknoten ausgeführt werden, über verschiedene Infrastrukturtypen hinweg möglich wird.
+  **Flexible Vernetzung**: Bei EKS-Hybridknoten wird die Kommunikation zwischen der EKS-Steuerebene und den Hybridknoten über die VPC und die Subnetze geleitet, die Sie bei der Cluster-Erstellung angeben. Dies baut auf dem [vorhandenen Mechanismus](https://docs.aws.amazon.com/eks/latest/best-practices/subnets.html) in EKS für die Vernetzung zwischen Steuerebene und Knoten auf. Dies ist flexibel und entspricht Ihrer bevorzugten Methode zum Verbinden Ihrer On-Premises-Netzwerke mit einem VPC in AWS. Es stehen mehrere [dokumentierte Optionen](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) zur Verfügung, darunter AWS Site-to-Site-VPN, AWS Direct Connect oder Ihre eigene VPN-Lösung. Sie können die Methode auswählen, die am besten zu Ihrem Anwendungsfall passt.

## Grenzwerte
<a name="hybrid-node-limits"></a>
+ Pro Cluster werden bis zu 15 CIDRs für Fern-Knoten-Netzwerke und 15 CIDRs für Fern-Pod-Netzwerke unterstützt.

## Überlegungen
<a name="hybrid-nodes-general"></a>
+ EKS-Hybridknoten können mit neuen oder vorhandenen EKS-Clustern verwendet werden.
+ EKS-Hybridknoten ist in allen AWS-Regionen verfügbar, mit Ausnahme der AWS GovCloud (US)-Regionen und der AWS-China-Regionen.
+ EKS-Hybridknoten erfordern, dass zwischen Ihrer On-Premises-Umgebung und AWS eine zuverlässige Verbindung hergestellt wird. EKS-Hybridknoten sind nicht für getrennte, unterbrochene, intermittierende oder eingeschränkte (DDIL) Umgebungen geeignet. Wenn Sie in einer DDIL-Umgebung ausführen, empfehlen wir Ihnen [Amazon EKS Anywhere](https://aws.amazon.com/eks/eks-anywhere/). Informationen zum Verhalten von Hybridknoten bei Netzwerkunterbrechungen finden Sie in den [Bewährten Methoden für EKS-Hybridknoten](https://docs.aws.amazon.com/eks/latest/best-practices/hybrid-nodes-network-disconnections.html).
+ Die Ausführung von EKS-Hybridknoten in Cloud-Infrastrukturen, einschließlich AWS-Regionen, AWS Local Zones, AWS Outposts oder anderen Clouds, wird nicht unterstützt. Wenn Sie Hybridknoten in Amazon-EC2-Instances ausführen, wird Ihnen die Gebühr für Hybridknoten in Rechnung gestellt.
+ Die Fakturierung für Hybridknoten beginnt, wenn die Knoten dem EKS-Cluster beitreten, und endet, wenn die Knoten aus dem Cluster entfernt werden. Stellen Sie sicher, dass Sie Ihre Hybridknoten aus Ihrem EKS-Cluster entfernen, wenn Sie diese nicht verwenden.

## Weitere Ressourcen
<a name="hybrid-nodes-resources"></a>
+  [https://www.eksworkshop.com/docs/networking/eks-hybrid-nodes/](https://www.eksworkshop.com/docs/networking/eks-hybrid-nodes/): Schritt-für-Schritt-Anleitung zum Bereitstellen von EKS-Hybridknoten in einer Demo-Umgebung.
+  [https://www.youtube.com/watch?v=ZxC7SkemxvU](https://www.youtube.com/watch?v=ZxC7SkemxvU): AWS-re:Invent-Sitzung zur Einführung der EKS-Hybridknoten, in der ein Kunde demonstriert, wie er EKS-Hybridknoten in seiner Umgebung verwendet.
+  [https://repost.aws/articles/ARL44xuau6TG2t-JoJ3mJ5Mw/unpacking-the-cluster-networking-for-amazon-eks-hybrid-nodes](https://repost.aws/articles/ARL44xuau6TG2t-JoJ3mJ5Mw/unpacking-the-cluster-networking-for-amazon-eks-hybrid-nodes): Dieser Artikel erläutert verschiedene Methoden, mit denen ein Netzwerk für EKS-Hybridknoten eingerichtet werden kann.
+  [https://aws.amazon.com/blogs/containers/run-genai-inference-across-environments-with-amazon-eks-hybrid-nodes/](https://aws.amazon.com/blogs/containers/run-genai-inference-across-environments-with-amazon-eks-hybrid-nodes/): Dieser Blog-Beitrag zeigt, wie Sie GenAI-Inferenz über Umgebungen hinweg mit EKS-Hybridknoten ausführen können.

# Voraussetzungen für die Einrichtung von Hybridknoten
<a name="hybrid-nodes-prereqs"></a>

Um Amazon EKS-Hybridknoten verwenden zu können, müssen Sie private Konnektivität von Ihrer lokalen Umgebung zu/von AWS Bare-Metal-Servern oder virtuellen Maschinen mit einem unterstützten Betriebssystem haben und AWS IAM Roles Anywhere- oder AWS Systems Manager (SSM) -Hybridaktivierungen konfiguriert haben. Sie sind für die Verwaltung dieser Voraussetzungen während des gesamten Lebenszyklus der Hybridknoten verantwortlich.
+ Hybride Netzwerkkonnektivität von Ihrer lokalen Umgebung zu/von AWS 
+ Infrastruktur in Form von physischen oder virtuellen Rechnern
+ Mit Hybridknoten kompatibles Betriebssystem
+ On-Premises IAM-Anmeldeinformationsanbieter konfiguriert

![\[Netzwerkkonnektivität für Hybridknoten.\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-prereq-diagram.png)


## Hybride Netzwerkkonnektivität
<a name="hybrid-nodes-prereqs-connect"></a>

Die Kommunikation zwischen der Amazon-EKS-Steuerebene und den Hybridknoten wird über die VPC und Subnetze geleitet, die Sie während der Cluster-Erstellung übergeben. Dies baut auf dem [vorhandenen Mechanismus](https://aws.github.io/aws-eks-best-practices/networking/subnets/) in Amazon EKS für die Vernetzung von der Steuerebene zum Knoten auf. Es stehen mehrere [dokumentierte Optionen](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) zur Verfügung, mit denen Sie Ihre lokale Umgebung mit Ihrer VPC verbinden können, darunter AWS Site-to-Site VPN, AWS Direct Connect oder Ihre eigene VPN-Verbindung. Weitere Informationen zur Verwendung dieser Lösungen für Ihre hybride Netzwerkverbindung finden Sie in den [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) - und [AWS Direct Connect-Benutzerhandbüchern](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html).

Für ein optimales Erlebnis empfehlen wir eine zuverlässige Netzwerkkonnektivität von mindestens 100 Mbit/s und eine maximale Round-Trip-Latenz von 200 ms für die Verbindung der Hybridknoten mit der AWS Region. Dies sind allgemeine Leitlinien, die für die meisten Anwendungsfälle geeignet sind, jedoch keine strengen Anforderungen darstellen. Die Anforderungen an Bandbreite und Latenz können je nach Anzahl der Hybridknoten und Ihren Workload-Merkmalen wie Größe des Anwendungsimages, Anwendungselastizität, Überwachungs- und Protokollierungskonfigurationen und Anwendungsabhängigkeiten beim Zugriff auf Daten, die in anderen AWS Diensten gespeichert sind, variieren. Wir empfehlen Ihnen, vor der Bereitstellung in der Produktionsumgebung Tests mit Ihren eigenen Anwendungen und Umgebungen durchzuführen, um sicherzustellen, dass Ihre Netzwerkkonfiguration den Anforderungen Ihrer Workloads entspricht.

## On-Premises-Netzwerkkonfiguration
<a name="hybrid-nodes-prereqs-onprem"></a>

Sie müssen den eingehenden Netzwerkzugriff von der Amazon-EKS-Steuerebene auf Ihre On-Premises-Umgebung aktivieren, damit die Amazon-EKS-Steuerebene mit dem in Hybridknoten ausgeführten `kubelet` und optional mit in Ihren Hybridknoten ausgeführten Webhooks kommunizieren kann. Darüber hinaus müssen Sie den ausgehenden Netzwerkzugriff für Ihre Hybridknoten und die darauf ausgeführten Komponenten aktivieren, damit diese mit der Amazon-EKS-Steuerebene kommunizieren können. Sie können diese Kommunikation so konfigurieren, dass Ihre AWS Direct Connect-, AWS Site-to-Site VPN- oder Ihre eigene VPN-Verbindung vollständig privat bleibt.

Die CIDR-Bereiche (Classless Inter-Domain Routing), die Sie für Ihre lokalen Knoten- und Pod-Netzwerke verwenden, müssen IPv4 RFC-1918- oder CGNAT-Adressbereiche verwenden. Ihr On-Premises Router muss mit Routen zu Ihren On-Premises Knoten und optional zu Pods konfiguriert sein. Weitere Informationen zu den Anforderungen an das On-Premises-Netzwerk, einschließlich einer vollständigen Liste der erforderlichen Ports und Protokolle, die in Ihrer Firewall und Ihrer On-Premises-Umgebung aktiviert werden müssen, finden Sie unter [Konfiguration des On-Premises-Netzwerks](hybrid-nodes-networking.md#hybrid-nodes-networking-on-prem).

## EKS-Cluster-Konfiguration
<a name="hybrid-nodes-prereqs-cluster"></a>

Um die Latenz zu minimieren, empfehlen wir Ihnen, Ihren Amazon EKS-Cluster in der AWS Region zu erstellen, die Ihrer lokalen Umgebung oder Edge-Umgebung am nächsten liegt. Sie übergeben Ihren lokalen Knoten und Pod CIDRs während der Amazon EKS-Clustererstellung über zwei API-Felder: `RemoteNodeNetwork` und`RemotePodNetwork`. Möglicherweise müssen Sie mit Ihrem lokalen Netzwerkteam darüber sprechen, wie Sie Ihren lokalen Knoten und Pod identifizieren können. CIDRs Der Knoten-CIDR wird von Ihrem On-Premises-Netzwerk zugewiesen und der Pod-CIDR wird von der Container Network Interface (CNI) zugewiesen, die Sie verwenden, wenn Sie ein Überlagerungsnetzwerk für Ihr CNI verwenden. Cilium und Calico verwenden standardmäßig Überlagerungsnetzwerke.

Der lokale Knoten und der Pod, die CIDRs Sie über die `RemotePodNetwork` Felder `RemoteNodeNetwork` und konfigurieren, werden verwendet, um die Amazon EKS-Steuerebene so zu konfigurieren, dass der Datenverkehr über Ihre VPC zu den `kubelet` und den Pods geleitet wird, die auf Ihren Hybridknoten ausgeführt werden. Ihr lokaler Knoten und Ihr Pod CIDRs dürfen sich nicht miteinander, mit der VPC-CIDR, die Sie bei der Clustererstellung übergeben, oder mit der IPv4 Servicekonfiguration für Ihren Amazon EKS-Cluster überschneiden. Außerdem CIDRs muss der Pod für jeden EKS-Cluster einzigartig sein, damit Ihr lokaler Router den Verkehr weiterleiten kann.

Wir empfehlen, entweder den öffentlichen oder den privaten Endpunktzugriff für den API-Server-Endpunkt von Amazon EKS Kubernetes zu verwenden. Wenn Sie „Öffentlich und privat“ wählen, wird der Amazon EKS Kubernetes API-Serverendpunkt IPs für Hybridknoten, die außerhalb Ihrer VPC laufen, immer öffentlich aufgelöst, wodurch verhindert werden kann, dass Ihre Hybridknoten dem Cluster beitreten. Wenn Sie den öffentlichen Endpunktzugriff verwenden, wird der Kubernetes-API-Serverendpunkt öffentlich aufgelöst IPs und die Kommunikation von Hybridknoten zur Amazon EKS-Kontrollebene wird über das Internet geleitet. Wenn Sie privaten Endpunktzugriff wählen, wird der Kubernetes-API-Serverendpunkt in privat aufgelöst IPs und die Kommunikation von Hybridknoten zur Amazon EKS-Kontrollebene wird über Ihre private Konnektivitätsverbindung, in den meisten Fällen AWS Direct Connect oder VPN, geleitet. AWS Site-to-Site 

## VPC-Konfiguration
<a name="hybrid-nodes-prereqs-vpc"></a>

Sie müssen die VPC, die Sie bei der Erstellung des Amazon-EKS-Clusters übergeben, mit Routen in der Routing-Tabelle für Ihren On-Premises-Knoten und optional für Pod-Netzwerke mit Ihrem Virtual Private Gateway (VGW) oder Transit Gateway (TGW) als Ziel konfigurieren. Es folgt ein Beispiel. Ersetzen Sie `REMOTE_NODE_CIDR` und `REMOTE_POD_CIDR` durch die Werte für Ihr On-Premises-Netzwerk.


| Bestimmungsort | Target | Description | 
| --- | --- | --- | 
|  10.226.0.0/16  |  local  |  Lokaler Datenverkehr zu den VPC-Routen innerhalb der VPC  | 
|  REMOTE\$1NODE\$1CIDR  |  tgw-abcdef123456  |  CIDR des On-Premises-Knotens, Weiterleitung des Datenverkehrs an den TGW  | 
|  REMODE\$1POD\$1CIDR  |  tgw-abcdef123456  |  CIDR des On-Premises-Pods, Weiterleitung des Datenverkehrs an den TGW  | 

## Sicherheitsgruppenkonfiguration
<a name="hybrid-nodes-prereqs-sg"></a>

Wenn Sie einen Cluster erstellen, erstellt Amazon EKS eine Sicherheitsgruppe mit dem Namen `eks-cluster-sg-<cluster-name>-<uniqueID>`. Sie können die eingehenden Regeln dieser Cluster-Sicherheitsgruppe nicht ändern. Sie können jedoch die ausgehenden Regeln einschränken. Sie müssen Ihrem Cluster eine zusätzliche Sicherheitsgruppe hinzufügen, um das Kubelet und optional die auf Ihren Hybridknoten ausgeführten Webhooks zu aktivieren, damit sie Kontakt mit der Amazon-EKS-Steuerebene aufnehmen können. Die erforderlichen Eingangsregeln für diese zusätzliche Sicherheitsgruppe sind unten aufgeführt. Ersetzen Sie `REMOTE_NODE_CIDR` und `REMOTE_POD_CIDR` durch die Werte für Ihr On-Premises-Netzwerk.


| Name | ID der Sicherheitsgruppenregel | IP-Version | Typ | Protocol (Protokoll) | Port-Bereich | Quelle | 
| --- | --- | --- | --- | --- | --- | --- | 
|  On-Premise-Knoten eingehend  |  sgr-abcdef123456  |  IPv4  |  HTTPS  |  TCP  |  443  |  REMOTE\$1NODE\$1CIDR  | 
|  On-Premise-Pod eingehend  |  sgr-abcdef654321  |  IPv4  |  HTTPS  |  TCP  |  443  |  REMOTE\$1POD\$1CIDR  | 

## Infrastruktur
<a name="hybrid-nodes-prereqs-infra"></a>

Sie müssen über Bare-Metal-Server oder virtuelle Rechnern verfügen, die Sie als Hybridknoten verwenden können. Hybridknoten sind unabhängig von der zugrunde liegenden Infrastruktur und unterstützen x86- und ARM-Architekturen. Amazon EKS Hybrid Nodes verfolgt einen „Bring Your Own Infrastructure“-Ansatz, bei dem Sie für die Bereitstellung und Verwaltung der Bare-Metal-Server oder virtuellen Rechnern verantwortlich sind, die Sie für Hybridknoten verwenden. Es gibt zwar keine strengen Mindestanforderungen an die Ressource, jedoch empfehlen wir, für Hybridknoten Hosts mit mindestens 1 vCPU und 1 GiB RAM zu verwenden.

## Betriebssystem
<a name="hybrid-nodes-prereqs-os"></a>

Bottlerocket, Amazon Linux 2023 (AL2023), Ubuntu und RHEL werden fortlaufend für die Verwendung als Knotenbetriebssystem für Hybridknoten validiert. Bottlerocket wird nur AWS in VMware vSphere-Umgebungen unterstützt. AL2023 ist nicht durch AWS Supportpläne abgedeckt, wenn es außerhalb von Amazon EC2 ausgeführt wird. AL2023 kann nur in lokalen virtualisierten Umgebungen verwendet werden. Weitere Informationen finden Sie im [Amazon Linux 2023 User Guide](https://docs.aws.amazon.com/linux/al2023/ug/outside-ec2.html). AWS unterstützt die Integration von Hybridknoten mit den Betriebssystemen Ubuntu und RHEL, bietet jedoch keine Unterstützung für das Betriebssystem selbst.

Sie sind für die Bereitstellung und Verwaltung des Betriebssystems verantwortlich. Wenn Sie Hybridknoten zum ersten Mal testen, ist es am einfachsten, die CLI für Amazon EKS Hybrid Nodes (`nodeadm`) auf einem bereits bereitgestellten Host auszuführen. Für Produktionsbereitstellungen empfehlen wir, `nodeadm` in Ihre Golden-Betriebssystem-Images aufzunehmen und es so zu konfigurieren, dass es als systemd-Service ausgeführt wird, um Hosts beim Host-Startup automatisch mit Amazon-EKS-Clustern zu verbinden.

## On-Premises IAM-Anmeldeinformationsanbieter
<a name="hybrid-nodes-prereqs-iam"></a>

Amazon EKS-Hybridknoten verwenden temporäre IAM-Anmeldeinformationen, die durch AWS SSM-Hybrid-Aktivierungen oder AWS IAM Roles Anywhere bereitgestellt werden, um sich beim Amazon EKS-Cluster zu authentifizieren. Sie müssen entweder AWS SSM-Hybrid-Aktivierungen oder AWS IAM Roles Anywhere mit der Amazon EKS Hybrid Nodes CLI () verwenden. `nodeadm` Wir empfehlen, AWS SSM-Hybrid-Aktivierungen zu verwenden, wenn Sie nicht über eine bestehende Public Key-Infrastruktur (PKI) mit einer Zertifizierungsstelle (CA) und Zertifikaten für Ihre lokalen Umgebungen verfügen. Wenn Sie bereits über PKI und Zertifikate vor Ort verfügen, verwenden Sie IAM Roles Anywhere. AWS 

Ähnlich wie bei [Amazon-EKS-Knoten-IAM-Rolle](create-node-role.md) für Knoten, die auf Amazon EC2 ausgeführt werden, erstellen Sie eine IAM-Rolle für Hybridknoten mit den erforderlichen Berechtigungen, um Hybridknoten mit Amazon-EKS-Clustern zu verbinden. Wenn Sie AWS IAM Roles Anywhere verwenden, konfigurieren Sie eine Vertrauensrichtlinie, die es IAM Roles Anywhere ermöglicht, die AWS IAM-Rolle Hybrid Nodes zu übernehmen, und konfigurieren Sie Ihr IAM Roles Anywhere-Profil mit der Hybrid Nodes AWS IAM-Rolle als angenommener Rolle. Wenn Sie AWS SSM verwenden, konfigurieren Sie eine Vertrauensrichtlinie, die es AWS SSM ermöglicht, die IAM-Rolle Hybrid Nodes zu übernehmen und die Hybrid-Aktivierung mit der Hybrid Nodes IAM-Rolle zu erstellen. Informationen zum Erstellen der IAM-Rolle für Hybridknoten mit den erforderlichen Berechtigungen finden Sie unter [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md).

# Vorbereitung der Vernetzung für Hybridknoten
<a name="hybrid-nodes-networking"></a>

Dieses Thema bietet einen Überblick über die Netzwerkkonfiguration, die Sie vor der Erstellung Ihres Amazon-EKS-Clusters und dem Hinzufügen von Hybridknoten konfigurieren müssen. In diesem Leitfaden wird davon ausgegangen, dass Sie die Voraussetzungen für Hybrid-Netzwerkkonnektivität mit [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/SetUpVPNConnections.html), [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) oder Ihrer eigenen VPN-Lösung erfüllt haben.

![\[Netzwerkkonnektivität für Hybridknoten.\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-prereq-diagram.png)


## Konfiguration des On-Premises-Netzwerks
<a name="hybrid-nodes-networking-on-prem"></a>

### Mindestanforderungen an das Netzwerk
<a name="hybrid-nodes-networking-min-reqs"></a>

Für ein optimales Erlebnis empfehlen wir eine zuverlässige Netzwerkkonnektivität von mindestens 100 Mbit/s und eine maximale Round-Trip-Latenz von 200 ms für die Verbindung der Hybridknoten mit der AWS Region. Dies sind allgemeine Leitlinien, die für die meisten Anwendungsfälle geeignet sind, jedoch keine strengen Anforderungen darstellen. Die Anforderungen an Bandbreite und Latenz können je nach Anzahl der Hybridknoten und Ihren Workload-Merkmalen wie Größe des Anwendungsimages, Anwendungselastizität, Überwachungs- und Protokollierungskonfigurationen und Anwendungsabhängigkeiten beim Zugriff auf Daten, die in anderen AWS Diensten gespeichert sind, variieren. Wir empfehlen Ihnen, vor der Bereitstellung in der Produktionsumgebung Tests mit Ihren eigenen Anwendungen und Umgebungen durchzuführen, um sicherzustellen, dass Ihre Netzwerkkonfiguration den Anforderungen Ihrer Workloads entspricht.

### Lokaler Knoten und Pod CIDRs
<a name="hybrid-nodes-networking-on-prem-cidrs"></a>

Identifizieren Sie den Knoten und den Pod, den CIDRs Sie für Ihre Hybridknoten und die darauf ausgeführten Workloads verwenden werden. Die Knoten-CIDR wird aus Ihrem On-Premises-Netzwerk zugewiesen, und die Pod-CIDR wird aus Ihrer Container Network Interface (CNI) zugewiesen, wenn Sie ein Überlagerungsnetzwerk für Ihre CNI verwenden. Sie übergeben Ihren lokalen Knoten CIDRs und Pod CIDRs als Eingaben, wenn Sie Ihren EKS-Cluster mit den Feldern `RemoteNodeNetwork` und `RemotePodNetwork` erstellen. Ihr lokaler Knoten CIDRs muss in Ihrem lokalen Netzwerk routingfähig sein. Informationen zur CIDR-Routing-Fähigkeit des On-Premises-Pods finden Sie im folgenden Abschnitt.

Die CIDR-Blöcke für den On-Premises-Knoten und den Pod müssen die folgenden Anforderungen erfüllen:

1. Innerhalb eines der folgenden `IPv4` RFC-1918-Bereiche liegen:`10.0.0.0/8`,, oder `172.16.0.0/12``192.168.0.0/16`, oder innerhalb des durch RFC 6598: definierten CGNAT-Bereichs. `100.64.0.0/10`

1. Beachten Sie, dass sich die VPC-CIDR für Ihren EKS-Cluster und die `IPv4` CIDR Ihres Kubernetes-Service nicht überschneiden dürfen.

### On-premises-Pod-Netzwerk-Routing
<a name="hybrid-nodes-networking-on-prem-pod-routing"></a>

Wenn Sie EKS-Hybridknoten verwenden, empfehlen wir generell, Ihren lokalen Pod in Ihrem lokalen Netzwerk CIDRs routingfähig zu machen, um die vollständige Cluster-Kommunikation und Funktionalität zwischen Cloud- und lokalen Umgebungen zu ermöglichen.

 **Routingfähige Pod-Netzwerke** 

Wenn Sie Ihr Pod-Netzwerk in Ihrem On-Premises-Netzwerk routingfähig machen können, befolgen Sie die nachstehenden Anweisungen.

1. Konfigurieren Sie das `RemotePodNetwork`-Feld für Ihren EKS-Cluster mit Ihrer On-Premises-Pod-CIDR, Ihre VPC-Routing-Tabellen mit Ihrer On-Premises-Pod-CIDR und Ihre EKS-Cluster-Sicherheitsgruppe mit Ihrer On-Premises-Pod-CIDR.

1. Es gibt mehrere Techniken, mit denen Sie Ihren On-Premises-Pod CIDR in Ihrem On-Premises-Netzwerk routingfähig machen können, darunter Border Gateway Protocol (BGP), statische Routen oder andere benutzerdefinierte Routing-Lösungen. BGP ist die empfohlene Lösung, da sie skalierbarer und einfacher zu verwalten ist als alternative Lösungen, die eine benutzerdefinierte oder manuelle Routenkonfiguration erfordern. AWS unterstützt die BGP-Funktionen von Cilium und Calico für Werbe-Pods CIDRs. Weitere Informationen finden Sie unter [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) und[Routingfähige Fern-Pod-CIDRs](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs).

1. Webhooks können auf Hybridknoten ausgeführt werden, da die EKS-Steuerebene mit den Webhooks zugewiesenen Pod-IP-Adressen kommunizieren kann.

1. In Cloud-Knoten ausgeführte Workloads können direkt mit Workloads kommunizieren, die auf Hybridknoten im selben EKS-Cluster ausgeführt werden.

1. Andere AWS Dienste, wie AWS Application Load Balancers und Amazon Managed Service for Prometheus, können mit Workloads kommunizieren, die auf Hybridknoten ausgeführt werden, um den Netzwerkverkehr auszugleichen und Pod-Metriken auszuwerten.

 **Nicht routingfähige Pod-Netzwerke** 

Wenn Sie Ihre Pod-Netzwerke in Ihrem On-Premises-Netzwerk *nicht* routingfähig machen können, befolgen Sie die nachstehenden Anweisungen.

1. Webhooks können nicht in Hybridknoten ausgeführt werden, da Webhooks eine Verbindung von der EKS-Steuerebene zu den den Webhooks zugewiesenen Pod-IP-Adressen erfordern. In diesem Fall empfehlen wir, Webhooks auf Cloud-Knoten im selben EKS-Cluster wie Ihre Hybridknoten auszuführen. Weitere Informationen finden Sie unter [Konfiguration von Webhooks für Hybridknoten](hybrid-nodes-webhooks.md).

1. Workloads auf Cloud-Knoten können nicht direkt mit Workloads auf Hybridknoten kommunizieren, wenn VPC CNI für Cloud-Knoten und Cilium oder Calico für Hybridknoten verwendet werden.

1. Verwenden Sie Verteilung des Service-Datenverkehrs, um den Datenverkehr auf die Zone zu beschränken, aus der er stammt. Weitere Informationen zur Verteilung des Service-Datenverkehrs finden Sie unter [Verteilung des Service-Datenverkehrs konfigurieren](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-service-traffic-distribution).

1. Konfigurieren Sie Ihr CNI so, dass es ausgehende Maskierung oder Network Address Translation (NAT) für den Pod-Datenverkehr verwendet, wenn dieser Ihre On-Premises-Hosts verlässt. Dies ist in Cilium standardmäßig aktiviert. Calico erfordert, dass `natOutgoing` auf `true` festgelegt ist.

1. Andere AWS Dienste, wie AWS Application Load Balancers und Amazon Managed Service for Prometheus, können nicht mit Workloads kommunizieren, die auf Hybridknoten ausgeführt werden.

### Zugriff während der Installation und Aktualisierung von Hybridknoten erforderlich
<a name="hybrid-nodes-networking-access-reqs"></a>

Während der Installation, bei der Sie die Abhängigkeiten der Hybridknoten auf Ihren Hosts installieren, müssen Sie Zugriff auf die folgenden Domains haben. Dieser Vorgang kann einmalig beim Erstellen Ihrer Betriebssystem-Images oder zur Laufzeit auf jedem Host durchgeführt werden. Dies gilt sowohl für die Erstinstallation als auch für das Upgrade der Kubernetes-Version Ihrer Hybridknoten.

Einige Pakete werden mit dem Standard-Paket-Manager des Betriebssystems installiert. Für AL2023 und RHEL wird der `yum` Befehl verwendet, um, und zu installieren. `containerd` `ca-certificates` `iptables` `amazon-ssm-agent` Für Ubuntu, `apt` wird für die Installation von `containerd`, `ca-certificates` und `iptables` und `snap` wird für die Installation von `amazon-ssm-agent` verwendet.


| Komponente | URL | Protocol (Protokoll) | Port | 
| --- | --- | --- | --- | 
|  EKS-Knoten-Artefakte (S3)  |  https://hybrid-assets.eks.amazonaws.com  |  HTTPS  |  443  | 
|   [EKS-Service-Endpunkte](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |  https://eks. *region*.amazonaws.com  |  HTTPS  |  443  | 
|   [ECR-Service-Endpunkte](https://docs.aws.amazon.com/general/latest/gr/ecr.html)   |  https://api.ecr. *region*.amazonaws.com  |  HTTPS  |  443  | 
|  EKS-ECR-Endpunkte  |  Informationen zu regionalen Endpunkten finden Sie unter [Amazon-Container-Image-Registries für Amazon-EKS-Add-Ons anzeigen](add-ons-images.md).  |  HTTPS  |  443  | 
|  SSM-Binärendpunkt 1   |  https://amazon-ssm - .s3. *region* *region*.amazonaws.com  |  HTTPS  |  443  | 
|   [SSM-Service-Endpunkt](https://docs.aws.amazon.com/general/latest/gr/ssm.html) 1   |  https://ssm. *region*.amazonaws.com  |  HTTPS  |  443  | 
|  IAM-Anywhere-Binärendpunkt 2   |  https://rolesanywhere.amazonaws.com  |  HTTPS  |  443  | 
|   [IAM-Anywhere-Service-Endpunkt](https://docs.aws.amazon.com/general/latest/gr/rolesanywhere.html) 2   |  https://rolesanywhere. *region*.amazonaws.com  |  HTTPS  |  443  | 
|  Endpunkte des Paket-Managers des Betriebssystems  |  Die Endpunkte des Paket-Repositorys sind betriebssystemspezifisch und können je nach geografischer Region variieren.  |  HTTPS  |  443  | 

**Anmerkung**  
 1 Der Zugriff auf die AWS SSM-Endpunkte ist nur erforderlich, wenn Sie SSM-Hybrid-Aktivierungen für Ihren lokalen AWS IAM-Anmeldeinformationsanbieter verwenden.  
 2 Der Zugriff auf die AWS IAM-Endpunkte ist nur erforderlich, wenn Sie IAM Roles Anywhere für Ihren lokalen AWS IAM-Anmeldeinformationsanbieter verwenden.

### Zugriff für den fortlaufenden Cluster-Betrieb erforderlich
<a name="hybrid-nodes-networking-access-reqs-ongoing"></a>

Für den kontinuierlichen Cluster-Betrieb ist der folgende Netzwerkzugang für Ihre On-Premises-Firewall erforderlich.

**Wichtig**  
Je nach Ihrer Wahl des CNI müssen Sie zusätzliche Netzwerk-Zugriffsregeln für die CNI-Ports konfigurieren. Weitere Informationen finden Sie in der [Cilium-Dokumentation](https://docs.cilium.io/en/stable/operations/system_requirements/#firewall-rules) und der [Calico-Dokumentation](https://docs.tigera.io/calico/latest/getting-started/kubernetes/requirements#network-requirements).


| Typ | Protocol (Protokoll) | Richtung | Port | Quelle | Ziel | Usage | 
| --- | --- | --- | --- | --- | --- | --- | 
|  HTTPS  |  TCP  |  Ausgehend  |  443  |  Fern-Knoten-CIDR(s)  |  EKS-Cluster 1 IPs    |  kubelet zum Kubernetes-API-Server  | 
|  HTTPS  |  TCP  |  Ausgehend  |  443  |  Fern-Pod-CIDR(s)  |  EKS-Cluster IPs 1   |  Pod zum Kubernetes-API-Server  | 
|  HTTPS  |  TCP  |  Ausgehend  |  443  |  Fern-Knoten-CIDR(s)  |   [SSM-Service-Endpunkt](https://docs.aws.amazon.com/general/latest/gr/ssm.html)   |  Aktualisierung der Anmeldeinformationen für SSM-Hybridaktivierungen und SSM-Heartbeats alle 5 Minuten  | 
|  HTTPS  |  TCP  |  Ausgehend  |  443  |  Fern-Knoten-CIDR(s)  |   [IAM-Anywhere-Service-Endpunkt](https://docs.aws.amazon.com/general/latest/gr/rolesanywhere.html)   |  Aktualisierung der Anmeldeinformationen für IAM Roles Anywhere  | 
|  HTTPS  |  TCP  |  Ausgehend  |  443  |  Fern-Pod-CIDR(s)  |   [Regionales STS-Endpunkt](https://docs.aws.amazon.com/general/latest/gr/sts.html)   |  Pod zum STS-Endpunkt, nur für IRSA erforderlich  | 
|  HTTPS  |  TCP  |  Ausgehend  |  443  |  Fern-Knoten-CIDR(s)  |   [Service-Endpunk für Amazon EKS Auth](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |  Knoten zum Amazon-EKS-Auth-Endpunkt, nur für Amazon EKS Pod Identity erforderlich  | 
|  HTTPS  |  TCP  |  Eingehend  |  10250  |  EKS-Cluster IPs 1   |  Fern-Knoten-CIDR(s)  |  Kubernetes-API-Server zu Kubelet  | 
|  HTTPS  |  TCP  |  Eingehend  |  Webhook-Ports  |  EKS-Cluster IPs 1   |  Fern-Pod-CIDR(s)  |  Kubernetes-API-Server zu Webhooks  | 
|  HTTPS  |  TCP, UDP  |  Eingehend, ausgehend  |  53  |  Fern-Pod-CIDR(s)  |  Fern-Pod-CIDR(s)  |  Pod zu CoreDNS. Wenn Sie mindestens eine Replik von CoreDNS in der Cloud ausführen, müssen Sie DNS-Datenverkehr zum VPC zulassen, auf dem CoreDNS ausgeführt wird.  | 
|  Benutzerdefiniert  |  Benutzerdefiniert  |  Eingehend, ausgehend  |  App-Ports  |  Fern-Pod-CIDR(s)  |  Fern-Pod-CIDR(s)  |  Pod zu Pod  | 

**Anmerkung**  
 1 Der IPs des EKS-Clusters. Weitere Informationen finden Sie im folgenden Abschnitt zu elastischen Netzwerkschnittstellen von Amazon EKS.

### Amazon-EKS-Netzwerkschnittstellen
<a name="hybrid-nodes-networking-eks-network-interfaces"></a>

Amazon EKS fügt Netzwerkschnittstellen an die Subnetze in der VPC an, die Sie bei der Cluster-Erstellung übergeben, um die Kommunikation zwischen der EKS-Steuerebene und Ihrer VPC zu ermöglichen. Die Netzwerkschnittstellen, die Amazon EKS erstellt, finden Sie nach der Cluster-Erstellung in der Amazon EC2 EC2-Konsole oder mit der AWS CLI. Die ursprünglichen Netzwerkschnittstellen werden gelöscht und neue Netzwerkschnittstellen erstellt, wenn Änderungen an Ihrem EKS-Cluster vorgenommen werden, z. B. Upgrades der Kubernetes-Version. Sie können den IP-Bereich für die Amazon EKS-Netzwerkschnittstellen einschränken, indem Sie eingeschränkte Subnetzgrößen für die Subnetze verwenden, die Sie bei der Clustererstellung passieren. Dies macht es einfacher, Ihre lokale Firewall so zu konfigurieren, dass inbound/outbound Konnektivität zu dieser bekannten, eingeschränkten Gruppe von Verbindungen möglich ist. IPs Um zu steuern, in welchen Subnetzen Netzwerkschnittstellen erstellt werden, können Sie die Anzahl der Subnetze begrenzen, die Sie beim Erstellen eines Clusters angeben, oder Sie können die Subnetze nach dem Erstellen des Clusters aktualisieren.

Die von Amazon EKS bereitgestellten Netzwerkschnittstellen verfügen über eine Beschreibung im Format `Amazon EKS your-cluster-name `. Im folgenden Beispiel finden Sie einen AWS CLI-Befehl, mit dem Sie die IP-Adressen der Netzwerkschnittstellen ermitteln können, die Amazon EKS bereitstellt. Ersetzen Sie `VPC_ID` durch die ID der VPC, die Sie bei der Cluster-Erstellung übergeben haben.

```
aws ec2 describe-network-interfaces \
--query 'NetworkInterfaces[?(VpcId == VPC_ID && contains(Description,Amazon EKS))].PrivateIpAddress'
```

## AWS VPC- und Subnetz-Setup
<a name="hybrid-nodes-networking-vpc"></a>

Die vorhandenen [VPC- und Subnetz-Anforderungen](network-reqs.md) für Amazon EKS gelten für Cluster mit Hybridknoten. Darüber hinaus darf sich Ihr VPC-CIDR nicht mit Ihrem lokalen Knoten und Pod überschneiden. CIDRs Sie müssen Routen in Ihrer VPC-Routingtabelle für Ihren lokalen Knoten und optional den Pod konfigurieren. CIDRs Diese Routen müssen so eingerichtet werden, dass der Datenverkehr an das Gateway weitergeleitet wird, das Sie für Ihre Hybridnetzwerkkonnektivität verwenden. Dabei handelt es sich üblicherweise um ein Virtual Private Gateway (VGW) oder ein Transit Gateway (TGW). Wenn Sie TGW oder VGW verwenden, um Ihre VPC mit Ihrer On-Premises-Umgebung zu verbinden, müssen Sie eine TGW- oder VGW-Anbindung für Ihre VPC erstellen. Ihre VPC muss DNS-Hostnamen und die DNS-Auflösung unterstützen.

Die folgenden Schritte verwenden die AWS CLI. Sie können diese Ressourcen auch in AWS-Managementkonsole oder mit anderen Schnittstellen wie AWS CloudFormation AWS CDK oder Terraform erstellen.

### Schritt 1: VPC erstellen
<a name="_step_1_create_vpc"></a>

1. Führen Sie den folgenden Befehl aus, um eine VPC zu erstellen. Ersetzen Sie VPC\$1CIDR durch einen IPv4 CIDR-Bereich, der entweder RFC 1918 (privat), CGNAT (RFC 6598) oder nicht RFC 1918/Non-CGNAT (öffentlich) ist (z. B. 10.0.0.0/16). Hinweis: Die DNS-Auflösung, eine EKS-Anforderung, ist für die VPC standardmäßig aktiviert.

   ```
   aws ec2 create-vpc --cidr-block VPC_CIDR
   ```

1. Aktivieren Sie DNS-Host-Namen für Ihre VPC. Beachten Sie, dass die DNS-Auflösung für die VPC standardmäßig aktiviert ist. Ersetzen Sie `VPC_ID` durch die ID der VPC, die Sie im vorherigen Schritt erstellt haben.

   ```
   aws ec2 modify-vpc-attribute --vpc-id VPC_ID --enable-dns-hostnames
   ```

### Schritt 2: Subnetze erstellen
<a name="_step_2_create_subnets"></a>

Erstellen Sie mindestens 2 Subnetze. Amazon EKS verwendet diese Subnetze für die Cluster-Netzwerkschnittstellen. Weitere Informationen finden Sie unter [Anforderungen und Überlegungen zu Subnetzen](network-reqs.md#network-requirements-subnets).

1. Sie können die AWS Availability Zones für eine Region mit dem folgenden Befehl finden. Ersetzen Sie `us-west-2` durch Ihre Region.

   ```
   aws ec2 describe-availability-zones \
        --query 'AvailabilityZones[?(RegionName == us-west-2)].ZoneName'
   ```

1. Erstellen Sie ein Subnetz. Ersetzen Sie `VPC_ID` durch die ID der VPC. Ersetzen Sie `SUBNET_CIDR` durch den CIDR-Block für Ihr Subnetz (z. B. 10.0.1.0/24 ). Ersetzen Sie `AZ` durch die Availability Zone, in der das Subnetz erstellt werden soll (z. B. „us-west-2a“). Die von Ihnen erstellten Subnetze müssen sich in mindestens zwei verschiedenen Availability Zones befinden.

   ```
   aws ec2 create-subnet \
       --vpc-id VPC_ID \
       --cidr-block SUBNET_CIDR \
       --availability-zone AZ
   ```

### (Optional) Schritt 3: Verbinden Sie VPC mit Amazon VPC Transit Gateway (TGW) oder AWS Direct Connect Virtual Private Gateway (VGW)
<a name="optional_step_3_attach_vpc_with_amazon_vpc_transit_gateway_tgw_or_shared_aws_direct_connect_virtual_private_gateway_vgw"></a>

Wenn Sie ein TGW oder VGW verwenden, fügen Sie Ihr VPC an das TGW oder VGW an. Weitere Informationen finden Sie unter [Amazon-VPC-Anhänge in Amazon VPC Transit Gateways](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpc-attachments.html) oder [Zuordnungen von AWS Direct Connect Virtual Private Gateway](https://docs.aws.amazon.com/vpn/latest/s2svpn/how_it_works.html#VPNGateway).

 **Transit-Gateway** 

Führen Sie den folgenden Befehl aus, um ein Transit Gateway anzufügen. Ersetzen Sie `VPC_ID` durch die ID der VPC. Ersetzen Sie `SUBNET_ID1` und `SUBNET_ID2` durch die Subnetze, IDs die Sie im vorherigen Schritt erstellt haben. Ersetzen Sie `TGW_ID` durch die ID Ihres TGW.

```
aws ec2 create-transit-gateway-vpc-attachment \
    --vpc-id VPC_ID \
    --subnet-ids SUBNET_ID1 SUBNET_ID2 \
    --transit-gateway-id TGW_ID
```

 **Virtuelles privates Gateway** 

Führen Sie den folgenden Befehl aus, um ein Transit Gateway anzufügen. Ersetzen Sie `VPN_ID` durch die ID Ihres VGW. Ersetzen Sie `VPC_ID` durch die ID der VPC.

```
aws ec2 attach-vpn-gateway \
    --vpn-gateway-id VPN_ID \
    --vpc-id VPC_ID
```

### (Optional) Schritt 4: Routing-Tabelle erstellen
<a name="_optional_step_4_create_route_table"></a>

Sie können die Haupt-Routing-Tabelle für die VPC ändern oder eine benutzerdefinierte Routing-Tabelle erstellen. Mit den folgenden Schritten wird eine benutzerdefinierte Routentabelle mit den Routen zum lokalen Knoten und Pod CIDRs erstellt. Weitere Informationen finden Sie unter [Subnetz-Routing-Tabellen](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-route-tables.html). Ersetzen Sie `VPC_ID` durch die ID der VPC.

```
aws ec2 create-route-table --vpc-id VPC_ID
```

### Schritt 5: Routen für On-Premises-Knoten und -Pods erstellen
<a name="_step_5_create_routes_for_on_premises_nodes_and_pods"></a>

Erstellen Sie Routen in der Routing-Tabelle für jeden Ihrer On-Premises-Fern-Knoten. Sie können die Haupt-Routing-Tabelle für die VPC ändern oder die benutzerdefinierte Routing-Tabelle verwenden, die Sie im vorherigen Schritt erstellt haben.

Die folgenden Beispiele zeigen, wie Sie Routen für Ihren lokalen Knoten und Pod erstellen. CIDRs In den Beispielen wird ein Transit Gateway (TGW) verwendet, um die VPC mit der On-Premises-Umgebung zu verbinden. Wenn Sie mehrere lokale Knoten und Pods haben CIDRs, wiederholen Sie die Schritte für jeden CIDR.
+ Wenn Sie ein Internet-Gateway oder ein Virtual Private Gateway (VGW) verwenden, ersetzen Sie `--transit-gateway-id` durch `--gateway-id`.
+ Ersetzen Sie `RT_ID` durch die ID der Routing-Tabelle, die Sie im vorherigen Schritt erstellt haben.
+ Ersetzen Sie `REMOTE_NODE_CIDR` durch den CIDR-Bereich, den Sie für Ihre Hybridknoten verwenden werden.
+ Ersetzen Sie `REMOTE_POD_CIDR` durch den CIDR-Bereich, den Sie für die auf Hybridknoten ausgeführten Pods verwenden. Der Pod-CIDR-Bereich entspricht der Container Networking Interface (CNI)-Konfiguration, die in der Regel ein Überlagerungsnetzwerk On-Premises verwendet. Weitere Informationen finden Sie unter [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md).
+ Ersetzen Sie `TGW_ID` durch die ID Ihres TGW.

 **Fern-Knoten-Netzwerk** 

```
aws ec2 create-route \
    --route-table-id RT_ID \
    --destination-cidr-block REMOTE_NODE_CIDR \
    --transit-gateway-id TGW_ID
```

 **Fern-Pod-Netzwerk** 

```
aws ec2 create-route \
    --route-table-id RT_ID \
    --destination-cidr-block REMOTE_POD_CIDR \
    --transit-gateway-id TGW_ID
```

### (Optional) Schritt 6: Subnetze der Routing-Tabelle zuordnen
<a name="_optional_step_6_associate_subnets_with_route_table"></a>

Wenn Sie im vorherigen Schritt eine benutzerdefinierte Routing-Tabelle erstellt haben, ordnen Sie jede der im vorherigen Schritt erstellten Subnetze Ihrer benutzerdefinierten Routing-Tabelle zu. Wenn Sie die VPC-Haupt-Routing-Tabelle ändern, werden die Subnetze automatisch der Haupt-Routing-Tabelle der VPC zugeordnet, und Sie können diesen Schritt überspringen.

Führen Sie den folgenden Befehl für jedes der Subnetze aus, die Sie in den vorherigen Schritten erstellt haben. Ersetzen Sie `RT_ID` durch die Routing-Tabelle, die Sie im vorherigen Schritt erstellt haben. Ersetzen Sie `SUBNET_ID` durch die ID eines Subnetzes.

```
aws ec2 associate-route-table --route-table-id RT_ID --subnet-id SUBNET_ID
```

## Konfiguration der Cluster-Sicherheitsgruppe
<a name="hybrid-nodes-networking-cluster-sg"></a>

Für den fortlaufenden Cluster-Betrieb ist der folgende Zugriff für Ihre EKS-Cluster-Sicherheitsgruppe erforderlich. Amazon EKS erstellt automatisch die erforderlichen Regeln für **eingehende** Sicherheitsgruppen für Hybridknoten, wenn Sie Ihren Cluster mit konfigurierten Fern-Knoten- und Pod-Netzwerken erstellen oder aktualisieren. Da Sicherheitsgruppen standardmäßig den gesamten **ausgehenden** Datenverkehr zulassen, ändert Amazon EKS die **ausgehenden** Regeln der Cluster-Sicherheitsgruppe für Hybridknoten nicht automatisch. Wenn Sie die Cluster-Sicherheitsgruppe anpassen möchten, können Sie den Datenverkehr auf die Regeln in der folgenden Tabelle beschränken.


| Typ | Protocol (Protokoll) | Richtung | Port | Quelle | Ziel | Usage | 
| --- | --- | --- | --- | --- | --- | --- | 
|  HTTPS  |  TCP  |  Eingehend  |  443  |  Fern-Knoten-CIDR(s)  |  –  |  Kubelet zum Kubernetes API-Server  | 
|  HTTPS  |  TCP  |  Eingehend  |  443  |  Fern-Pod-CIDR(s)  |  –  |  Pods, die Zugriff auf den K8s-API-Server erfordern, wenn das CNI kein NAT für den Pod-Datenverkehr verwendet.  | 
|  HTTPS  |  TCP  |  Ausgehend  |  10250  |  –  |  Fern-Knoten-CIDR(s)  |  Kubernetes-API-Server zu Kubelet  | 
|  HTTPS  |  TCP  |  Ausgehend  |  Webhook-Ports  |  –  |  Fern-Pod-CIDR(s)  |  Kubernetes-API-Server zum Webhook (beim Ausführen von Webhooks in Hybridknoten)  | 

**Wichtig**  
 **Beschränkungen für Sicherheitsgruppenregeln**: Amazon-EC2-Sicherheitsgruppen verfügen standardmäßig über maximal 60 eingehende Regeln. Die eingehenden Regeln der Sicherheitsgruppe werden möglicherweise nicht angewendet, wenn die Sicherheitsgruppe Ihres Clusters diese Beschränkung erreicht. In diesem Fall kann es erforderlich sein, die fehlenden eingehenden Regeln manuell hinzuzufügen.  
 **Verantwortung für die Bereinigung von CIDR**: Wenn Sie Fern-Knoten- oder Pod-Netzwerke aus EKS-Clustern entfernen, löscht EKS die entsprechenden Sicherheitsgruppenregeln nicht automatisch. Sie sind dafür verantwortlich, nicht verwendete Fern-Knoten- oder Pod-Netzwerke manuell aus Ihren Sicherheitsgruppenregeln zu entfernen.

Weitere Informationen zu der Cluster-Sicherheitsgruppe, die Amazon EKS erstellt, finden Sie unter [Anforderungen der Amazon-EKS-Sicherheitsgruppe für Cluster anzeigen](sec-group-reqs.md).

### (Optional) Manuelle Konfiguration der Sicherheitsgruppe
<a name="_optional_manual_security_group_configuration"></a>

Sollten Sie zusätzliche Sicherheitsgruppen erstellen oder die automatisch erstellten Regeln ändern müssen, können Sie die folgenden Befehle als Referenz verwenden. Standardmäßig erstellt der folgende Befehl eine Sicherheitsgruppe, die den gesamten ausgehenden Datenverkehr zulässt. Sie können den ausgehenden Zugriff einschränken, sodass nur die oben genannten Regeln gelten. Wenn Sie eine Einschränkung der ausgehenden Regeln in Erwägung ziehen, empfehlen wir Ihnen, alle Ihre Anwendungen und die Pod-Konnektivität gründlich zu testen, bevor Sie Ihre geänderten Regeln auf einen Produktions-Cluster anwenden.
+ Ersetzen Sie im ersten Befehl `SG_NAME` durch einen Namen für Ihre Sicherheitsgruppe
+ Ersetzen Sie im ersten Befehl `VPC_ID` durch die ID der VPC, die Sie im vorherigen Schritt erstellt haben.
+ Ersetzen Sie im zweiten Befehl `SG_ID` durch die ID der Sicherheitsgruppe, die Sie im ersten Befehl erstellt haben
+ Ersetzen Sie im zweiten Befehl `REMOTE_NODE_CIDR` und `REMOTE_POD_CIDR` durch die Werte für Ihre Hybridknoten und Ihr On-Premises-Netzwerk.

```
aws ec2 create-security-group \
    --group-name SG_NAME \
    --description "security group for hybrid nodes" \
    --vpc-id VPC_ID
```

```
aws ec2 authorize-security-group-ingress \
    --group-id SG_ID \
    --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 443, "ToPort": 443, "IpRanges": [{"CidrIp": "REMOTE_NODE_CIDR"}, {"CidrIp": "REMOTE_POD_CIDR"}]}]'
```

# Vorbereitung des Betriebssystems für Hybridknoten
<a name="hybrid-nodes-os"></a>

Bottlerocket, Amazon Linux 2023 (AL2023), Ubuntu und RHEL werden fortlaufend für die Verwendung als Knotenbetriebssystem für Hybridknoten validiert. Bottlerocket wird nur AWS in VMware vSphere-Umgebungen unterstützt. AL2023 ist nicht durch AWS Supportpläne abgedeckt, wenn sie außerhalb von Amazon EC2 ausgeführt werden. AL2023 kann nur in lokalen virtualisierten Umgebungen verwendet werden. Weitere Informationen finden Sie im [Amazon Linux 2023 User Guide](https://docs.aws.amazon.com/linux/al2023/ug/outside-ec2.html). AWS unterstützt die Integration von Hybridknoten mit Ubuntu- und RHEL-Betriebssystemen, bietet jedoch keine Unterstützung für das Betriebssystem selbst.

Sie sind für die Bereitstellung und Verwaltung des Betriebssystems verantwortlich. Wenn Sie Hybridknoten zum ersten Mal testen, ist es am einfachsten, die CLI für Amazon EKS Hybrid Nodes (`nodeadm`) auf einem bereits bereitgestellten Host auszuführen. Für Produktions-Bereitstellungen empfehlen wir, `nodeadm` in Ihre Betriebssystem-Images aufzunehmen und es so zu konfigurieren, dass es als systemd-Service ausgeführt wird, um Hosts beim Host-Startup automatisch mit Amazon-EKS-Clustern zu verbinden. Wenn Sie Bottlerocket als Knotenbetriebssystem auf vSphere verwenden, müssen Sie `nodeadm` nicht verwenden, da Bottlerocket bereits die für Hybridknoten erforderlichen Abhängigkeiten enthält und beim Host-Startup automatisch eine Verbindung mit dem von Ihnen konfigurierten Cluster herstellt.

## Versionskompatibilität
<a name="_version_compatibility"></a>

Die nachfolgende Tabelle enthält die Betriebssystemversionen, die kompatibel und für die Verwendung als Knoten-Betriebssystem für Hybridknoten validiert sind. Wenn Sie andere Betriebssystemvarianten oder Versionen verwenden, die nicht in dieser Tabelle enthalten sind, wird die Kompatibilität von Hybridknoten mit Ihrer Betriebssystemvariante oder -version nicht vom AWS Support abgedeckt. Hybridknoten sind unabhängig von der zugrunde liegenden Infrastruktur und unterstützen x86- und ARM-Architekturen.


| Betriebssystem | Versionen | 
| --- | --- | 
|  Amazon Linux  |  Amazon Linux 2023 (AL2023)  | 
|  Flaschenrakete  |  v1.37.0 und höhere VMware Varianten, auf denen Kubernetes v1.28 und höher ausgeführt wird  | 
|  Ubuntu  |  Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04  | 
|  Red Hat Enterprise Linux  |  RHEL 8, RHEL 9  | 

## Überlegungen zum Betriebssystem
<a name="_operating_system_considerations"></a>

### General
<a name="_general"></a>
+ Die Amazon EKS Hybrid Nodes CLI (`nodeadm`) kann verwendet werden, um die Installation und Konfiguration der Hybridknoten-Komponenten und -Abhängigkeiten zu vereinfachen. Sie können den `nodeadm install`-Prozess während der Erstellung Ihrer Betriebssystem-Image-Pipelines oder zur Laufzeit auf jedem On-Premises-Host ausführen. Weitere Informationen zu den von `nodeadm` installierten Komponenten finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md).
+ Wenn Sie in Ihrer On-Premises-Umgebung einen Proxy für den Internetzugang verwenden, sind zusätzliche Betriebssystemkonfigurationen für die Installations- und Aktualisierungsprozesse erforderlich, um Ihren Paket-Manager für die Verwendung des Proxys zu konfigurieren. Detaillierte Anweisungen finden Sie unter [Konfiguration des Proxys für Hybridknoten](hybrid-nodes-proxy.md).

### Bottlerocket
<a name="_bottlerocket"></a>
+ Die Schritte und Tools zum Verbinden eines Bottlerocket-Knotens unterscheiden sich von den Schritten für andere Betriebssysteme und werden separat in [Hybridknoten mit Bottlerocket verbinden](hybrid-nodes-bottlerocket.md) behandelt, anstatt in den Schritten in [Hybridknoten verbinden](hybrid-nodes-join.md).
+ Die Schritte für Bottlerocket verwenden nicht das CLI-Tool für Hybridknoten, `nodeadm`.
+ Nur VMware Varianten von Bottlerocket Version v1.37.0 und höher werden von EKS Hybrid Nodes unterstützt. VMware Varianten von Bottlerocket sind für die Kubernetes-Versionen v1.28 und höher verfügbar. [Andere Bottlerocket-Varianten](https://bottlerocket.dev/en/os/1.36.x/concepts/variants) werden als Betriebssystem für Hybridknoten nicht unterstützt. HINWEIS: VMware Varianten von Bottlerocket sind nur für die x86\$164-Architektur verfügbar.

### Containerd
<a name="_containerd"></a>
+ Containerd ist die Standard-Container-Laufzeit von Kubernetes und eine Abhängigkeit für Hybridknoten sowie alle Amazon-EKS-Knoten-Rechentypen. Die CLI für Amazon EKS Hybrid Nodes (`nodeadm`) versucht während des `nodeadm install`-Vorgangs, containerd zu installieren. Sie können die containerd-Installation zur `nodeadm install`-Laufzeit mit der Befehlszeilenoption `--containerd-source` konfigurieren. Gültige Optionen sind `none`, `distro` und `docker`. Wenn Sie RHEL verwenden, ist `distro` keine gültige Option und Sie können `nodeadm` entweder so konfigurieren, dass die containerd-Entwicklung aus den Docker-Repos installiert wird. Sie können containerd auch manuell installieren. Wenn Sie AL2 023 oder Ubuntu verwenden, wird containerd `nodeadm` standardmäßig aus der Betriebssystemdistribution installiert. Wenn Sie nicht möchten, dass nodeadm containerd installiert, verwenden Sie die `--containerd-source none`-Option.

### Ubuntu
<a name="_ubuntu"></a>
+ [Wenn Sie Ubuntu 24.04 verwenden, müssen Sie möglicherweise Ihre Version von containerd aktualisieren oder Ihre AppArmor Konfiguration ändern, um einen Fix zu implementieren, mit dem Pods ordnungsgemäß beendet werden können, siehe Ubuntu \$12065423.](https://bugs.launchpad.net/ubuntu/+source/containerd-app/\+bug/2065423) Ein Neustart ist erforderlich, um die Änderungen am Profil zu übernehmen. AppArmor Die neueste Version von Ubuntu 24.04 enthält in ihrem Paket-Manager eine aktualisierte containerd-Version mit der Korrektur (Containerd-Version 1.7.19\$1).

### ARM
<a name="_arm"></a>
+ Wenn Sie ARM-Hardware verwenden, ist ein ARMv8 2.2-kompatibler Prozessor mit der Cryptography Extension (ARMv8.2\$1Crypto) erforderlich, um Version 1.31 und höher des EKS-Kube-Proxy-Add-Ons auszuführen. Alle Raspberry-Pi-Systeme vor dem Raspberry Pi 5 sowie Cortex-A72-basierte Prozessoren erfüllen diese Anforderung nicht. Als vorübergehende Lösung können Sie die Version 1.30 des EKS-kube-proxy-Add-Ons weiterhin verwenden, bis der erweiterte Support im Juli 2026 endet (siehe [Kubernetes-Versions-Kalender](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html)), oder ein benutzerdefiniertes kube-proxy-Image aus dem Upstream verwenden.
+ Die folgende Fehlermeldung im kube-proxy-Protokoll weist auf diese Inkompatibilität hin:

```
Fatal glibc error: This version of Amazon Linux requires a newer ARM64 processor compliant with at least ARM architecture 8.2-a with Cryptographic extensions. On EC2 this is Graviton 2 or later.
```

## Erstellung von Betriebssystem-Images
<a name="_building_operating_system_images"></a>

Amazon EKS bietet [Beispielvorlagen für Packer](https://github.com/aws/eks-hybrid/tree/main/example/packer), mit denen Sie Betriebssystem-Images erstellen können, die `nodeadm` enthalten, und diese so konfigurieren können, dass sie beim Startup des Hosts ausgeführt werden. Dieser Prozess wird empfohlen, um zu vermeiden, dass die Abhängigkeiten der Hybridknoten einzeln auf jedem Host abgerufen werden müssen, und um den Bootstrap-Prozess der Hybridknoten zu automatisieren. Sie können die Beispielvorlagen für Packer mit einem ISO-Image von Ubuntu 22.04, Ubuntu 24.04, RHEL 8 oder RHEL 9 verwenden und Images in den folgenden Formaten ausgeben: OVA, Qcow2 oder raw.

### Voraussetzungen
<a name="_prerequisites"></a>

Bevor Sie die Beispielvorlagen für Packer verwenden können, müssen Sie die folgenden Komponenten auf dem Computer installieren, auf dem Sie Packer ausführen.
+ Packer-Version 1.11.0 oder höher. Anweisungen zur Installation von Packer finden Sie unter [Installation von Packer](https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli) in der Packer-Dokumentation.
+ Beim Erstellen das OVAs VMware vSphere-Plug-in 1.4.0 oder höher
+ Bei Erstellung von `Qcow2`- oder RAW-Images: QEMU-Plugin Version 1.x.

### Festlegen von Umgebungsvariablen
<a name="_set_environment_variables"></a>

Legen Sie vor Ausführung der Packer-Entwicklung die folgenden Umgebungsvariablen auf dem Computer fest, von dem aus Sie Packer ausführen.

 **General** 

Die folgenden Umgebungsvariablen müssen für die Erstellung von Images mit allen Betriebssystemen und Ausgabeformaten festgelegt werden.


| Umgebungsvariable | Typ | Description | 
| --- | --- | --- | 
|  PKR\$1SSH\$1PASSWORD  |  Zeichenfolge  |  Packer verwendet die Variablen `ssh_username` und `ssh_password`, um bei der Bereitstellung per SSH auf den erstellten Rechner zuzugreifen. Dies muss mit den Passwörtern übereinstimmen, die zur Erstellung des ersten Benutzers in den Kickstart- oder Benutzerdatendateien des jeweiligen Betriebssystems verwendet wurden. Der Standardwert ist je nach Betriebssystem „builder“ oder „ubuntu“. Achten Sie bei der Festlegung Ihres Passworts darauf, es in der entsprechenden `ks.cfg`- oder `user-data`-Datei entsprechend anzupassen.  | 
|  ISO\$1URL  |  Zeichenfolge  |  URL der zu verwendenden ISO. Dies kann ein Weblink zum Herunterladen von einem Server oder ein absoluter Pfad zu einer lokalen Datei sein  | 
|  ISO\$1CHECKSUM  |  Zeichenfolge  |  Zugehörige Prüfsumme für die bereitgestellte ISO-Datei.  | 
|  CREDENTIAL\$1PROVIDER  |  Zeichenfolge  |  Anmeldeinformationsanbieter für Hybridknoten. Gültige Werte sind `ssm` (Standard) für SSM-Hybridaktivierungen und für `iam` IAM Roles Anywhere.  | 
|  K8S\$1VERSION  |  Zeichenfolge  |  Kubernetes-Version für Hybridknoten (z. B. `1.31`). Informationen zu den unterstützten Kubernetes-Versionen finden Sie unter [Unterstützte Amazon-EKS-Versionen](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).  | 
|  NODEADM\$1ARCH  |  Zeichenfolge  |  Architektur für `nodeadm install`: Wählen Sie `amd` oder `arm`.  | 

 **RHEL** 

Wenn Sie RHEL verwenden, müssen die folgenden Umgebungsvariablen festgelegt werden.


| Umgebungsvariable | Typ | Description | 
| --- | --- | --- | 
|  RH\$1USERNAME  |  Zeichenfolge  |  Benutzername des RHEL-Abonnement-Managers  | 
|  RH\$1PASSWORD  |  Zeichenfolge  |  Kennwort für den RHEL-Abonnement-Manager  | 
|  RHEL\$1VERSION  |  Zeichenfolge  |  Verwendete Rhel-ISO-Version. Gültige Werte sind `8` oder `9`.  | 

 **Ubuntu ** 

Es sind keine Ubuntu-spezifischen Umgebungsvariablen erforderlich.

 **vSphere** 

Wenn Sie eine VMware vSphere-OVA erstellen, müssen die folgenden Umgebungsvariablen festgelegt werden.


| Umgebungsvariable | Typ | Description | 
| --- | --- | --- | 
|  VSPHERE\$1SERVER  |  Zeichenfolge  |  vSphere-Server-Adresse  | 
|  VSPHERE\$1USER  |  Zeichenfolge  |  vSphere-Benutzername  | 
|  VSPHERE\$1PASSWORD  |  Zeichenfolge  |  vSphere-Kennwort  | 
|  VSPHERE\$1DATACENTER  |  Zeichenfolge  |  Name des vSphere-Rechenzentrums  | 
|  VSPHERE\$1CLUSTER  |  Zeichenfolge  |  vSphere-Cluster-Name  | 
|  VSPHERE\$1DATASTORE  |  Zeichenfolge  |  Name des vSphere-Datenspeichers  | 
|  VSPHERE\$1NETWORK  |  Zeichenfolge  |  vSphere-Netzwerkname  | 
|  VSPHERE\$1OUTPUT\$1FOLDER  |  Zeichenfolge  |  vSphere-Ausgabeordner für die Vorlagen  | 

 **QEMU** 


| Umgebungsvariable | Typ | Description | 
| --- | --- | --- | 
|  PACKER\$1OUTPUT\$1FORMAT  |  Zeichenfolge  |  Ausgabeformat für QEMU-Entwickler. Gültige Werte sind `qcow2` und `raw`.  | 

 **Vorlage validieren** 

Bevor Sie Ihre Entwicklung ausführen, überprüfen Sie Ihre Vorlage mit dem folgenden Befehl, nachdem Sie Ihre Umgebungsvariablen festgelegt haben. Ersetzen Sie `template.pkr.hcl`, falls Sie einen anderen Namen für Ihre Vorlage verwenden.

```
packer validate template.pkr.hcl
```

### Entwicklungs-Images
<a name="_build_images"></a>

Erstellen Sie Ihre Images mit den folgenden Befehlen und verwenden Sie das `-only`-Flag, um das Ziel und das Betriebssystem für Ihre Images anzugeben. Ersetzen Sie `template.pkr.hcl`, falls Sie einen anderen Namen für Ihre Vorlage verwenden.

 **vSphere OVAs** 

**Anmerkung**  
Wenn Sie RHEL mit vSphere verwenden, müssen Sie die Kickstart-Dateien in ein OEMDRV-Image konvertieren und es als ISO zum Booten übergeben. Weitere Informationen finden Sie in der [Packer-Readme-Datei](https://github.com/aws/eks-hybrid/tree/main/example/packer#utilizing-rhel-with-vsphere) im EKS Hybrid Nodes Repository. GitHub 

 **Ubuntu 22.04 OVA** 

```
packer build -only=general-build.vsphere-iso.ubuntu22 template.pkr.hcl
```

 **Ubuntu 24.04 OVA** 

```
packer build -only=general-build.vsphere-iso.ubuntu24 template.pkr.hcl
```

 **RHEL 8 OVA** 

```
packer build -only=general-build.vsphere-iso.rhel8 template.pkr.hcl
```

 **RHEL 9 OVA** 

```
packer build -only=general-build.vsphere-iso.rhel9 template.pkr.hcl
```

 **QEMU** 

**Anmerkung**  
Wenn Sie ein Image für eine bestimmte Host-CPU erstellen, die nicht mit Ihrem Builder-Host übereinstimmt, suchen Sie in der [QEMU](https://www.qemu.org/docs/master/system/qemu-cpu-models.html)-Dokumentation nach dem Namen, der Ihrer Host-CPU entspricht, und verwenden Sie das `-cpu`-Flag mit dem Namen der Host-CPU, wenn Sie die folgenden Befehle ausführen.

 **Ubuntu 22.04 Qcow2 / Raw** 

```
packer build -only=general-build.qemu.ubuntu22 template.pkr.hcl
```

 **Ubuntu 24.04 Qcow2 / Raw** 

```
packer build -only=general-build.qemu.ubuntu24 template.pkr.hcl
```

 **RHEL 8 Qcow2 / Raw** 

```
packer build -only=general-build.qemu.rhel8 template.pkr.hcl
```

 **RHEL 9 Qcow2 / Raw** 

```
packer build -only=general-build.qemu.rhel9 template.pkr.hcl
```

### nodeadm-Konfiguration über Benutzerdaten übergeben
<a name="_pass_nodeadm_configuration_through_user_data"></a>

Sie können die Konfiguration für `nodeadm` in Ihren Benutzerdaten über cloud-init übergeben, um Hybridknoten zu konfigurieren und beim Startup des Hosts automatisch mit Ihrem EKS-Cluster zu verbinden. Im Folgenden finden Sie ein Beispiel dafür, wie Sie dies erreichen können, wenn Sie VMware vSphere als Infrastruktur für Ihre Hybridknoten verwenden.

1. Installieren Sie die `govc` CLI gemäß den Anweisungen in der [Govc-Readme-Datei unter](https://github.com/vmware/govmomi/blob/main/govc/README.md). GitHub

1. Nachdem Sie die Packer-Entwicklung im vorherigen Abschnitt ausgeführt und Ihre Vorlage bereitgestellt haben, können Sie Ihre Vorlage klonen, um mithilfe der folgenden Schritte mehrere verschiedene Knoten zu erstellen. Sie müssen die Vorlage für jede neue VM klonen, die Sie für Hybridknoten erstellen. Ersetzen Sie die Variablen im folgenden Befehl durch die Werte für Ihre Umgebung. Der `VM_NAME` im folgenden Befehl enthaltene Befehl wird als Ihr verwendet`NODE_NAME`, wenn Sie die Namen für Sie VMs über Ihre Datei eingeben. `metadata.yaml`

   ```
   govc vm.clone -vm "/PATH/TO/TEMPLATE" -ds="YOUR_DATASTORE" \
       -on=false -template=false -folder=/FOLDER/TO/SAVE/VM "VM_NAME"
   ```

1. Nachdem Sie die Vorlage für jedes Ihrer neuen geklont haben VMs, erstellen Sie ein `userdata.yaml` und `metadata.yaml` für Ihre. VMs Sie VMs können dasselbe teilen `userdata.yaml` `metadata.yaml` und Sie werden diese in den folgenden Schritten für jede VM einzeln ausfüllen. Die `nodeadm`-Konfiguration wird im `write_files`-Abschnitt Ihres `userdata.yaml` erstellt und definiert. Im folgenden Beispiel werden AWS SSM-Hybrid-Aktivierungen als lokaler Anbieter von Anmeldeinformationen für Hybridknoten verwendet. Weitere Informationen zur `nodeadm`-Konfiguration finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md).

    **userdata.yaml:** 

   ```
   #cloud-config
   users:
     - name: # username for login. Use 'builder' for RHEL or 'ubuntu' for Ubuntu.
       passwd: # password to login. Default is 'builder' for RHEL.
       groups: [adm, cdrom, dip, plugdev, lxd, sudo]
       lock-passwd: false
       sudo: ALL=(ALL) NOPASSWD:ALL
       shell: /bin/bash
   
   write_files:
     - path: /usr/local/bin/nodeConfig.yaml
       permissions: '0644'
       content: |
         apiVersion: node.eks.aws/v1alpha1
         kind: NodeConfig
         spec:
             cluster:
                 name: # Cluster Name
                 region: # AWS region
             hybrid:
                 ssm:
                     activationCode: # Your ssm activation code
                     activationId: # Your ssm activation id
   
   runcmd:
     - /usr/local/bin/nodeadm init -c file:///usr/local/bin/nodeConfig.yaml >> /var/log/nodeadm-init.log 2>&1
   ```

    **metadata.yaml:** 

   Erstellen Sie einen `metadata.yaml` für Ihre Umgebung. Behalten Sie das Variablenformat `"$NODE_NAME"` in der Datei bei, da dieses in einem nachfolgenden Schritt mit Werten gefüllt wird.

   ```
   instance-id: "$NODE_NAME"
   local-hostname: "$NODE_NAME"
   network:
     version: 2
     ethernets:
       nics:
         match:
           name: ens*
         dhcp4: yes
   ```

1. Fügen Sie die `userdata.yaml`- und `metadata.yaml`-Dateien als `gzip+base64`-Zeichenfolgen mit den folgenden Befehlen hinzu. Die folgenden Befehle sollten für jeden Befehl ausgeführt werden, den VMs Sie erstellen. Ersetzen Sie `VM_NAME` durch den Namen der VM, die Sie aktualisieren.

   ```
   export NODE_NAME="VM_NAME"
   export USER_DATA=$(gzip -c9 <userdata.yaml | base64)
   
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata="${USER_DATA}"
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata.encoding=gzip+base64
   
   envsubst '$NODE_NAME' < metadata.yaml > metadata.yaml.tmp
   export METADATA=$(gzip -c9 <metadata.yaml.tmp | base64)
   
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata="${METADATA}"
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata.encoding=gzip+base64
   ```

1. Schalten Sie Ihren neuen ein VMs, der automatisch eine Verbindung zu dem von Ihnen konfigurierten EKS-Cluster herstellen sollte.

   ```
   govc vm.power -on "${NODE_NAME}"
   ```

# Vorbereitung der Anmeldeinformationen für Hybridknoten
<a name="hybrid-nodes-creds"></a>

Amazon EKS-Hybridknoten verwenden temporäre IAM-Anmeldeinformationen, die durch AWS SSM-Hybrid-Aktivierungen oder AWS IAM Roles Anywhere bereitgestellt werden, um sich beim Amazon EKS-Cluster zu authentifizieren. Sie müssen entweder AWS SSM-Hybrid-Aktivierungen oder AWS IAM Roles Anywhere mit der Amazon EKS Hybrid Nodes CLI () verwenden. `nodeadm` Sie sollten nicht sowohl AWS SSM-Hybrid-Aktivierungen als auch IAM-Rollen Anywhere verwenden. AWS Wir empfehlen, AWS SSM-Hybrid-Aktivierungen zu verwenden, wenn Sie nicht über eine bestehende Public Key-Infrastruktur (PKI) mit einer Zertifizierungsstelle (CA) und Zertifikaten für Ihre lokalen Umgebungen verfügen. Wenn Sie bereits über PKI und Zertifikate vor Ort verfügen, verwenden Sie IAM Roles Anywhere. AWS 

## IAM-Rolle für Hybridknoten
<a name="hybrid-nodes-role"></a>

Bevor Sie Hybridknoten mit Ihrem Amazon EKS-Cluster verbinden können, müssen Sie eine IAM-Rolle erstellen, die mit AWS SSM-Hybrid-Aktivierungen oder AWS IAM Roles Anywhere für Ihre Hybridknoten-Anmeldeinformationen verwendet wird. Nach der Clustererstellung verwenden Sie diese Rolle mit einem Amazon EKS-Zugriffseintrag oder `aws-auth` ConfigMap einem Eintrag, um die IAM-Rolle Kubernetes Role-Based Access Control (RBAC) zuzuordnen. Weitere Informationen zum Verknüpfen der IAM-Rolle für Hybridknoten mit Kubernetes RBAC finden Sie unter [Vorbereitung des Cluster-Zugriffs für Hybridknoten](hybrid-nodes-cluster-prep.md).

Die IAM-Rolle für Hybridknoten muss auch über die folgenden Berechtigungen verfügen.
+ Berechtigungen für die Verwendung der `eks:DescribeCluster` Aktion `nodeadm` zum Sammeln von Informationen über den Cluster, mit dem Sie Hybridknoten verbinden möchten. Wenn Sie die `eks:DescribeCluster` Aktion nicht aktivieren, müssen Sie Ihren Kubernetes-API-Endpunkt, das Cluster-CA-Bundle und den IPv4 Service-CIDR in der Knotenkonfiguration übergeben, die Sie an den Befehl übergeben. `nodeadm init`
+ Berechtigungen für `nodeadm` die Verwendung der `eks:ListAccessEntries` Aktion zum Auflisten der Zugriffseinträge auf dem Cluster, mit dem Sie Hybridknoten verbinden möchten. Wenn Sie die `eks:ListAccessEntries` Aktion nicht aktivieren, müssen Sie das `--skip cluster-access-validation` Flag übergeben, wenn Sie den `nodeadm init` Befehl ausführen.
+ [Berechtigungen für das Kubelet zur Verwendung von Container-Images aus Amazon Elastic Container Registry (Amazon ECR), wie in der Amazon-Richtlinie definiert. EC2 ContainerRegistryPullOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryPullOnly.html)
+ Bei Verwendung von AWS SSM: Berechtigungen für `nodeadm init` die Verwendung von AWS SSM-Hybrid-Aktivierungen, wie in der Richtlinie definiert. [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html)
+ Bei Verwendung von AWS SSM: Berechtigungen zur Verwendung der `ssm:DeregisterManagedInstance` Aktion und `ssm:DescribeInstanceInformation` Aktion für `nodeadm uninstall` zum Abmelden von Instanzen.
+ (Optional) Berechtigungen für den Amazon EKS Pod Identity Agent zum Verwenden der Aktion `eks-auth:AssumeRoleForPodIdentity`, um Anmeldeinformationen für Pods abzurufen.

## Richten Sie SSM-Hybrid-Aktivierungen AWS ein
<a name="hybrid-nodes-ssm"></a>

Bevor Sie AWS SSM-Hybrid-Aktivierungen einrichten, müssen Sie eine IAM-Rolle für Hybrid Nodes erstellt und konfiguriert haben. Weitere Informationen finden Sie unter [Erstellung der IAM-Rolle für Hybridknoten](#hybrid-nodes-create-role). Folgen Sie den Anweisungen unter [Hybrid-Aktivierung erstellen, um Knoten bei Systems Manager zu registrieren im AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-activation-managed-nodes.html) Manager-Benutzerhandbuch, um eine AWS SSM-Hybrid-Aktivierung für Ihre Hybridknoten zu erstellen. Der Aktivierungscode und die ID, die Sie erhalten, werden mit `nodeadm` verwendet, wenn Sie Ihre Hosts als Hybridknoten bei Ihrem Amazon-EKS-Cluster registrieren. Sie können zu einem späteren Zeitpunkt auf diesen Schritt zurückkommen, nachdem Sie Ihre Amazon-EKS-Cluster für Hybridknoten erstellt und vorbereitet haben.

**Wichtig**  
Systems Manager übergibt den Aktivierungscode und die ID sofort an die Konsole oder das Befehlsfenster, je nachdem, wie Sie die Aktivierung erstellt haben. Kopieren Sie diese Informationen und speichern Sie sie an einem sicheren Ort. Wenn Sie die Konsole verlassen oder das Befehlsfenster schließen, können diese Informationen verloren gehen. Wenn Sie die Informationen verlieren, müssen Sie eine neue Aktivierung erstellen.

Standardmäßig sind AWS SSM-Hybrid-Aktivierungen 24 Stunden lang aktiv. Alternativ können Sie beim Erstellen Ihrer Hybridaktivierung ein `--expiration-date` im Zeitstempelformat angeben, beispielsweise `2024-08-01T00:00:00`. Wenn Sie AWS SSM als Ihren Anmeldeinformationsanbieter verwenden, ist der Knotenname für Ihre Hybridknoten nicht konfigurierbar und wird automatisch von SSM generiert. AWS Sie können die von AWS SSM verwalteten Instanzen in der AWS Systems Manager-Konsole unter Fleet Manager anzeigen und verwalten. Sie können bis zu 1.000 standardmäßige, [hybridaktivierte Knoten](https://docs.aws.amazon.com/systems-manager/latest/userguide/activations.html) pro Konto und AWS Region ohne zusätzliche Kosten registrieren. Um mehr als 1 000 Hybrid-Knoten zu registrieren, müssen Sie jedoch das Advanced-Instances-Kontingent aktivieren. Für die Nutzung der Stufe „Erweiterte Instances“ wird eine Gebühr erhoben, die nicht in den Preisen für [Amazon EKS Hybrid Nodes pricing](https://aws.amazon.com/eks/pricing/) enthalten ist. Weitere Informationen finden Sie unter [Preise für AWS Systems Manager](https://aws.amazon.com/systems-manager/pricing/).

Im folgenden Beispiel erfahren Sie, wie Sie eine AWS SSM-Hybrid-Aktivierung mit Ihrer IAM-Rolle Hybrid Nodes erstellen. Wenn Sie AWS SSM-Hybrid-Aktivierungen für Ihre Hybridknoten-Anmeldeinformationen verwenden, haben die Namen Ihrer Hybridknoten das gleiche Format `mi-012345678abcdefgh` und die von AWS SSM bereitgestellten temporären Anmeldeinformationen sind 1 Stunde lang gültig. Sie können den Knotennamen oder die Dauer der Anmeldeinformationen nicht ändern, wenn Sie AWS SSM als Ihren Anmeldeinformationsanbieter verwenden. Die temporären Anmeldeinformationen werden von AWS SSM automatisch rotiert, und die Rotation hat keine Auswirkungen auf den Status Ihrer Knoten oder Anwendungen.

Wir empfehlen, dass Sie eine AWS SSM-Hybrid-Aktivierung pro EKS-Cluster verwenden, um die AWS `ssm:DeregisterManagedInstance` SSM-Berechtigungen der IAM-Rolle Hybrid Nodes so festzulegen, dass nur Instances abgemeldet werden können, die mit Ihrer SSM-Hybrid-Aktivierung verknüpft sind. AWS In dem Beispiel auf dieser Seite wird ein Tag mit dem EKS-Cluster-ARN verwendet, das verwendet werden kann, um Ihre AWS SSM-Hybridaktivierung dem EKS-Cluster zuzuordnen. Sie können alternativ Ihr bevorzugtes Tag und Ihre bevorzugte Methode verwenden, um den Umfang der AWS SSM-Berechtigungen auf der Grundlage Ihrer Berechtigungsgrenzen und Anforderungen festzulegen. Die `REGISTRATION_LIMIT` Option im folgenden Befehl ist eine Ganzzahl, die verwendet wird, um die Anzahl der Maschinen zu begrenzen, die die AWS SSM-Hybridaktivierung verwenden können (zum Beispiel) `10`

```
aws ssm create-activation \
     --region AWS_REGION \
     --default-instance-name eks-hybrid-nodes \
     --description "Activation for EKS hybrid nodes" \
     --iam-role AmazonEKSHybridNodesRole \
     --tags Key=EKSClusterARN,Value=arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME \
     --registration-limit REGISTRATION_LIMIT
```

Weitere Informationen [zu den verfügbaren Konfigurationseinstellungen für AWS SSM-Hybrid-Aktivierungen finden Sie in den Anweisungen unter Hybrid-Aktivierung erstellen, um Knoten bei Systems Manager zu registrieren](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-activation-managed-nodes.html).

## Richten Sie AWS IAM-Rollen überall ein
<a name="hybrid-nodes-iam-roles-anywhere"></a>

Befolgen Sie die Anweisungen unter [Erste Schritte mit IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/getting-started.html) im Benutzerhandbuch zu IAM Roles Anywhere, um den Trust Anchor und das Profil einzurichten, die Sie für temporäre IAM-Anmeldeinformationen für Ihre IAM-Rolle für Hybridknoten verwenden werden. Wenn Sie Ihr Profil erstellen, können Sie dies ohne Hinzufügen von Rollen tun. Sie können dieses Profil erstellen, zu diesen Schritten zurückkehren, um Ihre IAM-Rolle für Hybridknoten zu erstellen, und dann Ihre Rolle nach der Erstellung zu Ihrem Profil hinzufügen. Sie können auch die AWS CloudFormation Schritte weiter unten auf dieser Seite verwenden, um Ihr IAM Roles Anywhere-Setup für Hybridknoten abzuschließen.

Wenn Sie Ihrem Profil die IAM-Rolle Hybrid Nodes hinzufügen, wählen Sie im Bereich **Sitzungsname für benutzerdefinierte Rolle unten auf der Seite **Profil bearbeiten** in der AWS IAM Roles Anywhere-Konsole die Option Sitzungsname der **benutzerdefinierten Rolle** akzeptieren** aus. Dies entspricht dem Feld „[acceptRoleSessionName](https://docs.aws.amazon.com/rolesanywhere/latest/APIReference/API_CreateProfile.html#rolesanywhere-CreateProfile-request-acceptRoleSessionName)“ der `CreateProfile` API. Auf diese Weise können Sie in der Konfiguration, die Sie während des Bootstrap-Prozesses an `nodeadm` übergeben, einen benutzerdefinierten Knotennamen für Ihre Hybridknoten angeben. Die Übergabe eines benutzerdefinierten Knotennamens während des `nodeadm init`-Prozesses ist erforderlich. Sie können Ihr Profil aktualisieren, um einen benutzerdefinierten Rollensitzungsnamen zu akzeptieren, nachdem Sie Ihr Profil erstellt haben.

Sie können die Gültigkeitsdauer der Anmeldeinformationen mit AWS IAM Roles Anywhere über das Feld [DurationSeconds](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/authentication-create-session#credentials-object) Ihres AWS IAM Roles Anywhere-Profils konfigurieren. Die Standarddauer beträgt 1 Stunde, maximal 12 Stunden. Die `MaxSessionDuration` Einstellung in Ihrer IAM-Rolle für Hybrid Nodes muss größer sein als die `durationSeconds` Einstellung in Ihrem IAM Roles Anywhere-Profil. AWS Weitere Informationen dazu finden Sie in der `MaxSessionDuration` [UpdateRole API-Dokumentation](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_UpdateRole.html).

Die von Ihrer Zertifizierungsstelle (CA) generierten rechnerspezifischen Zertifikate und Schlüssel müssen in dem `/etc/iam/pki`-Verzeichnis auf jedem Hybridknoten mit den Dateinamen `server.pem` für das Zertifikat und `server.key` für den Schlüssel abgelegt werden.

## Erstellung der IAM-Rolle für Hybridknoten
<a name="hybrid-nodes-create-role"></a>

Um die Schritte in diesem Abschnitt auszuführen, muss der IAM-Principal, der die AWS Konsole oder AWS CLI verwendet, über die folgenden Berechtigungen verfügen.
+  `iam:CreatePolicy` 
+  `iam:CreateRole` 
+  `iam:AttachRolePolicy` 
+ Wenn Sie AWS IAM Roles Anywhere verwenden
  +  `rolesanywhere:CreateTrustAnchor` 
  +  `rolesanywhere:CreateProfile` 
  +  `iam:PassRole` 

### AWS CloudFormation
<a name="hybrid-nodes-creds-cloudformation"></a>

Installieren und konfigurieren Sie die AWS CLI, falls Sie dies noch nicht getan haben. Siehe [Installation oder Aktualisierung auf die letzte Version der AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

 **Schritte für AWS SSM-Hybrid-Aktivierungen** 

Der CloudFormation Stack erstellt die IAM-Rolle Hybrid Nodes mit den oben beschriebenen Berechtigungen. Die CloudFormation Vorlage erstellt die AWS SSM-Hybrid-Aktivierung nicht.

1. Laden Sie die AWS CloudFormation SSM-Vorlage für Hybridknoten herunter:

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-ssm-cfn.yaml'
   ```

1. Erstellen Sie einen `cfn-ssm-parameters.json` mit den folgenden Optionen:

   1. Ersetzen Sie `ROLE_NAME` durch den Namen Ihrer IAM-Rolle für Hybridknoten. Standardmäßig verwendet `AmazonEKSHybridNodesRole` die CloudFormation Vorlage den Namen der Rolle, die sie erstellt, wenn Sie keinen Namen angeben.

   1. `TAG_KEY`Ersetzen Sie es durch den AWS SSM-Ressourcen-Tag-Schlüssel, den Sie bei der Erstellung Ihrer AWS SSM-Hybrid-Aktivierung verwendet haben. Die Kombination aus Tag-Schlüssel und Tag-Wert wird in der Bedingung verwendet, dass nur die IAM-Rolle Hybrid Nodes die Registrierung der mit AWS SSM verwalteten Instanzen, die mit Ihrer SSM-Hybrid-Aktivierung verknüpft sind, aufheben darf. `ssm:DeregisterManagedInstance` AWS In der Vorlage ist der Standardwert CloudFormation . `TAG_KEY` `EKSClusterARN`

   1. `TAG_VALUE`Ersetzen Sie es durch den Wert des AWS SSM-Ressourcen-Tags, den Sie bei der Erstellung Ihrer AWS SSM-Hybrid-Aktivierung verwendet haben. Die Kombination aus Tag-Schlüssel und Tag-Wert wird in der Bedingung verwendet, dass nur die IAM-Rolle Hybrid Nodes die Registrierung der mit AWS SSM verwalteten Instanzen, die mit Ihrer SSM-Hybrid-Aktivierung verknüpft sind, aufheben darf. `ssm:DeregisterManagedInstance` AWS Wenn Sie den Standardwert `TAG_KEY` von `EKSClusterARN` verwenden, übergeben Sie Ihren EKS-Cluster-ARN als `TAG_VALUE`. EKS-Cluster haben das Format. ARNs ` arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME`

      ```
      {
        "Parameters": {
          "RoleName": "ROLE_NAME",
          "SSMDeregisterConditionTagKey": "TAG_KEY",
          "SSMDeregisterConditionTagValue": "TAG_VALUE"
        }
      }
      ```

1. Stellen Sie den CloudFormation Stack bereit. `STACK_NAME`Ersetzen Sie ihn durch Ihren Namen für den CloudFormation Stack.

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --template-file hybrid-ssm-cfn.yaml \
       --parameter-overrides file://cfn-ssm-parameters.json \
       --capabilities CAPABILITY_NAMED_IAM
   ```

 **Schritte für AWS IAM Roles Anywhere** 

Der CloudFormation Stack erstellt den AWS IAM Roles Anywhere-Vertrauensanker mit der von Ihnen konfigurierten Zertifizierungsstelle (CA), erstellt das AWS IAM Roles Anywhere-Profil und erstellt die IAM-Rolle Hybrid Nodes mit den zuvor beschriebenen Berechtigungen.

1. So richten Sie eine Zertifizierungsstelle (CA) ein:

   1. Um eine AWS private CA-Ressource zu verwenden, öffnen Sie die [AWS Private Certificate](https://console.aws.amazon.com/acm-pca/home) Authority-Konsole. Befolgen Sie die Anweisungen im [Benutzerhandbuch der privaten AWS -Zertifizierungsstelle](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html).

   1. Um eine externe Zertifizierungsstelle zu verwenden, befolgen Sie die Anweisungen der Zertifizierungsstelle. Die Zertifizierungsstelle geben Sie in einem späteren Schritt an.

   1. Öffentlich ausgestellte Zertifikate CAs können nicht als Vertrauensanker verwendet werden.

1. Laden Sie die AWS IAM Roles CloudFormation Anywhere-Vorlage für Hybridknoten herunter

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-ira-cfn.yaml'
   ```

1. Erstellen Sie einen `cfn-iamra-parameters.json` mit den folgenden Optionen:

   1. Ersetzen Sie `ROLE_NAME` durch den Namen Ihrer IAM-Rolle für Hybridknoten. Standardmäßig verwendet `AmazonEKSHybridNodesRole` die CloudFormation Vorlage den Namen der Rolle, die sie erstellt, wenn Sie keinen Namen angeben.

   1. Ersetzen Sie `CERT_ATTRIBUTE` durch das rechnerspezifische Zertifikatsattribut, das Ihren Host eindeutig identifiziert. Das von Ihnen verwendete Zertifikatsattribut muss mit dem nodeName übereinstimmen, den Sie für die `nodeadm`-Konfiguration verwenden, wenn Sie Ihrem Cluster Hybridknoten zuordnen. Weitere Informationen hierzu finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md). Standardmäßig verwendet die CloudFormation Vorlage `${aws:PrincipalTag/x509Subject/CN}` as`CERT_ATTRIBUTE`, was dem CN-Feld Ihrer Computerzertifikate entspricht. Alternativ können Sie `$(aws:PrincipalTag/x509SAN/Name/CN}` als `CERT_ATTRIBUTE` übergeben.

   1. Ersetzen Sie `CA_CERT_BODY` durch den Zertifikatstext Ihrer Zertifizierungsstelle ohne Zeilenumbrüche. Das `CA_CERT_BODY` müssen im Privacy Enhanced Mail (PEM)-Format vorliegen. Wenn Sie ein CA-Zertifikat im PEM-Format haben, entfernen Sie die Zeilenumbrüche und die Zeilen BEGIN CERTIFICATE und END CERTIFICATE, bevor Sie den CA-Zertifikatstext in Ihre `cfn-iamra-parameters.json`-Datei einfügen.

      ```
      {
        "Parameters": {
          "RoleName": "ROLE_NAME",
          "CertAttributeTrustPolicy": "CERT_ATTRIBUTE",
          "CABundleCert": "CA_CERT_BODY"
        }
      }
      ```

1. Stellen Sie die CloudFormation Vorlage bereit. `STACK_NAME`Ersetzen Sie es durch Ihren Namen für den CloudFormation Stack.

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --template-file hybrid-ira-cfn.yaml \
       --parameter-overrides file://cfn-iamra-parameters.json
       --capabilities CAPABILITY_NAMED_IAM
   ```

### AWS CLI
<a name="hybrid-nodes-creds-awscli"></a>

Installieren und konfigurieren Sie die AWS CLI, falls Sie dies noch nicht getan haben. Siehe [Installation oder Aktualisierung auf die letzte Version der AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

 **Erstellung einer EKS-Describe-Cluster-Richtlinie** 

1. Erstellen Sie eine Datei `eks-describe-cluster-policy.json` mit dem folgenden Inhalt:

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "eks:DescribeCluster"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. Richtlinie mit dem folgenden Befehl erstellen:

   ```
   aws iam create-policy \
       --policy-name EKSDescribeClusterPolicy \
       --policy-document file://eks-describe-cluster-policy.json
   ```

 **Schritte für AWS SSM-Hybrid-Aktivierungen** 

1. Erstellen Sie eine Datei mit dem Namen `eks-hybrid-ssm-policy.json` und dem folgenden Inhalt. Die Richtlinie gewährt die Berechtigung für zwei Aktionen `ssm:DescribeInstanceInformation` und `ssm:DeregisterManagedInstance`. Die Richtlinie beschränkt die `ssm:DeregisterManagedInstance` Zugriffsrechte auf AWS SSM-verwaltete Instanzen, die mit Ihrer AWS SSM-Hybrid-Aktivierung verknüpft sind, auf der Grundlage des Ressourcen-Tags, das Sie in Ihrer Vertrauensrichtlinie angeben.

   1. Ersetzen Sie es `AWS_REGION` durch die AWS Region für Ihre AWS SSM-Hybrid-Aktivierung.

   1. Ersetzen Sie `AWS_ACCOUNT_ID` durch Ihre AWS Konto-ID.

   1. `TAG_KEY`Ersetzen Sie es durch den AWS SSM-Ressourcen-Tag-Schlüssel, den Sie bei der Erstellung Ihrer AWS SSM-Hybrid-Aktivierung verwendet haben. Die Kombination aus Tag-Schlüssel und Tag-Wert wird in der Bedingung verwendet, dass nur die IAM-Rolle Hybrid Nodes die Registrierung der mit AWS SSM verwalteten Instanzen, die mit Ihrer SSM-Hybrid-Aktivierung verknüpft sind, aufheben darf. `ssm:DeregisterManagedInstance` AWS In der Vorlage ist der Standardwert CloudFormation . `TAG_KEY` `EKSClusterARN`

   1. `TAG_VALUE`Ersetzen Sie es durch den Wert des AWS SSM-Ressourcen-Tags, den Sie bei der Erstellung Ihrer AWS SSM-Hybrid-Aktivierung verwendet haben. Die Kombination aus Tag-Schlüssel und Tag-Wert wird in der Bedingung verwendet, dass nur die IAM-Rolle Hybrid Nodes die Registrierung der mit AWS SSM verwalteten Instanzen, die mit Ihrer SSM-Hybrid-Aktivierung verknüpft sind, aufheben darf. `ssm:DeregisterManagedInstance` AWS Wenn Sie den Standardwert `TAG_KEY` von `EKSClusterARN` verwenden, übergeben Sie Ihren EKS-Cluster-ARN als `TAG_VALUE`. EKS-Cluster haben das Format. ARNs ` arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME`

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": "ssm:DescribeInstanceInformation",
                  "Resource": "*"
              },
              {
                  "Effect": "Allow",
                  "Action": "ssm:DeregisterManagedInstance",
                  "Resource": "arn:aws:ssm:us-east-1:123456789012:managed-instance/*",
                  "Condition": {
                      "StringEquals": {
                          "ssm:resourceTag/TAG_KEY": "TAG_VALUE"
                      }
                  }
              }
          ]
      }
      ```

1. Richtlinie mit dem folgenden Befehl erstellen

   ```
   aws iam create-policy \
       --policy-name EKSHybridSSMPolicy \
       --policy-document file://eks-hybrid-ssm-policy.json
   ```

1. Erstellen Sie eine Datei namens `eks-hybrid-ssm-trust.json`. `AWS_REGION`Ersetzen Sie es durch die AWS Region Ihrer AWS SSM-Hybrid-Aktivierung und `AWS_ACCOUNT_ID` durch Ihre AWS Konto-ID.

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Sid":"",
            "Effect":"Allow",
            "Principal":{
               "Service":"ssm.amazonaws.com"
            },
            "Action":"sts:AssumeRole",
            "Condition":{
               "StringEquals":{
                  "aws:SourceAccount":"123456789012"
               },
               "ArnEquals":{
                  "aws:SourceArn":"arn:aws:ssm:us-east-1:123456789012:*"
               }
            }
         }
      ]
   }
   ```

1. Erstellen Sie die Rolle mit dem folgenden Befehl.

   ```
   aws iam create-role \
       --role-name AmazonEKSHybridNodesRole \
       --assume-role-policy-document file://eks-hybrid-ssm-trust.json
   ```

1. Fügen Sie `EKSDescribeClusterPolicy` und `EKSHybridSSMPolicy` an, die Sie in den vorherigen Schritten erstellt haben. Ersetzen Sie es `AWS_ACCOUNT_ID` durch Ihre AWS Konto-ID.

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSDescribeClusterPolicy
   ```

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSHybridSSMPolicy
   ```

1. Hängen Sie die `AmazonEC2ContainerRegistryPullOnly` und die `AmazonSSMManagedInstanceCore` AWS verwalteten Richtlinien an.

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
   ```

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
   ```

 **Schritte für AWS IAM Roles Anywhere** 

Um AWS IAM Roles Anywhere verwenden zu können, müssen Sie Ihren AWS IAM Roles Anywhere-Vertrauensanker einrichten, bevor Sie die IAM-Rolle Hybrid Nodes erstellen. Detaillierte Anweisungen finden Sie unter [Richten Sie AWS IAM-Rollen überall ein](#hybrid-nodes-iam-roles-anywhere).

1. Erstellen Sie eine Datei namens `eks-hybrid-iamra-trust.json`. Ersetzen Sie `TRUST_ANCHOR ARN` durch die ARN des Trust Anchors, den Sie in den [Richten Sie AWS IAM-Rollen überall ein](#hybrid-nodes-iam-roles-anywhere)-Schritten erstellt haben. Die Bedingung in dieser Vertrauensrichtlinie schränkt die Fähigkeit von AWS IAM Roles Anywhere ein, die IAM-Rolle Hybrid Nodes zum Austausch temporärer IAM-Anmeldeinformationen nur dann anzunehmen, wenn der Name der Rollensitzung mit der CN im x509-Zertifikat übereinstimmt, das auf Ihren Hybridknoten installiert ist. Alternativ können Sie auch andere Zertifikatsattribute verwenden, um Ihren Knoten eindeutig zu identifizieren. Das Zertifikatattribut, das Sie in der Vertrauensrichtlinie verwenden, muss dem `nodeName` entsprechen, das Sie in Ihrer `nodeadm`-Konfiguration festgelegt haben. Weitere Informationen hierzu finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md).

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rolesanywhere.amazonaws.com"
               },
               "Action": [
                   "sts:TagSession",
                   "sts:SetSourceIdentity"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rolesanywhere.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}",
                       "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                   }
               }
           }
       ]
   }
   ```

1. Erstellen Sie die Rolle mit dem folgenden Befehl.

   ```
   aws iam create-role \
       --role-name AmazonEKSHybridNodesRole \
       --assume-role-policy-document file://eks-hybrid-iamra-trust.json
   ```

1. Fügen Sie die `EKSDescribeClusterPolicy` an, die Sie in den vorherigen Schritten erstellt haben. Ersetzen Sie `AWS_ACCOUNT_ID` es durch Ihre Konto-ID. AWS 

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSDescribeClusterPolicy
   ```

1. Hängen Sie die `AmazonEC2ContainerRegistryPullOnly` AWS verwaltete Richtlinie an

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
   ```

### AWS-Managementkonsole
<a name="hybrid-nodes-creds-console"></a>

 **Erstellung einer EKS-Describe-Cluster-Richtlinie** 

1. [Amazon-IAM-Konsole](https://console.aws.amazon.com/iam/home) öffnen 

1. Wählen Sie im linken Navigationsbereich die Option **Policies** aus.

1. Wählen Sie auf der Seite **Richtlinien** die Option **Richtlinie erstellen**.

1. Wählen Sie auf der Seite „Berechtigungen festlegen“ im Bereich „Service auswählen“ die Option „EKS“ aus.

   1. Filtern Sie Aktionen nach **DescribeCluster**und wählen Sie die Aktion **DescribeCluster**Lesen aus.

   1. Wählen Sie **Weiter** aus.

1. Auf der Seite **Überprüfen und erstellen**

   1. Geben Sie einen **Richtlinien-Namen** ein, beispielsweise `EKSDescribeClusterPolicy`.

   1. Wählen Sie **Richtlinie erstellen** aus.

 **Schritte für AWS SSM-Hybrid-Aktivierungen** 

1. [Amazon-IAM-Konsole](https://console.aws.amazon.com/iam/home) öffnen 

1. Wählen Sie im linken Navigationsbereich die Option **Policies** aus.

1. Wählen Sie auf der Seite **Richtlinien** die Option **Richtlinie erstellen**.

1. Wählen Sie auf der Seite **Berechtigungen angeben** in der Navigationsleiste oben rechts im **Richtlinien-Editor** die Option **JSON** aus. Fügen Sie den folgenden Ausschnitt ein. `AWS_REGION`Ersetzen Sie es durch die AWS Region Ihrer AWS SSM-Hybrid-Aktivierung und `AWS_ACCOUNT_ID` ersetzen Sie es durch Ihre AWS Konto-ID. Ersetzen Sie `TAG_KEY` und `TAG_VALUE` durch den AWS SSM-Ressourcen-Tag-Schlüssel, den Sie bei der Erstellung Ihrer AWS SSM-Hybrid-Aktivierung verwendet haben.

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "ssm:DescribeInstanceInformation",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "ssm:DeregisterManagedInstance",
               "Resource": "arn:aws:ssm:us-east-1:123456789012:managed-instance/*",
               "Condition": {
                   "StringEquals": {
                       "ssm:resourceTag/TAG_KEY": "TAG_VALUE"
                   }
               }
           }
       ]
   }
   ```

   1. Wählen Sie **Weiter** aus.

1. Auf der Seite **Überprüfen und erstellen**.

   1. Geben Sie einen **Richtlinien-Namen** für Ihre Richtlinie ein, beispielsweise `EKSHybridSSMPolicy`. 

   1. Wählen Sie **Richtlinie erstellen** aus.

1. Wählen Sie im linken Navigationsbereich **Roles** aus.

1. Klicken Sie auf der Seite **Roles (Rollen)** auf **Create role (Rolle erstellen)**.

1. Gehen Sie auf der Seite **Select trusted entity** (Vertrauenswürdige Entität auswählen) wie folgt vor:

   1. Wählen Sie unter Abschnittstyp **Vertrauenswürdiger Entität** die Option **Benutzerdefinierte Vertrauensrichtlinie** aus. Fügen Sie Folgendes in den Editor für benutzerdefinierte Vertrauensrichtlinien ein. `AWS_REGION`Ersetzen Sie es durch die AWS Region Ihrer AWS SSM-Hybrid-Aktivierung und durch Ihre `AWS_ACCOUNT_ID` AWS Konto-ID.

      ```
      {
         "Version":"2012-10-17",		 	 	 
         "Statement":[
            {
               "Sid":"",
               "Effect":"Allow",
               "Principal":{
                  "Service":"ssm.amazonaws.com"
               },
               "Action":"sts:AssumeRole",
               "Condition":{
                  "StringEquals":{
                     "aws:SourceAccount":"123456789012"
                  },
                  "ArnEquals":{
                     "aws:SourceArn":"arn:aws:ssm:us-east-1:123456789012:*"
                  }
               }
            }
         ]
      }
      ```

   1. Wählen Sie Weiter aus.

1. Führen Sie auf der Seite **Add permissions** (Berechtigungen hinzufügen) die folgenden Schritte aus:

   1. Geben Sie im Feld **Filterrichtlinien** `EKSDescribeClusterPolicy` oder den Namen der oben erstellten Richtlinie ein. Aktivieren Sie in den Suchergebnissen das Kontrollkästchen links neben dem Namen Ihrer Richtlinie.

   1. Geben Sie im Feld **Filterrichtlinien** `EKSHybridSSMPolicy` oder den Namen der oben erstellten Richtlinie ein. Aktivieren Sie in den Suchergebnissen das Kontrollkästchen links neben dem Namen Ihrer Richtlinie.

   1. Geben Sie im Feld **Filter policies (Filterrichtlinien)** `AmazonEC2ContainerRegistryPullOnly` ein. Aktivieren Sie in den Suchergebnissen das Kontrollkästchen links neben `AmazonEC2ContainerRegistryPullOnly`.

   1. Geben Sie im Feld **Filter policies (Filterrichtlinien)** `AmazonSSMManagedInstanceCore` ein. Aktivieren Sie in den Suchergebnissen das Kontrollkästchen links neben `AmazonSSMManagedInstanceCore`.

   1. Wählen Sie **Weiter** aus.

1. Gehen Sie auf der Seite **Name, review, and create** (Benennen, überprüfen und erstellen) wie folgt vor:

   1. Geben Sie unter **Role name** (Rollenname) einen eindeutigen Namen für die Rolle ein, z. B. `AmazonEKSHybridNodesRole`.

   1. Ersetzen Sie unter **Description** (Beschreibung) den aktuellen Text durch beschreibenden Text wie beispielsweise `Amazon EKS - Hybrid Nodes role`.

   1. Wählen Sie **Rolle erstellen** aus.

 **Schritte für AWS IAM Roles Anywhere** 

Um AWS IAM Roles Anywhere verwenden zu können, müssen Sie Ihren AWS IAM Roles Anywhere-Vertrauensanker einrichten, bevor Sie die IAM-Rolle Hybrid Nodes erstellen. Detaillierte Anweisungen finden Sie unter [Richten Sie AWS IAM-Rollen überall ein](#hybrid-nodes-iam-roles-anywhere).

1. [Amazon-IAM-Konsole](https://console.aws.amazon.com/iam/home) öffnen 

1. Wählen Sie im linken Navigationsbereich **Roles** aus.

1. Klicken Sie auf der Seite **Roles (Rollen)** auf **Create role (Rolle erstellen)**.

1. Gehen Sie auf der Seite **Select trusted entity** (Vertrauenswürdige Entität auswählen) wie folgt vor:

   1. Wählen Sie unter Abschnittstyp **Vertrauenswürdiger Entität** die Option **Benutzerdefinierte Vertrauensrichtlinie** aus. Fügen Sie Folgendes in den Editor für benutzerdefinierte Vertrauensrichtlinien ein. Ersetzen Sie `TRUST_ANCHOR ARN` durch die ARN des Trust Anchors, den Sie in den [Richten Sie AWS IAM-Rollen überall ein](#hybrid-nodes-iam-roles-anywhere)-Schritten erstellt haben. Die Bedingung in dieser Vertrauensrichtlinie schränkt die Fähigkeit von AWS IAM Roles Anywhere ein, die IAM-Rolle Hybrid Nodes zum Austausch temporärer IAM-Anmeldeinformationen nur dann anzunehmen, wenn der Name der Rollensitzung mit der CN im x509-Zertifikat übereinstimmt, das auf Ihren Hybridknoten installiert ist. Alternativ können Sie auch andere Zertifikatsattribute verwenden, um Ihren Knoten eindeutig zu identifizieren. Das Zertifikatattribut, das Sie in der Vertrauensrichtlinie verwenden, muss dem Knotennamen entsprechen, den Sie in Ihrer nodeadm-Konfiguration festgelegt haben. Weitere Informationen hierzu finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md).

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "rolesanywhere.amazonaws.com"
                  },
                  "Action": [
                      "sts:TagSession",
                      "sts:SetSourceIdentity"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                      },
                      "ArnEquals": {
                          "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                      }
                  }
              },
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "rolesanywhere.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                          "sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}",
                          "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                      },
                      "ArnEquals": {
                          "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                      }
                  }
              }
          ]
      }
      ```

   1. Wählen Sie Weiter aus.

1. Führen Sie auf der Seite **Add permissions** (Berechtigungen hinzufügen) die folgenden Schritte aus:

   1. Geben Sie im Feld **Filterrichtlinien** `EKSDescribeClusterPolicy` oder den Namen der oben erstellten Richtlinie ein. Aktivieren Sie in den Suchergebnissen das Kontrollkästchen links neben dem Namen Ihrer Richtlinie.

   1. Geben Sie im Feld **Filter policies (Filterrichtlinien)** `AmazonEC2ContainerRegistryPullOnly` ein. Aktivieren Sie in den Suchergebnissen das Kontrollkästchen links neben `AmazonEC2ContainerRegistryPullOnly`.

   1. Wählen Sie **Weiter** aus.

1. Gehen Sie auf der Seite **Name, review, and create** (Benennen, überprüfen und erstellen) wie folgt vor:

   1. Geben Sie unter **Role name** (Rollenname) einen eindeutigen Namen für die Rolle ein, z. B. `AmazonEKSHybridNodesRole`.

   1. Ersetzen Sie unter **Description** (Beschreibung) den aktuellen Text durch beschreibenden Text wie beispielsweise `Amazon EKS - Hybrid Nodes role`.

   1. Wählen Sie **Rolle erstellen** aus.

# Einen Amazon-EKS-Cluster mit Hybridknoten erstellen
<a name="hybrid-nodes-cluster-create"></a>

Dieses Thema bietet einen Überblick über die verfügbaren Optionen und beschreibt, was bei der Erstellung eines Hybridknoten-fähigen Amazon-EKS-Clusters zu beachten ist. EKS-Hybridknoten bieten denselben [Support für Kubernetes-Versionen](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) wie Amazon-EKS-Cluster mit Cloud-Knoten, einschließlich Standard- und erweiterten Support

Wenn Sie nicht vorhaben, EKS-Hybridknoten zu verwenden, lesen Sie die primäre Amazon-EKS-Dokumentation zum Erstellen von Clustern unter [Amazon-EKS-Cluster erstellen](create-cluster.md).

## Voraussetzungen
<a name="hybrid-nodes-cluster-create-prep"></a>
+ [Voraussetzungen für die Einrichtung von Hybridknoten](hybrid-nodes-prereqs.md) wurde abgeschlossen. Bevor Sie Ihren Cluster mit aktivierten Hybridknoten erstellen, müssen Sie Ihren lokalen Knoten und optional den Pod CIDRs identifizieren, Ihre VPC und Subnetze gemäß den EKS-Anforderungen und den Anforderungen der Hybridknoten erstellt haben und Ihre Sicherheitsgruppe mit eingehenden Regeln für Ihren lokalen und optionalen Pod. CIDRs Weitere Informationen zu diesen Voraussetzungen finden Sie unter [Vorbereitung der Vernetzung für Hybridknoten](hybrid-nodes-networking.md).
+ Die neueste Version der AWS Befehlszeilenschnittstelle (AWS CLI) ist auf Ihrem Gerät installiert und konfiguriert. Um Ihre aktuelle Version zu überprüfen, verwenden Sie `aws --version`. Paketmanager wie yum, apt-get oder Homebrew für macOS liegen oft mehrere Versionen hinter der neuesten Version der CLI. AWS Informationen zur Installation der neuesten Version finden Sie unter [Installation oder Aktualisierung auf die letzte Version der AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [Konfigurieren von Einstellungen für die AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) im Benutzerhandbuch für die AWS Befehlszeilenschnittstelle.
+ Ein [IAM-Prinzipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) mit Berechtigungen zum Erstellen von IAM-Rollen und Anfügen von Richtlinien sowie zum Erstellen und Beschreiben von EKS-Clustern

## Überlegungen
<a name="hybrid-nodes-cluster-create-consider"></a>
+ Ihr Cluster muss entweder `API` oder `API_AND_CONFIG_MAP` für den Cluster-Authentifizierungsmodus verwenden.
+ Ihr Cluster muss die IPv4 Adressfamilie verwenden.
+ Ihr Cluster muss entweder öffentliche oder private Cluster-Endpunkt-Konnektivität verwenden. Ihr Cluster kann die Cluster-Endpunktkonnektivität „öffentlich und privat“ nicht verwenden, da der Amazon EKS Kubernetes API-Serverendpunkt IPs für Hybridknoten, die außerhalb Ihrer VPC laufen, öffentlich auflöst.
+ Die OIDC-Authentifizierung wird für EKS-Cluster mit Hybridknoten unterstützt.
+ Sie können die Hybridknoten-Konfiguration eines vorhandenen Clusters hinzufügen, ändern oder entfernen. Weitere Informationen finden Sie unter [Hybridknoten in einem vorhandenen Amazon-EKS-Cluster aktivieren oder die Konfiguration ändern](hybrid-nodes-cluster-update.md).

## Schritt 1: Cluster-IAM-Rolle erstellen
<a name="hybrid-nodes-cluster-create-iam"></a>

Wenn Sie bereits eine Cluster-IAM-Rolle haben oder Ihren Cluster mit `eksctl` oder erstellen möchten AWS CloudFormation, können Sie diesen Schritt überspringen. Standardmäßig erstellt die AWS CloudFormation Vorlage die Cluster-IAM-Rolle für Sie. `eksctl`

1. Führen Sie den folgenden Befehl aus, um eine JSON-Datei für eine IAM-Vertrauensrichtlinie zu erstellen.

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "eks.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Erstellen Sie die Amazon-EKS-Cluster-IAM-Rolle. Geben Sie bei Bedarf als Präfix eks-cluster-role-trust -policy.json den Pfad auf Ihrem Computer ein, in den Sie die Datei im vorherigen Schritt geschrieben haben. Der Befehl verknüpft die im vorherigen Schritt erstellte Vertrauensrichtlinie mit der Rolle. Um eine IAM-Rolle zu erstellen, muss dem [IAM-Prinzipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal), der die Rolle erstellt, die `iam:CreateRole`-Aktion (Berechtigung) zugewiesen werden.

   ```
   aws iam create-role \
       --role-name myAmazonEKSClusterRole \
       --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
   ```

1. Sie können entweder die von Amazon EKS verwaltete Richtlinie zuweisen oder Ihre eigene benutzerdefinierte Richtlinie erstellen. Informationen zu den Mindestberechtigungen, die Sie in Ihrer benutzerdefinierten Richtlinie verwenden müssen, finden Sie unter [Amazon-EKS-Knoten-IAM-Rolle](create-node-role.md). Hängen Sie die von Amazon EKS verwaltete Richtlinie `AmazonEKSClusterPolicy` an die Rolle an. Um eine IAM-Richtlinie an einen [IAM-Prinzipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) anzuhängen, muss der Prinzipal, der die Richtlinie anhängt, eine der folgenden IAM-Aktionen (Berechtigungen) zugewiesen werden: `iam:AttachUserPolicy` oder `iam:AttachRolePolicy`.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws: iam::aws:policy/AmazonEKSClusterPolicy \
       --role-name myAmazonEKSClusterRole
   ```

## Schritt 2: Cluster mit Hybridknoten erstellen
<a name="hybrid-nodes-cluster-create-cluster"></a>

Sie können einen Cluster erstellen, indem Sie Folgendes verwenden:
+  [eksctl](#hybrid-nodes-cluster-create-eksctl) 
+  [AWS CloudFormation](#hybrid-nodes-cluster-create-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-create-cli) 
+  [AWS-Managementkonsole](#hybrid-nodes-cluster-create-console) 

### Cluster mit Hybridknoten erstellen – eksctl
<a name="hybrid-nodes-cluster-create-eksctl"></a>

Sie müssen die neueste Version des `eksctl`-Befehlszeilentools installieren. Informationen zum Installieren und Aktualisieren von `eksctl` finden Sie in der Dokumentation zu `eksctl` unter [Installation](https://eksctl.io/installation).

1. Erstellen`cluster-config.yaml`, um einen Amazon IPv4 EKS-Cluster mit Hybridknoten zu definieren. Nehmen Sie die folgenden Ersetzungen in Ihrem `cluster-config.yaml` vor. Eine vollständige Liste der Einstellungen finden Sie in der [eksctl-Dokumentation](https://eksctl.io/getting-started/).

   1. Ersetzen Sie `CLUSTER_NAME` durch Ihren Cluster-Namen. Der Name darf nur alphanumerische Zeichen (wobei die Groß- und Kleinschreibung beachtet werden muss) und Bindestriche enthalten. Es muss mit einem alphanumerischen Zeichen beginnen und darf nicht länger als 100 Zeichen sein. Der Name muss innerhalb der AWS Region und des AWS Kontos, in dem Sie den Cluster erstellen, eindeutig sein.

   1. `AWS_REGION`Ersetzen Sie es durch die AWS Region, in der Sie Ihren Cluster erstellen möchten.

   1. Ersetzen Sie `K8S_VERSION` durch eine von [Amazon EKS unterstützte Version](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).

   1. Ersetzen Sie `CREDS_PROVIDER` durch `ssm` oder `ira`, je nachdem, welchen Anmeldeinformationsanbieter Sie in den Schritten für [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md) konfiguriert haben.

   1. Ersetzen Sie`CA_BUNDLE_CERT`, wenn Ihr Anmeldeinformationsanbieter auf eingestellt ist`ira`, der AWS IAM Roles Anywhere als Anmeldeinformationsanbieter verwendet. CA\$1BUNDLE\$1CERT ist die Zertifizierungsstelle (CA) und hängt von Ihrer Wahl der CA ab. Das Zertifikat muss im PEM-Format (Privacy Enhanced Mail) vorliegen.

   1. Ersetzen Sie `GATEWAY_ID` durch die ID Ihres Virtual Private Gateways oder Transit-Gateways, das an Ihre VPC angefügt werden soll.

   1. Ersetzen Sie `REMOTE_NODE_CIDRS` durch den On-Premises-Knoten-CIDR für Ihre Hybridknoten.

   1. Ersetzen Sie `REMOTE_POD_CIDRS` durch das On-Premises-Pod-CIDR für Workloads, die in Hybridknoten ausgeführt werden, oder entfernen Sie die Zeile aus Ihrer Konfiguration, wenn Sie keine Webhooks in Hybridknoten ausführen. Sie müssen Ihre `REMOTE_POD_CIDRS` konfigurieren, wenn Ihr CNI keine Network Address Translation (NAT) oder Maskierung für Pod-IP-Adressen verwendet, wenn Pod-Datenverkehr Ihre On-Premises-Hosts verlässt. Sie müssen `REMOTE_POD_CIDRS` konfigurieren, wenn Sie Webhooks auf Hybridknoten ausführen. Weitere Informationen finden Sie unter [Konfiguration von Webhooks für Hybridknoten](hybrid-nodes-webhooks.md).

   1. Ihre On-Premises-Knoten- und Pod-CIDR-Blöcke müssen die folgenden Anforderungen erfüllen:

      1. Sie müssen sich innerhalb eines der IPv4 RFC-1918-Bereiche befinden:`10.0.0.0/8`,, oder `172.16.0.0/12``192.168.0.0/16`, oder innerhalb des durch RFC 6598: definierten CGNAT-Bereichs. `100.64.0.0/10`

      1. Keine Überschneidungen miteinander, das CIDR `VPC CIDR` für Ihren Cluster oder Ihren Kubernetes-Service IPv4 

         ```
         apiVersion: eksctl.io/v1alpha5
         kind: ClusterConfig
         
         metadata:
           name: CLUSTER_NAME
           region: AWS_REGION
           version: "K8S_VERSION"
         
         remoteNetworkConfig:
           iam:
             provider: CREDS_PROVIDER # default SSM, can also be set to IRA
             # caBundleCert: CA_BUNDLE_CERT
           vpcGatewayID: GATEWAY_ID
           remoteNodeNetworks:
           - cidrs: ["REMOTE_NODE_CIDRS"]
           remotePodNetworks:
           - cidrs: ["REMOTE_POD_CIDRS"]
         ```

1. Führen Sie den folgenden Befehl aus:

   ```
   eksctl create cluster -f cluster-config.yaml
   ```

   Die Clusterbereitstellung dauert mehrere Minuten. Während der Cluster erstellt wird, werden mehrere Ausgabezeilen angezeigt. Die letzte Ausgabezeile ähnelt der folgenden Beispielzeile.

   ```
   [✓]  EKS cluster "CLUSTER_NAME" in "REGION" region is ready
   ```

1. Fahren Sie fort mit [Schritt 3: kubeconfig aktualisieren](#hybrid-nodes-cluster-create-kubeconfig).

### Erstellen Sie einen Cluster mit aktivierten Hybridknoten - AWS CloudFormation
<a name="hybrid-nodes-cluster-create-cfn"></a>

Der CloudFormation Stack erstellt die IAM-Rolle des EKS-Clusters und einen EKS-Cluster mit dem von Ihnen angegebenen `RemoteNodeNetwork` und`RemotePodNetwork`. Ändern Sie die CloudFormation Vorlage, wenn Sie Einstellungen für Ihren EKS-Cluster anpassen müssen, die nicht in der CloudFormation Vorlage verfügbar gemacht werden.

1. Laden Sie die CloudFormation Vorlage herunter.

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-eks-cfn.yaml'
   ```

1. Erstellen Sie einen `cfn-eks-parameters.json` und geben Sie für jeden Wert Ihre Konfiguration an.

   1.  `CLUSTER_NAME`: Name des zu erstellenden EKS-Clusters

   1.  `CLUSTER_ROLE_NAME`: Name der zu erstellenden IAM-Rolle des EKS-Clusters. Die Standardeinstellung in der Vorlage ist „EKSClusterRolle“.

   1.  `SUBNET1_ID`: die ID des ersten Subnetzes, das Sie in den erforderlichen Schritten erstellt haben

   1.  `SUBNET2_ID`: die ID des zweiten Subnetzes, das Sie in den erforderlichen Schritten erstellt haben

   1.  `SG_ID`: die Sicherheitsgruppen-ID, die Sie in den erforderlichen Schritten erstellt haben.

   1.  `REMOTE_NODE_CIDRS`: das On-Premises-Knoten-CIDR für Ihre Hybridknoten

   1.  `REMOTE_POD_CIDRS`: das On-Premises-Pod-CIDR für Workloads, die in Hybridknoten ausgeführt werden. Sie müssen Ihre `REMOTE_POD_CIDRS` konfigurieren, wenn Ihr CNI keine Network Address Translation (NAT) oder Maskierung für Pod-IP-Adressen verwendet, wenn Pod-Datenverkehr Ihre On-Premises-Hosts verlässt. Sie müssen `REMOTE_POD_CIDRS` konfigurieren, wenn Sie Webhooks auf Hybridknoten ausführen. Weitere Informationen finden Sie unter [Konfiguration von Webhooks für Hybridknoten](hybrid-nodes-webhooks.md).

   1. Ihre On-Premises-Knoten- und Pod-CIDR-Blöcke müssen die folgenden Anforderungen erfüllen:

      1. Innerhalb eines der IPv4 RFC-1918-Bereiche liegen:`10.0.0.0/8`,, oder `172.16.0.0/12``192.168.0.0/16`, oder innerhalb des durch RFC 6598: definierten CGNAT-Bereichs. `100.64.0.0/10`

      1. Überschneiden Sie sich nicht miteinander, weder mit dem CIDR `VPC CIDR` für Ihren Cluster noch mit Ihrem Kubernetes-Dienst. IPv4 

   1.  `CLUSTER_AUTH`: der Cluster-Authentifizierungsmodus für Ihren Cluster. Gültige Werte sind `API` und `API_AND_CONFIG_MAP`. Der Standardwert in der Vorlage ist `API_AND_CONFIG_MAP`.

   1.  `CLUSTER_ENDPOINT`: die Cluster-Endpunkt-Konnektivität für Ihren Cluster. Gültige Werte sind „Öffentlich“ und „Privat“. Die Standardeinstellung in der Vorlage ist „Privat“, was bedeutet, dass Sie nur von Ihrem VPC aus eine Verbindung zum Kubernetes-API-Endpunkt herstellen können.

   1.  `K8S_VERSION`: die für Ihren Cluster zu verwendende Kubernetes-Version. Siehe die [Von Amazon EKS unterstützten Versionen](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).

      ```
      {
        "Parameters": {
          "ClusterName": "CLUSTER_NAME",
          "ClusterRoleName": "CLUSTER_ROLE_NAME",
          "SubnetId1": "SUBNET1_ID",
          "SubnetId2": "SUBNET2_ID",
          "SecurityGroupId" "SG_ID",
          "RemoteNodeCIDR": "REMOTE_NODE_CIDRS",
          "RemotePodCIDR": "REMOTE_POD_CIDRS",
          "ClusterAuthMode": "CLUSTER_AUTH",
          "ClusterEndpointConnectivity": "CLUSTER_ENDPOINT",
          "K8sVersion": "K8S_VERSION"
        }
       }
      ```

1. Stellen Sie den Stack bereit. CloudFormation `STACK_NAME`Ersetzen Sie ihn durch Ihren Namen für den CloudFormation Stack und `AWS_REGION` durch Ihre AWS Region, in der der Cluster erstellt werden soll.

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --region AWS_REGION \
       --template-file hybrid-eks-cfn.yaml \
       --parameter-overrides file://cfn-eks-parameters.json \
       --capabilities CAPABILITY_NAMED_IAM
   ```

   Die Clusterbereitstellung dauert mehrere Minuten. Sie können den Status Ihres Stacks mit dem folgenden Befehl überprüfen. `STACK_NAME`Ersetzen Sie es durch Ihren Namen für den CloudFormation Stack und `AWS_REGION` durch Ihre AWS Region, in der der Cluster erstellt werden soll.

   ```
   aws cloudformation describe-stacks \
       --stack-name STACK_NAME \
       --region AWS_REGION \
       --query 'Stacks[].StackStatus'
   ```

1. Fahren Sie fort mit [Schritt 3: kubeconfig aktualisieren](#hybrid-nodes-cluster-create-kubeconfig).

### Cluster mit Hybridknoten erstellen — CLI AWS
<a name="hybrid-nodes-cluster-create-cli"></a>

1. Führen Sie den folgenden Befehl aus, um einen EKS-Cluster mit aktivierten Hybridknoten zu erstellen. Ersetzen Sie vor dem Ausführen des Befehls Folgendes durch Ihre Einstellungen. Eine vollständige Liste der Einstellungen finden Sie in der [Amazon-EKS-Cluster erstellen](create-cluster.md)-Dokumentation.

   1.  `CLUSTER_NAME`: Name des zu erstellenden EKS-Clusters

   1.  `AWS_REGION`: AWS Region, in der der Cluster erstellt wird.

   1.  `K8S_VERSION`: die für Ihren Cluster zu verwendende Kubernetes-Version. Siehe die von Amazon EKS unterstützten Versionen.

   1.  `ROLE_ARN`: die Amazon-EKS-Cluster-Rolle, die Sie für Ihren Cluster konfiguriert haben. Weitere Informationen finden Sie unter IAM-Rolle des Amazon-EKS-Clusters.

   1.  `SUBNET1_ID`: die ID des ersten Subnetzes, das Sie in den erforderlichen Schritten erstellt haben

   1.  `SUBNET2_ID`: die ID des zweiten Subnetzes, das Sie in den erforderlichen Schritten erstellt haben

   1.  `SG_ID`: die Sicherheitsgruppen-ID, die Sie in den erforderlichen Schritten erstellt haben.

   1. Sie können `API` und `API_AND_CONFIG_MAP` für Ihren Cluster-Zugriffs-Authentifizierungsmodus verwenden. Im folgenden Befehl ist der Cluster-Zugriffs-Authentifizierungsmodus auf `API_AND_CONFIG_MAP` eingestellt.

   1. Sie können die `endpointPublicAccess`- und `endpointPrivateAccess`-Parameter verwenden, um den öffentlichen und privaten Zugriff auf den Kubernetes-API-Server-Endpunkt Ihres Clusters zu aktivieren oder zu deaktivieren. Im folgenden Befehl wird `endpointPublicAccess` auf „false“ und `endpointPrivateAccess` auf „true“ gesetzt.

   1.  `REMOTE_NODE_CIDRS`: das On-Premises-Knoten-CIDR für Ihre Hybridknoten.

   1.  `REMOTE_POD_CIDRS` (optional): das On-Premises-Pod-CIDR für Workloads, die in Hybridknoten ausgeführt werden.

   1. Ihre On-Premises-Knoten- und Pod-CIDR-Blöcke müssen die folgenden Anforderungen erfüllen:

      1. Innerhalb eines der IPv4 RFC-1918-Bereiche liegen:`10.0.0.0/8`,, oder `172.16.0.0/12``192.168.0.0/16`, oder innerhalb des durch RFC 6598: definierten CGNAT-Bereichs. `100.64.0.0/10`

      1. Keine Überschneidungen miteinander, weder `VPC CIDR` für Ihren Amazon EKS-Cluster noch für Ihren Kubernetes-Service IPv4 CIDR.

         ```
         aws eks create-cluster \
             --name CLUSTER_NAME \
             --region AWS_REGION \
             --kubernetes-version K8S_VERSION \
             --role-arn ROLE_ARN \
             --resources-vpc-config subnetIds=SUBNET1_ID,SUBNET2_ID,securityGroupIds=SG_ID,endpointPrivateAccess=true,endpointPublicAccess=false \
             --access-config authenticationMode=API_AND_CONFIG_MAP \
             --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["REMOTE_POD_CIDRS"]}]}'
         ```

1. Die Bereitstellung des Clusters dauert mehrere Minuten. Sie können den Status Ihres Clusters mit dem folgenden Befehl überprüfen. `CLUSTER_NAME`Ersetzen Sie ihn durch den Namen des Clusters, den Sie erstellen, und `AWS_REGION` durch die AWS Region, in der der Cluster erstellt wird. Fahren Sie nicht mit dem nächsten Schritt fort, bis die zurückgegebene Ausgabe `ACTIVE` ist.

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

1. Fahren Sie fort mit [Schritt 3: kubeconfig aktualisieren](#hybrid-nodes-cluster-create-kubeconfig).

### Cluster mit aktivierten Hybridknoten erstellen - AWS-Managementkonsole
<a name="hybrid-nodes-cluster-create-console"></a>

1. Öffnen Sie die Amazon-EKS-Konsole unter [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

1. Wählen Sie Cluster hinzufügen und dann Erstellen aus.

1. Füllen Sie auf der Seite Configure cluster (Cluster konfigurieren) die folgenden Felder aus:

   1.  **Name** – Ein Name für Ihren Cluster. Der Name darf nur alphanumerische Zeichen (Groß-/Kleinschreibung beachten), Bindestriche und Unterstriche enthalten. Es muss mit einem alphanumerischen Zeichen beginnen und darf nicht länger als 100 Zeichen sein. Der Name muss innerhalb der AWS Region und des AWS Kontos, in dem Sie den Cluster erstellen, eindeutig sein.

   1.  **Cluster-IAM-Rolle** — Wählen Sie die Amazon EKS-Cluster-IAM-Rolle aus, die Sie erstellt haben, damit die Kubernetes-Steuerebene AWS Ressourcen in Ihrem Namen verwalten kann.

   1.  **Kubernetes-Version** – Die Kubernetes-Version, die für den Cluster verwendet wird. Wir empfehlen, die frühere Version auszuwählen, es sei denn, Sie benötigen eine ältere Version.

   1.  **Upgrade-Richtlinie** – Wählen Sie entweder „Erweitert“ oder „Standard“.

      1.  **Erweitert:** Diese Option unterstützt die Kubernetes-Version 26 Monate nach dem Veröffentlichungsdatum. Für den erweiterten Support-Zeitraum fallen zusätzliche Stundenkosten an, die nach Ablauf des Standard-Support-Zeitraums beginnen. Nach Ablauf des erweiterten Supports wird Ihr Cluster automatisch auf die nächste Version aktualisiert.

      1.  **Standard:** Diese Option unterstützt die Kubernetes-Version 14 Monate nach dem Veröffentlichungsdatum. Es entstehen keine zusätzlichen Kosten. Wenn der Standard-Support endet, wird Ihr Cluster automatisch auf die nächste Version aktualisiert.

   1.  **Cluster-Zugriff** – Wählen Sie, ob Sie den Zugriff für Cluster-Administratoren zulassen oder verweigern möchten, und wählen Sie einen Authentifizierungsmodus aus Die folgenden Authentifizierungs-Modi werden für Cluster mit Hybridknoten unterstützt.

      1.  **EKS-API**: Der Cluster bezieht authentifizierte IAM-Prinzipale nur aus dem EKS-Zugriffseintrag. APIs

      1.  **EKS-API und ConfigMap**: Der Cluster bezieht authentifizierte IAM-Prinzipale sowohl aus dem EKS-Zugriffseintrag als auch aus dem. APIs `aws-auth` ConfigMap

   1.  **Secrets-Verschlüsselung** – (Optional) Aktivieren Sie die Secrets-Verschlüsselung von Kubernetes-Secrets mithilfe eines KMS-Schlüssels. Sie können diese auch aktivieren, nachdem Sie Ihren Cluster erstellt haben. Stellen Sie vor Aktivierung dieser Funktion sicher, dass Sie mit den Informationen unter [Verschlüsselung von Kubernetes-Geheimnissen mit KMS in vorhandenen Clustern](enable-kms.md) vertraut sind.

   1.  **ARC-Zonenverschiebung** – Wenn aktiviert, registriert EKS Ihren Cluster mit ARC-Zonenverschiebung, damit Sie mithilfe der Zonenverschiebung den Anwendungsverkehr von einer AZ weg verschieben können.

   1.  **Tags** – (Optional) Fügen Sie Ihrem Cluster beliebige Tags hinzu. Weitere Informationen finden Sie unter [Organisation von Amazon-EKS-Ressourcen mit Tags](eks-using-tags.md).

   1. Wenn Sie mit dieser Seite fertig sind, wählen Sie **Weiter** aus.

1. Wählen Sie auf der Seite **Specify networking** (Netzwerk angeben) die Werte für die folgenden Felder aus:

   1.  **VPC** – Wählen Sie eine vorhandene VPC, welche die Anforderungen von [Amazon-EKS-Netzwerkanforderungen für VPC und Subnetze](network-reqs.md) und [Amazon EKS Hybrid Nodes](hybrid-nodes-prereqs.md) erfüllt. Bevor Sie sich für eine VPC entscheiden, empfehlen wir Ihnen, sich mit allen Anforderungen und Überlegungen in „Amazon-EKS-Netzwerkanforderungen für VPC, Subnetze und Hybridknoten anzeigen“ vertraut zu machen. Sie können nach der Cluster-Erstellung nicht mehr ändern, welche VPC Sie verwenden möchten. Wenn keine aufgeführt VPCs sind, müssen Sie zuerst eine erstellen. Weitere Informationen finden Sie unter [Erstellung einer Amazon VPC für Ihren Amazon-EKS-Cluster](creating-a-vpc.md) und den [Netzwerkanforderungen für Amazon EKS Hybrid Nodes](hybrid-nodes-prereqs.md).

   1.  **Subnetze** – Standardmäßig sind alle im vorherigen Feld angegebenen Subnetze in der VPC vorausgewählt. Sie müssen mindestens zwei auswählen.

   1.  **Security groups** (Sicherheitsgruppen) – (Optional) Geben Sie eine oder mehrere Sicherheitsgruppen an, die Amazon EKS den erstellten Netzwerkschnittstellen zuordnen soll. Für mindestens eine der von Ihnen angegebenen Sicherheitsgruppen müssen eingehende Regeln für Ihren lokalen Knoten und optional für den Pod gelten. CIDRs Weitere Informationen finden Sie in den [Netzwerkanforderungen für Amazon EKS Hybrid Nodes](hybrid-nodes-networking.md). Unabhängig davon, ob Sie Sicherheitsgruppen wählen oder nicht, erstellt Amazon EKS eine Sicherheitsgruppe, die die Kommunikation zwischen Ihrem Cluster und Ihrer VPC ermöglicht. Amazon EKS verknüpft diese Sicherheitsgruppe und alle, die Sie wählen, mit den erstellten Netzwerkschnittstellen. Weitere Informationen zur Cluster-Sicherheitsgruppe, die von Amazon EKS erstellt wird, finden Sie unter[Anforderungen der Amazon-EKS-Sicherheitsgruppe für Cluster anzeigen](sec-group-reqs.md). Sie können die Regeln in der von Amazon EKS erstellten Cluster-Sicherheitsgruppe ändern.

   1.  **Cluster-IP-Adressfamilie wählen** — Sie müssen sich IPv4 für Cluster mit aktivierten Hybridknoten entscheiden.

   1. **(Optional) Wählen Sie „**Kubernetes Service IP-Adressbereich konfigurieren“ und geben Sie einen Dienstbereich** an. IPv4 **

   1.  **Wählen Sie Remotenetzwerke konfigurieren, um Hybridknoten zu aktivieren**, und geben Sie Ihren lokalen Knoten und Pod CIDRs für Hybridknoten an.

   1. Sie müssen die CIDR Ihres Pods aus der Ferne konfigurieren, wenn Ihr CNI keine Network Address Translation (NAT) oder Maskierung für Pod-IP-Adressen verwendet, wenn der Pod-Datenverkehr Ihre On-Premises-Hosts verlässt. Sie müssen das Pod-CIDR aus der Ferne konfigurieren, wenn Sie Webhooks in Hybridknoten ausführen.

   1. Ihre On-Premises-Knoten- und Pod-CIDR-Blöcke müssen die folgenden Anforderungen erfüllen:

      1. Sie müssen sich innerhalb eines der IPv4 RFC-1918-Bereiche befinden:`10.0.0.0/8`,, oder `172.16.0.0/12``192.168.0.0/16`, oder innerhalb des durch RFC 6598: definierten CGNAT-Bereichs. `100.64.0.0/10`

      1. Keine Überschneidungen miteinander, das CIDR `VPC CIDR` für Ihren Cluster oder Ihren Kubernetes-Service IPv4 

   1. Wählen Sie eine Option für den **Cluster-Endpunktzugriff** aus. Nachdem Ihr Cluster erstellt wurde, können Sie diese Option ändern. Für Cluster mit aktivierten Hybridknoten müssen Sie entweder „Öffentlich“ oder „Privat“ auswählen. Bevor Sie eine nicht standardmäßige Option auswählen, sollten Sie sich mit den Optionen und deren Auswirkungen vertraut machen. Weitere Informationen finden Sie unter [Cluster-API-Server-Endpunkt](cluster-endpoint.md).

   1. Wenn Sie mit dieser Seite fertig sind, wählen Sie **Weiter** aus.

1. (Optional) Auf der Seite Beobachtbarkeit **konfigurieren** können Sie Metriken und Optionen zur Steuerebenen-Protokollierung aktivieren. Standardmäßig sind alle Protokollierungstypen deaktiviert.

   1. Weitere Informationen zur Prometheus-Metrik-Option finden Sie unter [Überwachung Ihrer Cluster-Metriken mit Prometheus](prometheus.md).

   1. Weitere Informationen zu den Protokollierungsoptionen der EKS-Steuerung finden Sie unter [Protokolle der Kontrollebene an CloudWatch Logs senden](control-plane-logs.md).

   1. Wenn Sie mit dieser Seite fertig sind, wählen Sie **Weiter** aus.

1. Wählen Sie auf der Seite **Select add-ons** (Add-Ons auswählen) die Add-Ons aus, die Sie Ihrem Cluster hinzufügen möchten.

   1. Sie können so viele **Amazon EKS-Add-Ons** und ** AWS Marketplace-Add-Ons** auswählen, wie Sie benötigen. Amazon-EKS-Add-Ons, die nicht mit Hybridknoten kompatibel sind, sind mit „Nicht kompatibel mit Hybridknoten“ gekennzeichnet und verfügen über eine Anti-Affinitätsregel, um zu verhindern, dass sie auf Hybridknoten ausgeführt werden. Weitere Informationen finden Sie unter „Konfiguration von Add-Ons für Hybridknoten“. Wenn die ** AWS Marketplace-Add-Ons**, die Sie installieren möchten, nicht aufgeführt sind, können Sie nach verfügbaren ** AWS Marketplace-Add-Ons** suchen, indem Sie Text in das Suchfeld eingeben. Sie können auch nach **category** (Kategorie), **vendor** (Anbieter) oder **pricing model** (Preismodell) suchen und dann die Add-Ons aus den Suchergebnissen auswählen.

   1. Einige Add-Ons, wie CoreDNS und Kube-Proxy, sind standardmäßig installiert. Wenn Sie eines der Standard-Add-Ons deaktivieren, kann dies Ihre Fähigkeit beeinträchtigen, Kubernetes-Anwendungen auszuführen.

   1. Wenn Sie mit dieser Seite fertig sind, wählen Sie `Next`.

1. Wählen Sie auf der Seite **Einstellungen für ausgewählte Add-ons konfigurieren** die Version aus, die Sie installieren möchten.

   1. Sie können nach der Clustererstellung jederzeit auf eine neuere Version aktualisieren. Sie können die Konfiguration jedes Add-Ons nach der Cluster-Erstellung aktualisieren. Weitere Informationen zum Konfigurieren eines Add-Ons finden Sie unter [Aktualisierung eines Amazon-EKS-Add-Ons](updating-an-add-on.md). Die mit Hybridknoten kompatiblen Add-Ons-Versionen finden Sie unter [Konfiguration von Add-Ons für Hybridknoten](hybrid-nodes-add-ons.md).

   1. Wenn Sie mit dieser Seite fertig sind, wählen Sie Weiter aus.

1. Überprüfen Sie auf der Seite **Review and create** (Überprüfen und erstellen) die Informationen, die Sie auf den vorherigen Seiten eingegeben oder ausgewählt haben. Wenn Sie Änderungen vornehmen müssen, wählen Sie **Edit** (Bearbeiten). Wenn Sie zufrieden sind, klicken Sie auf **Erstellen**. Das Feld **Status** zeigt **CREATING** (WIRD ERSTELLT) an, während der Cluster bereitgestellt wird. Die Clusterbereitstellung dauert mehrere Minuten.

1. Fahren Sie fort mit [Schritt 3: kubeconfig aktualisieren](#hybrid-nodes-cluster-create-kubeconfig).

## Schritt 3: kubeconfig aktualisieren
<a name="hybrid-nodes-cluster-create-kubeconfig"></a>

Wenn Sie Ihren Cluster mit `eksctl` erstellt haben, können Sie diesen Schritt überspringen. Das liegt daran, dass `eksctl` diesen Schritt bereits für Sie durchgeführt hat. Aktivieren Sie `kubectl`, um mit Ihrem Cluster zu kommunizieren, indem Sie einen neuen Kontext zur `kubectl`-config-Datei hinzufügen. Weitere Informationen zum Erstellen und Aktualisieren der Datei finden Sie unter [kubectl mit einem EKS-Cluster durch Erstellen einer kubeconfig-Datei verbinden](create-kubeconfig.md).

```
aws eks update-kubeconfig --name CLUSTER_NAME --region AWS_REGION
```

Eine Beispielausgabe sieht wie folgt aus.

```
Added new context arn:aws: eks:AWS_REGION:111122223333:cluster/CLUSTER_NAME to /home/username/.kube/config
```

Bestätigen Sie die Kommunikation mit Ihrem Cluster, indem Sie den folgenden Befehl ausführen.

```
kubectl get svc
```

Eine Beispielausgabe sieht wie folgt aus.

```
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   28h
```

## Schritt 4: Cluster-Einrichtung
<a name="_step_4_cluster_setup"></a>

Sehen Sie sich als nächsten Schritt [Vorbereitung des Cluster-Zugriffs für Hybridknoten](hybrid-nodes-cluster-prep.md) an, um den Zugriff für Ihre Hybridknoten zu aktivieren, damit diese Ihrem Cluster beitreten können.

# Hybridknoten in einem vorhandenen Amazon-EKS-Cluster aktivieren oder die Konfiguration ändern
<a name="hybrid-nodes-cluster-update"></a>

Dieses Thema bietet einen Überblick über die verfügbaren Optionen und beschreibt, was zu beachten ist, wenn Sie die Hybridknoten-Konfiguration für einen Amazon-EKS-Cluster hinzufügen, ändern oder entfernen.

Um einem Amazon-EKS-Cluster die Verwendung von Hybridknoten zu ermöglichen, fügen Sie der `RemoteNetworkConfig`-Konfiguration die CIDR-Bereiche der IP-Adressen Ihres On-Premises-Knotens und optional des Pod-Netzwerks hinzu. EKS verwendet diese Liste von CIDRs , um die Konnektivität zwischen dem Cluster und Ihren lokalen Netzwerken zu aktivieren. Eine vollständige Liste der Optionen bei der Aktualisierung Ihrer Cluster-Konfiguration finden Sie [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)in der *Amazon EKS API-Referenz*.

Sie können für die Netzwerkkonfiguration der EKS-Hybridknoten in einem Cluster die folgenden Aktionen ausführen:
+  [Fügen Sie eine Fern-Netzwerkkonfiguration hinzu, um EKS-Hybridknoten in einem vorhandenen Cluster zu aktivieren.](#hybrid-nodes-cluster-enable-existing) 
+  [Fügen Sie die Fern-Knotennetzwerke oder die Pod-Netzwerke aus der Ferne in einem vorhandenen Cluster hinzu, ändern oder entfernen Sie sie.](#hybrid-nodes-cluster-update-config) 
+  [Entfernen Sie alle CIDR-Bereiche des Knotennetzwerks aus der Ferne, um EKS-Hybridknoten in einem vorhandenen Cluster zu deaktivieren.](#hybrid-nodes-cluster-disable) 

## Voraussetzungen
<a name="hybrid-nodes-cluster-enable-prep"></a>
+ Bevor Sie Ihren Amazon-EKS-Cluster für Hybridknoten aktivieren, stellen Sie sicher, dass Ihre Umgebung die unter [Voraussetzungen für die Einrichtung von Hybridknoten](hybrid-nodes-prereqs.md) beschriebenen und unter [Vorbereitung der Vernetzung für Hybridknoten](hybrid-nodes-networking.md), [Vorbereitung des Betriebssystems für Hybridknoten](hybrid-nodes-os.md) und [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md) ausführlich beschriebenen Anforderungen erfüllt.
+ Ihr Cluster muss die IPv4 Adressfamilie verwenden.
+ Ihr Cluster muss entweder `API` oder `API_AND_CONFIG_MAP` für den Cluster-Authentifizierungsmodus verwenden. Der Vorgang zum Ändern des Cluster-Authentifizierungsmodus wird unter [Ändern des Authentifizierungsmodus, um Zugriffseinträge zu verwenden](setting-up-access-entries.md) beschrieben.
+ Wir empfehlen, entweder den öffentlichen oder den privaten Endpunktzugriff für den API-Server-Endpunkt für Amazon EKS Kubernetes zu verwenden, jedoch nicht beide gleichzeitig. Wenn Sie „Öffentlich und privat“ wählen, wird der Amazon EKS Kubernetes API-Serverendpunkt IPs für Hybridknoten, die außerhalb Ihrer VPC laufen, immer öffentlich aufgelöst, wodurch verhindert werden kann, dass Ihre Hybridknoten dem Cluster beitreten. Der Vorgang zum Ändern des Netzwerkzugriffs in Ihren Cluster wird unter [Cluster-API-Server-Endpunkt](cluster-endpoint.md) beschrieben.
+ Die neueste Version der AWS Befehlszeilenschnittstelle (AWS CLI) ist auf Ihrem Gerät installiert und konfiguriert. Um Ihre aktuelle Version zu überprüfen, verwenden Sie `aws --version`. Paketmanager wie yum, apt-get oder Homebrew für macOS liegen oft mehrere Versionen hinter der neuesten Version der CLI. AWS Informationen zur Installation der neuesten Version finden Sie unter [Installation oder Aktualisierung auf die neueste Version der AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [Konfigurieren von Einstellungen für die AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) im Benutzerhandbuch für die AWS Befehlszeilenschnittstelle.
+ Ein [IAM-Principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) mit der Berechtigung, Ihren [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)Amazon EKS-Cluster aufzurufen.
+ Aktualisieren Sie Add-Ons in Versionen, die mit Hybridknoten kompatibel sind. Die mit Hybridknoten kompatiblen Add-Ons-Versionen finden Sie unter [Konfiguration von Add-Ons für Hybridknoten](hybrid-nodes-add-ons.md).
+ Wenn Sie Add-Ons ausführen, die nicht mit Hybridknoten kompatibel sind, stellen Sie sicher, dass für das Add-On [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)oder die [Bereitstellung](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) die folgende Affinitätsregel gilt, um die Bereitstellung auf Hybridknoten zu verhindern. Fügen Sie die folgende Affinitätsregel hinzu, falls sie noch nicht vorhanden ist.

  ```
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
  ```

## Überlegungen
<a name="hybrid-nodes-cluster-enable-consider"></a>

Das `remoteNetworkConfig`-JSON-Objekt weist während einer Aktualisierung folgendes Verhalten auf:
+ Alle vorhandenen Teile der Konfiguration, die Sie nicht angeben, bleiben unverändert. Wenn Sie weder `remoteNodeNetworks` noch `remotePodNetworks` angeben, bleibt dieser Teil unverändert.
+ Wenn Sie entweder die `remoteNodeNetworks` oder `remotePodNetworks` -Listen von ändern CIDRs, müssen Sie die vollständige Liste der gewünschten CIDRs Optionen in Ihrer endgültigen Konfiguration angeben. Wenn Sie eine Änderung an der CIDR-Liste `remoteNodeNetworks` oder `remotePodNetworks` angeben, ersetzt EKS während der Aktualisierung die ursprüngliche Liste.
+ Ihre On-Premises-Knoten- und Pod-CIDR-Blöcke müssen die folgenden Anforderungen erfüllen:

  1. Sie müssen sich innerhalb eines der IPv4 RFC-1918-Bereiche befinden: 10.0.0.0/8, 172.16.0.0/12 oder 192.168.0.0/16 oder innerhalb des durch RFC 6598 definierten CGNAT-Bereichs: `100.64.0.0/10` 

  1. Keine Überschneidungen miteinander, mit CIDRs der gesamten VPC für Ihren Amazon EKS-Cluster oder mit Ihrem Kubernetes-Service CIDR. IPv4 

## Aktivierung von Hybridknoten in einem vorhandenen Cluster
<a name="hybrid-nodes-cluster-enable-existing"></a>

Sie können EKS-Hybridknoten in einem vorhandenen Cluster aktivieren, indem Sie Folgendes verwenden:
+  [AWS CloudFormation](#hybrid-nodes-cluster-enable-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-enable-cli) 
+  [AWS-Managementkonsole](#hybrid-nodes-cluster-enable-console) 

### Aktivieren Sie EKS-Hybridknoten in einem vorhandenen Cluster — AWS CloudFormation
<a name="hybrid-nodes-cluster-enable-cfn"></a>

1. Um EKS-Hybridknoten in Ihrem Cluster zu aktivieren, fügen Sie Ihrer CloudFormation Vorlage das `RemoteNodeNetwork` und (optional) `RemotePodNetwork` hinzu und aktualisieren Sie den Stack. Beachten Sie, dass `RemoteNodeNetwork` eine Liste mit maximal einem `Cidrs`-Element ist und `Cidrs` eine Liste mehrerer IP-CIDR-Bereiche ist.

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks:
       - Cidrs: [RemoteNodeCIDR]
     RemotePodNetworks:
       - Cidrs: [RemotePodCIDR]
   ```

1. Fahren Sie fort mit [Vorbereitung des Cluster-Zugriffs für Hybridknoten](hybrid-nodes-cluster-prep.md).

### Aktivieren Sie EKS-Hybridknoten in einem vorhandenen Cluster — AWS CLI
<a name="hybrid-nodes-cluster-enable-cli"></a>

1. Führen Sie den folgenden Befehl aus, um `RemoteNetworkConfig` für EKS-Hybridknoten für Ihren EKS-Cluster zu aktivieren. Ersetzen Sie vor dem Ausführen des Befehls Folgendes durch Ihre Einstellungen. Eine vollständige Liste der Einstellungen finden Sie [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)in der *Amazon EKS API-Referenz*.

   1.  `CLUSTER_NAME`: Name des zu aktualisierenden EKS-Clusters.

   1.  `AWS_REGION`: AWS Region, in der der EKS-Cluster ausgeführt wird.

   1.  `REMOTE_NODE_CIDRS`: das On-Premises-Knoten-CIDR für Ihre Hybridknoten.

   1.  `REMOTE_POD_CIDRS` (optional): das On-Premises-Pod-CIDR für Workloads, die in Hybridknoten ausgeführt werden.

      ```
      aws eks update-cluster-config \
          --name CLUSTER_NAME \
          --region AWS_REGION \
          --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["REMOTE_POD_CIDRS"]}]}'
      ```

1. Die Aktualisierung des Clusters dauert mehrere Minuten. Sie können den Status Ihres Clusters mit dem folgenden Befehl überprüfen. `CLUSTER_NAME`Ersetzen Sie durch den Namen des Clusters, den Sie ändern, und `AWS_REGION` durch die AWS Region, in der der Cluster ausgeführt wird. Fahren Sie nicht mit dem nächsten Schritt fort, bis die zurückgegebene Ausgabe `ACTIVE` ist.

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

1. Fahren Sie fort mit [Vorbereitung des Cluster-Zugriffs für Hybridknoten](hybrid-nodes-cluster-prep.md).

### Aktivieren Sie EKS-Hybridknoten in einem vorhandenen Cluster - AWS-Managementkonsole
<a name="hybrid-nodes-cluster-enable-console"></a>

1. Öffnen Sie die Amazon-EKS-Konsole unter [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

1. Wählen Sie den Namen des Clusters aus, um Ihre Cluster-Informationen anzuzeigen.

1. Wählen Sie die Registerkarte **Netzwerk** und dann **Verwalten** aus.

1. Wählen Sie in der Dropdownliste **Fern-Netzwerke** aus.

1.  **Wählen Sie Remotenetzwerke konfigurieren, um Hybridknoten zu aktivieren**, und geben Sie Ihren lokalen Knoten und Pod CIDRs für Hybridknoten an.

1. Wählen Sie **Änderungen speichern**, um den Vorgang abzuschließen. Warten Sie, bis der Cluster-Status wieder auf **Aktiv** zurückgesetzt ist.

1. Fahren Sie fort mit [Vorbereitung des Cluster-Zugriffs für Hybridknoten](hybrid-nodes-cluster-prep.md).

## Konfiguration der Hybridknoten in einem vorhandenen Cluster aktualisieren
<a name="hybrid-nodes-cluster-update-config"></a>

Sie können `remoteNetworkConfig` in einem vorhandenen Hybrid-Cluster mithilfe einer der folgenden Optionen ändern:
+  [AWS CloudFormation](#hybrid-nodes-cluster-update-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-update-cli) 
+  [AWS-Managementkonsole](#hybrid-nodes-cluster-update-console) 

### Aktualisieren Sie die Hybridkonfiguration in einem vorhandenen Cluster - AWS CloudFormation
<a name="hybrid-nodes-cluster-update-cfn"></a>

1. Aktualisieren Sie Ihre CloudFormation Vorlage mit den neuen Netzwerk-CIDR-Werten.

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks:
       - Cidrs: [NEW_REMOTE_NODE_CIDRS]
     RemotePodNetworks:
       - Cidrs: [NEW_REMOTE_POD_CIDRS]
   ```
**Anmerkung**  
Nehmen Sie bei der Aktualisierung `RemoteNodeNetworks` von `RemotePodNetworks` CIDR-Listen alle CIDRs (neue und bestehende) auf. EKS ersetzt bei Aktualisierungen die gesamte Liste. Durch das Weglassen dieser Felder aus der Aktualisierungsanforderung werden ihre vorhandenen Konfigurationen beibehalten.

1. Aktualisieren Sie Ihren CloudFormation Stack mit der geänderten Vorlage und warten Sie, bis das Stack-Update abgeschlossen ist.

### Hybridkonfiguration in einem vorhandenen Cluster aktualisieren — AWS CLI
<a name="hybrid-nodes-cluster-update-cli"></a>

1. Führen Sie den folgenden Befehl aus CIDRs, um das Remote-Netzwerk zu ändern. Ersetzen Sie die Werte durch Ihre Einstellungen:

   ```
   aws eks update-cluster-config
   --name CLUSTER_NAME
   --region AWS_REGION
   --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["NEW_REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["NEW_REMOTE_POD_CIDRS"]}]}'
   ```
**Anmerkung**  
Wenn Sie `remotePodNetworks` CIDR-Listen aktualisieren`remoteNodeNetworks`, sollten Sie alle CIDRs (neue und bestehende) einbeziehen. EKS ersetzt bei Aktualisierungen die gesamte Liste. Durch das Weglassen dieser Felder aus der Aktualisierungsanforderung werden ihre vorhandenen Konfigurationen beibehalten.

1. Warten Sie, bis der Cluster-Status wieder auf „AKTIV“ zurückkehrt, bevor Sie fortfahren.

### Hybridkonfiguration in einem vorhandenen Cluster aktualisieren - AWS-Managementkonsole
<a name="hybrid-nodes-cluster-update-console"></a>

1. Öffnen Sie die Amazon-EKS-Konsole unter [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

1. Wählen Sie den Namen des Clusters aus, um Ihre Cluster-Informationen anzuzeigen.

1. Wählen Sie die Registerkarte **Netzwerk** und dann **Verwalten** aus.

1. Wählen Sie in der Dropdownliste **Fern-Netzwerke** aus.

1. Aktualisieren Sie die CIDRs unter `Remote node networks` und nach `Remote pod networks - Optional` Bedarf.

1. Wählen Sie **Änderungen speichern** und warten Sie, bis der Cluster-Status wieder auf **Aktiv** wechselt.

## Hybridknoten in einem vorhandenen Cluster deaktivieren
<a name="hybrid-nodes-cluster-disable"></a>

Sie können EKS-Hybridknoten in einem vorhandenen Cluster deaktivieren, indem Sie Folgendes verwenden:
+  [AWS CloudFormation](#hybrid-nodes-cluster-disable-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-disable-cli) 
+  [AWS-Managementkonsole](#hybrid-nodes-cluster-disable-console) 

### Deaktivieren Sie EKS-Hybridknoten in einem vorhandenen Cluster - AWS CloudFormation
<a name="hybrid-nodes-cluster-disable-cfn"></a>

1. Um EKS-Hybridknoten in Ihrem Cluster `RemotePodNetworks` zu deaktivieren, legen Sie Arrays in Ihrer CloudFormation Vorlage fest `RemoteNodeNetworks` und leeren Sie sie und aktualisieren Sie den Stack.

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks: []
     RemotePodNetworks: []
   ```

### Deaktivieren Sie EKS-Hybridknoten in einem vorhandenen Cluster — AWS CLI
<a name="hybrid-nodes-cluster-disable-cli"></a>

1. Führen Sie den folgenden Befehl aus, um `RemoteNetworkConfig` aus Ihrem EKS-Cluster zu entfernen. Ersetzen Sie vor dem Ausführen des Befehls Folgendes durch Ihre Einstellungen. Eine vollständige Liste der Einstellungen finden Sie [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)in der *Amazon EKS API-Referenz*.

   1.  `CLUSTER_NAME`: Name des zu aktualisierenden EKS-Clusters.

   1.  `AWS_REGION`: AWS Region, in der der EKS-Cluster ausgeführt wird.

      ```
      aws eks update-cluster-config \
          --name CLUSTER_NAME \
          --region AWS_REGION \
          --remote-network-config '{"remoteNodeNetworks":[],"remotePodNetworks":[]}'
      ```

1. Die Aktualisierung des Clusters dauert mehrere Minuten. Sie können den Status Ihres Clusters mit dem folgenden Befehl überprüfen. `CLUSTER_NAME`Ersetzen Sie durch den Namen des Clusters, den Sie ändern, und `AWS_REGION` durch die AWS Region, in der der Cluster ausgeführt wird. Fahren Sie nicht mit dem nächsten Schritt fort, bis die zurückgegebene Ausgabe `ACTIVE` ist.

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

### Deaktivieren Sie EKS-Hybridknoten in einem vorhandenen Cluster - AWS-Managementkonsole
<a name="hybrid-nodes-cluster-disable-console"></a>

1. Öffnen Sie die Amazon-EKS-Konsole unter [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

1. Wählen Sie den Namen des Clusters aus, um Ihre Cluster-Informationen anzuzeigen.

1. Wählen Sie die Registerkarte **Netzwerk** und dann **Verwalten** aus.

1. Wählen Sie in der Dropdownliste **Fern-Netzwerke** aus.

1. Wählen Sie **Remotenetzwerke konfigurieren, um Hybridknoten zu aktivieren** und alle CIDRs Unter `Remote node networks` - und zu entfernen`Remote pod networks - Optional`.

1. Wählen Sie **Änderungen speichern**, um den Vorgang abzuschließen. Warten Sie, bis der Cluster-Status wieder auf **Aktiv** zurückgesetzt ist.

# Vorbereitung des Cluster-Zugriffs für Hybridknoten
<a name="hybrid-nodes-cluster-prep"></a>

Bevor Sie Hybridknoten mit Ihrem Amazon-EKS-Cluster verbinden, müssen Sie Ihre Hybridknoten-IAM-Rolle mit Kubernetes-Berechtigungen aktivieren, um dem Cluster beitreten zu können. Informationen zum Erstellen der IAM-Rolle Hybridknoten finden Sie unter [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md). Amazon EKS unterstützt zwei Möglichkeiten, IAM-Prinzipale mit Kubernetes Role-Based Access Control (RBAC), Amazon EKS-Zugriffseinträgen und dem zu verknüpfen. `aws-auth` ConfigMap Weitere Informationen zur Amazon-EKS-Zugriffsverwaltung finden Sie unter [Gewähren Sie IAM-Benutzern und -Rollen Zugriff auf Kubernetes APIs](grant-k8s-access.md).

Verwenden Sie die folgenden Verfahren, um Ihre IAM-Rolle für Hybridknoten den Kubernetes-Berechtigungen zuzuordnen. Um Amazon-EKS-Zugriffseinträge verwenden zu können, muss Ihr Cluster mit den Authentifizierungsmodi `API` oder `API_AND_CONFIG_MAP` erstellt worden sein. Um den verwenden zu können `aws-auth` ConfigMap, muss Ihr Cluster im Authentifizierungsmodus erstellt worden sein. `API_AND_CONFIG_MAP` Der `CONFIG_MAP`-eigene-Authentifizierungsmodus wird für Amazon-EKS-Cluster mit aktivierten Hybridknoten nicht unterstützt.

## Verwendung von Amazon-EKS-Zugriffseinträgen für die IAM-Rolle für Hybridknoten
<a name="_using_amazon_eks_access_entries_for_hybrid_nodes_iam_role"></a>

Es gibt einen Amazon-EKS-Zugriffseintragstyp für Hybridknoten mit dem Namen HYBRID\$1LINUX, der mit einer IAM-Rolle verwendet werden kann. Bei diesem Zugriffseintragstyp wird der Benutzername automatisch auf system:node: \$1\$1SessionName\$1\$1 gesetzt. Weitere Informationen zum Erstellen von Zugriffseinträgen finden Sie unter [Zugriffseinträge erstellen](creating-access-entries.md).

### AWS CLI
<a name="shared_aws_cli"></a>

1. Sie müssen die neueste Version der AWS CLI auf Ihrem Gerät installiert und konfiguriert haben. Um Ihre aktuelle Version zu überprüfen, verwenden Sie `aws --version`. Paketmanager wie yum, apt-get oder Homebrew für macOS liegen oft mehrere Versionen hinter der neuesten Version der CLI. AWS Informationen zur Installation der neuesten Version finden Sie unter Installation und Schnellkonfiguration mit aws configure im Benutzerhandbuch für die AWS Befehlszeilenschnittstelle.

1. Erstellen Sie Ihren Zugriffseintrag mit dem folgenden Befehl. Ersetzen Sie CLUSTER\$1NAME durch den Namen Ihres Clusters und HYBRID\$1NODES\$1ROLE\$1ARN durch die ARN der Rolle, die Sie in den Schritten für [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md) erstellt haben.

   ```
   aws eks create-access-entry --cluster-name CLUSTER_NAME \
       --principal-arn HYBRID_NODES_ROLE_ARN \
       --type HYBRID_LINUX
   ```

### AWS-Managementkonsole
<a name="hybrid-nodes-cluster-prep-console"></a>

1. Öffnen Sie die Amazon-EKS-Konsole unter [Amazon-EKS-Konsole](https://console.aws.amazon.com/eks/home#/clusters).

1. Wählen Sie den Namen Ihres Clusters mit aktivierten Hybridknoten.

1. Wählen Sie die Registerkarte **Zugriff** aus.

1. Wählen Sie **Zugriffseintrag erstellen** aus.

1. Wählen Sie für **IAM-Prinzipal** die IAM-Rolle für Hybridknoten aus, die Sie in den Schritten für [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md) erstellt haben.

1. Wählen Sie für **Typ** die Option **Hybrid Linux** aus.

1. (Optional) Weisen Sie dem Zugriffseintrag unter **Tags** Beschriftungen zu. So können Sie beispielsweise ganz einfach nach allen Ressourcen mit dem gleichen Tag suchen.

1. Wählen Sie **„Überspringen“, um die Überprüfung und Erstellung fortzusetzen**. Sie können dem Hybrid-Linux-Zugriffseintrag keine Richtlinien hinzufügen oder seinen Zugriffsbereich ändern.

1. Überprüfen Sie die Konfiguration für Ihren Zugriffseintrag. Sollten Sie einen Fehler entdecken, wählen Sie **Zurück** aus, um schrittweise zurück zu navigieren und den Fehler zu korrigieren. Ist die Konfiguration korrekt, wählen Sie **Erstellen** aus.

## Verwendung von aws-auth ConfigMap für die IAM-Rolle Hybrid Nodes
<a name="_using_aws_auth_configmap_for_hybrid_nodes_iam_role"></a>

In den folgenden Schritten erstellen oder aktualisieren Sie die IAM-Rolle `aws-auth` ConfigMap mit dem ARN der Hybrid Nodes IAM-Rolle, die Sie in den Schritten für [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md) erstellt haben.

1. Prüfen Sie, ob `aws-auth` ConfigMap für Ihren Cluster bereits eine vorhanden ist. Beachten Sie, dass Sie bei Verwendung einer bestimmten `kubeconfig`-Datei das `--kubeconfig`-Flag verwenden sollten.

   ```
   kubectl describe configmap -n kube-system aws-auth
   ```

1. Wenn Ihnen eine angezeigt wird `aws-auth` ConfigMap, aktualisieren Sie sie nach Bedarf.

   1. Öffnen Sie das ConfigMap zur Bearbeitung.

      ```
      kubectl edit -n kube-system configmap/aws-auth
      ```

   1. Fügen Sie nach Bedarf einen neuen `mapRoles`-Eintrag hinzu. Ersetzen Sie `HYBRID_NODES_ROLE_ARN` durch die ARN Ihrer IAM-Rolle für Hybridknoten. Hinweis, `{{SessionName}}` ist das richtige Vorlagenformat zum Speichern in ConfigMap. Ersetzen Sie es nicht durch andere Werte.

      ```
      data:
        mapRoles: |
        - groups:
          - system:bootstrappers
          - system:nodes
          rolearn: HYBRID_NODES_ROLE_ARN
          username: system:node:{{SessionName}}
      ```

   1. Speichern Sie die Datei und beenden Sie den Text-Editor.

1. Wenn `aws-auth` ConfigMap für Ihren Cluster noch kein vorhandenes vorhanden ist, erstellen Sie es mit dem folgenden Befehl. Ersetzen Sie `HYBRID_NODES_ROLE_ARN` durch die ARN Ihrer IAM-Rolle für Hybridknoten. Beachten Sie, `{{SessionName}}` dass dies das richtige Vorlagenformat zum Speichern in ist ConfigMap. Ersetzen Sie es nicht durch andere Werte.

   ```
   kubectl apply -f=/dev/stdin <<-EOF
   apiVersion: v1
   kind: ConfigMap
   metadata:
     name: aws-auth
     namespace: kube-system
   data:
     mapRoles: |
     - groups:
       - system:bootstrappers
       - system:nodes
       rolearn: HYBRID_NODES_ROLE_ARN
       username: system:node:{{SessionName}}
   EOF
   ```

# Ausführung von On-Premises-Workloads in Hybridknoten
<a name="hybrid-nodes-tutorial"></a>

In einem EKS-Cluster mit aktivierten EKS-Hybridknoten können Sie On-Premises- und Edge-Anwendungen auf Ihrer eigenen Infrastruktur mit denselben Amazon-EKS-Clustern, Features und Tools ausführen, die Sie in der AWS Cloud verwenden.

Die folgenden Abschnitte enthalten schrittweise Anleitungen zur Verwendung von Hybridknoten.

**Topics**
+ [Hybridknoten verbinden](hybrid-nodes-join.md)
+ [Hybridknoten mit Bottlerocket verbinden](hybrid-nodes-bottlerocket.md)
+ [Hybridknoten aktualisieren](hybrid-nodes-upgrade.md)
+ [Hybridknoten patchen](hybrid-nodes-security.md)
+ [Hybridknoten löschen](hybrid-nodes-remove.md)

# Hybridknoten verbinden
<a name="hybrid-nodes-join"></a>

**Anmerkung**  
Die folgenden Schritte gelten für Hybridknoten mit kompatiblen Betriebssystemen außer Bottlerocket. Anweisungen zum Verbinden eines Hybridknotens mit Bottlerocket finden Sie unter [Hybridknoten mit Bottlerocket verbinden](hybrid-nodes-bottlerocket.md).

In diesem Thema wird beschrieben, wie Hybridknoten mit einem Amazon-EKS-Cluster verbunden werden. Nachdem Ihre Hybridknoten dem Cluster beigetreten sind, werden sie in der Amazon-EKS-Konsole und in Kubernetes-kompatiblen Tools wie kubectl mit dem Status „Nicht bereit“ angezeigt. Nachdem Sie die Schritte auf dieser Seite abgeschlossen haben, fahren Sie mit [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) fort, um Ihre Hybridknoten für die Ausführung von Anwendungen vorzubereiten.

## Voraussetzungen
<a name="_prerequisites"></a>

Bevor Sie Hybridknoten mit Ihrem Amazon-EKS-Cluster verbinden, stellen Sie sicher, dass Sie die erforderlichen Schritte abgeschlossen haben.
+ Sie verfügen über eine Netzwerkverbindung von Ihrer On-Premises-Umgebung zu der AWS-Region, in der Ihr Amazon-EKS-Cluster gehostet wird. Weitere Informationen finden Sie unter [Vorbereitung der Vernetzung für Hybridknoten](hybrid-nodes-networking.md).
+ Sie verfügen über ein kompatibles Betriebssystem für Hybridknoten, das auf Ihren On-Premises-Hosts installiert ist. Weitere Informationen finden Sie unter [Vorbereitung des Betriebssystems für Hybridknoten](hybrid-nodes-os.md).
+ Sie haben Ihre IAM-Rolle für Hybridknoten erstellt und Ihren On-Premises-Anmeldeinformationsanbieter (AWS-Systems-Manager-Hybridaktivierungen oder AWS IAM Roles Anywhere) eingerichtet. Weitere Informationen finden Sie unter [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md).
+ Sie haben Ihren für Hybridknoten aktivierten Amazon-EKS-Cluster erstellt. Weitere Informationen finden Sie unter [Einen Amazon-EKS-Cluster mit Hybridknoten erstellen](hybrid-nodes-cluster-create.md).
+ Sie haben Ihre Hybridknoten-IAM-Rolle den Berechtigungen der rollenbasierten Zugriffssteuerung (RBAC) von Kubernetes zugeordnet. Weitere Informationen finden Sie unter [Vorbereitung des Cluster-Zugriffs für Hybridknoten](hybrid-nodes-cluster-prep.md).

## Schritt 1: Hybridknoten-CLI (`nodeadm`) auf jedem On-Premises-Host installieren
<a name="_step_1_install_the_hybrid_nodes_cli_nodeadm_on_each_on_premises_host"></a>

Wenn Sie die Amazon-EKS-Hybrid-Nodes-CLI (`nodeadm`) in Ihre vorgefertigten Betriebssystem-Images integrieren, können Sie diesen Schritt überspringen. Weitere Informationen zur Hybridknotenversion von `nodeadm` finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md).

Die Hybridknoten-Version von `nodeadm` wird in Amazon S3 gehostet und von Amazon CloudFront bereitgestellt. Um die Installation auf jedem On-Premises-Host `nodeadm` durchzuführen, können Sie den folgenden Befehl von Ihren On-Premises-Hosts aus ausführen.

 **Für x86\$164 hosts:** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'
```

 **Für ARM-Hosts** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'
```

Fügen Sie der heruntergeladenen Binärdatei auf jedem Host die Berechtigung zum Ausführen von Dateien hinzu.

```
chmod +x nodeadm
```

## Schritt 2: Die Abhängigkeiten der Hybridknoten mit `nodeadm` installieren
<a name="_step_2_install_the_hybrid_nodes_dependencies_with_nodeadm"></a>

Wenn Sie die Abhängigkeiten der Hybridknoten in vorgefertigten Betriebssystem-Images installieren, können Sie diesen Schritt überspringen. Mit dem `nodeadm install`-Befehl können Sie alle für Hybridknoten erforderlichen Abhängigkeiten installieren. Die Abhängigkeiten der Hybridknoten beinhalten Containerd, kubelet, kubectl und AWS-SSM- oder AWS-IAM-Roles-Anywhere-Komponenten. Weitere Informationen zu den von [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md) installierten Komponenten und Dateispeicherorten finden Sie unter `nodeadm install`. Weitere Informationen zu den Domains, die in Ihrer On-Premises-Firewall für den `nodeadm install`-Prozess zugelassen werden müssen, finden Sie unter [Vorbereitung der Vernetzung für Hybridknoten](hybrid-nodes-networking.md) für Hybridknoten.

Führen Sie den folgenden Befehl aus, um die Abhängigkeiten der Hybridknoten auf Ihrem On-Premises-Host zu installieren. Der nachfolgende Befehl muss von einem Benutzer ausgeführt werden, der über sudo-/root-Zugriff auf Ihren Host verfügt.

**Wichtig**  
Die Hybridknoten-CLI (`nodeadm`) muss mit einem Benutzer ausgeführt werden, der über sudo/root-Zugriff auf Ihren Host verfügt.
+ Ersetzen Sie `K8S_VERSION` durch die Kubernetes-Nebenversion Ihres Amazon-EKS-Clusters, z. B. `1.31`. Eine Liste der unterstützten Kubernetes-Versionen finden Sie unter [Unterstützte Versionen von Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).
+ Ersetzen Sie `CREDS_PROVIDER` durch den von Ihnen verwendeten On-Premises-Anmeldeinformationsanbieter. Gültige Werte sind `ssm` für AWS SSM und `iam-ra` für AWS IAM Roles Anywhere.

```
nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER
```

## Schritt 3: Hybridknoten mit Ihrem Cluster verbinden
<a name="_step_3_connect_hybrid_nodes_to_your_cluster"></a>

Bevor Sie Ihre Hybridknoten mit Ihrem Cluster verbinden, stellen Sie sicher, dass Sie in Ihrer On-Premises-Firewall und in der Sicherheitsgruppe für Ihren Cluster den erforderlichen Zugriff für die Kommunikation zwischen der Amazon-EKS-Steuerebene und dem Hybridknoten zugelassen haben. Die meisten Probleme in diesem Schritt stehen im Zusammenhang mit der Firewall-Konfiguration, der Konfiguration der Sicherheitsgruppe oder der Konfiguration der IAM-Rolle für Hybridknoten.

**Wichtig**  
Die Hybridknoten-CLI (`nodeadm`) muss mit einem Benutzer ausgeführt werden, der über sudo/root-Zugriff auf Ihren Host verfügt.

1. Erstellen Sie auf jedem Host eine `nodeConfig.yaml`-Datei mit den Werten für Ihre Bereitstellung. Eine vollständige Beschreibung der verfügbaren Konfigurationseinstellungen finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md). Wenn Ihre IAM-Rolle für Hybridknoten über keine Berechtigung für die `eks:DescribeCluster`-Aktion verfügt, müssen Sie Ihren Kubernetes-API-Endpunkt, Ihr Cluster-CA-Bundle und Ihre Kubernetes-Service-IPv4-CIDR im Cluster-Abschnitt Ihres `nodeConfig.yaml` übergeben.

   1. Verwenden Sie das nachfolgende `nodeConfig.yaml`-Beispiel, wenn Sie AWS-SSM-Hybridaktivierungen für Ihren On-Premises-Anmeldeinformationsanbieter verwenden.

      1. Ersetzen Sie `CLUSTER_NAME` mit dem Namen Ihres Clusters.

      1. Ersetzen Sie `AWS_REGION` mit der AWS-Region, in der Ihr Cluster gehostet wird. Beispiel, `us-west-2`.

      1. Ersetzen Sie `ACTIVATION_CODE` durch den Aktivierungscode, den Sie beim Erstellen Ihrer AWS-SSM-Hybridaktivierung erhalten haben. Weitere Informationen finden Sie unter [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md).

      1. Ersetzen Sie `ACTIVATION_ID` durch die Aktivierungs-ID, die Sie beim Erstellen Ihrer AWS-SSM-Hybridaktivierung erhalten haben. Sie können diese Informationen von der AWS-Systems-Manager-Konsole oder über den `aws ssm describe-activations`-Befehl der AWS-CLI abrufen.

         ```
         apiVersion: node.eks.aws/v1alpha1
         kind: NodeConfig
         spec:
           cluster:
             name: CLUSTER_NAME
             region: AWS_REGION
           hybrid:
             ssm:
               activationCode: ACTIVATION_CODE
               activationId: ACTIVATION_ID
         ```

   1. Verwenden Sie das nachfolgende `nodeConfig.yaml`-Beispiel, wenn Sie AWS IAM Roles Anywhere für Ihren On-Premises-Anmeldeinformationsanbieter verwenden.

      1. Ersetzen Sie `CLUSTER_NAME` mit dem Namen Ihres Clusters.

      1. Ersetzen Sie `AWS_REGION` mit der AWS-Region, in der Ihr Cluster gehostet wird. Beispiel, `us-west-2`.

      1. Ersetzen Sie `NODE_NAME` durch den Namen Ihres Knotens. Der Knotenname muss mit dem CN des Zertifikats auf dem Host übereinstimmen, wenn Sie die Vertrauensrichtlinie Ihrer IAM-Rolle für Hybridknoten mit der `"sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}"`-Ressourcenbedingung konfiguriert haben. Der von Ihnen verwendete `nodeName` darf nicht länger als 64 Zeichen sein.

      1. Ersetzen Sie `TRUST_ANCHOR_ARN` durch die ARN des Trust Anchors, den Sie in den Schritten zum Vorbereiten der Anmeldeinformationen für Hybridknoten konfiguriert haben.

      1. Ersetzen Sie `PROFILE_ARN` durch die ARN des Trust Anchors, den Sie in den Schritten für [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md) konfiguriert haben.

      1. Ersetzen Sie `ROLE_ARN` durch die ARN Ihrer IAM-Rolle für Hybridknoten.

      1. Ersetzen Sie `CERTIFICATE_PATH` durch den Pfad auf Ihrer Festplatte zu Ihrem Knotenzertifikat. Wenn Sie keinen Pfad angeben, wird standardmäßig `/etc/iam/pki/server.pem` verwendet.

      1. Ersetzen Sie `KEY_PATH` durch den Pfad auf Ihrer Festplatte zu Ihrem privaten Zertifikatsschlüssel. Wenn Sie keinen Pfad angeben, wird standardmäßig `/etc/iam/pki/server.key` verwendet.

         ```
         apiVersion: node.eks.aws/v1alpha1
         kind: NodeConfig
         spec:
           cluster:
             name: CLUSTER_NAME
             region: AWS_REGION
           hybrid:
             iamRolesAnywhere:
               nodeName: NODE_NAME
               trustAnchorArn: TRUST_ANCHOR_ARN
               profileArn: PROFILE_ARN
               roleArn: ROLE_ARN
               certificatePath: CERTIFICATE_PATH
               privateKeyPath: KEY_PATH
         ```

1. Führen Sie den `nodeadm init`-Befehl mit Ihrem `nodeConfig.yaml` aus, um Ihre Hybridknoten mit Ihrem Amazon-EKS-Cluster zu verbinden.

   ```
   nodeadm init -c file://nodeConfig.yaml
   ```

Wenn der obige Befehl erfolgreich abgeschlossen wurde, ist Ihr Hybridknoten Ihrem Amazon-EKS-Cluster beigetreten. Sie können dies in der Amazon-EKS-Konsole überprüfen, indem Sie zur Registerkarte „Datenverarbeitung“ für Ihren Cluster navigieren ([stellen Sie sicher, dass der IAM-Prinzipal über Anzeigeberechtigungen verfügt](view-kubernetes-resources.md#view-kubernetes-resources-permissions)) oder mit `kubectl get nodes`.

**Wichtig**  
Ihre Knoten haben den Status `Not Ready`, was zu erwarten ist und darauf zurückzuführen ist, dass auf Ihren Hybridknoten kein CNI ausgeführt wird. Wenn Ihre Knoten nicht dem Cluster beigetreten sind, sehen Sie unter [Fehlerbehebung bei Hybridknoten](hybrid-nodes-troubleshooting.md) nach.

## Schritt 4: CNI für Hybridknoten konfigurieren
<a name="_step_4_configure_a_cni_for_hybrid_nodes"></a>

Um Ihre Hybridknoten für die Ausführung von Anwendungen vorzubereiten, führen Sie die Schritte in [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) aus.

# Hybridknoten mit Bottlerocket verbinden
<a name="hybrid-nodes-bottlerocket"></a>

In diesem Thema wird beschrieben, wie Sie Hybridknoten, auf denen Bottlerocket ausgeführt wird, mit einem Amazon-EKS-Cluster verbinden. [Bottlerocket](https://aws.amazon.com/bottlerocket/) ist eine Open-Source-Linux-Distribution, die von gesponsert und unterstützt wird. AWS Bottlerocket wurde speziell für das Hosting von Container-Workloads entwickelt. Mit Bottlerocket können Sie die Verfügbarkeit von containerisierten Bereitstellungen verbessern und die Betriebskosten senken, indem Sie Aktualisierungen Ihrer Container-Infrastruktur automatisieren. Bottlerocket enthält ausschließlich die für den Betrieb von Containern erforderliche Software. Dies führt zu einer verbesserten Ressourcennutzung, einer Reduzierung von Sicherheitsrisiken und einem geringeren Verwaltungsaufwand.

Nur VMware Varianten von Bottlerocket Version v1.37.0 und höher werden von EKS Hybrid Nodes unterstützt. VMware Varianten von Bottlerocket sind für die Kubernetes-Versionen v1.28 und höher verfügbar. Die Betriebssystem-Images für diese Varianten beinhalten Kubelet, Containerd aws-iam-authenticator und andere Softwarevoraussetzungen für EKS-Hybridknoten. Sie können diese Komponenten mithilfe einer Bottlerocket-[Einstellungsdatei](https://github.com/bottlerocket-os/bottlerocket#settings) konfigurieren, die Base64-codierte Benutzerdaten für die Bottlerocket-Bootstrap- und Admin-Container enthält. Durch die Konfiguration dieser Einstellungen kann Bottlerocket Ihren Anmeldeinformationsanbieter für Hybridknoten verwenden, um Hybridknoten gegenüber Ihrem Cluster zu authentifizieren. Nachdem Ihre Hybridknoten dem Cluster beigetreten sind, werden sie mit Status `Not Ready` in der Amazon-EKS-Konsole und in Kubernetes-kompatiblen Tools wie `kubectl` angezeigt. Nachdem Sie die Schritte auf dieser Seite abgeschlossen haben, fahren Sie mit [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) fort, um Ihre Hybridknoten für die Ausführung von Anwendungen vorzubereiten.

## Voraussetzungen
<a name="_prerequisites"></a>

Bevor Sie Hybridknoten mit Ihrem Amazon-EKS-Cluster verbinden, stellen Sie sicher, dass Sie die erforderlichen Schritte abgeschlossen haben.
+ Sie haben Netzwerkkonnektivität von Ihrer lokalen Umgebung zur AWS Region, in der Ihr Amazon EKS-Cluster gehostet wird. Weitere Informationen finden Sie unter [Vorbereitung der Vernetzung für Hybridknoten](hybrid-nodes-networking.md).
+ Sie haben Ihre IAM-Rolle Hybrid Nodes erstellt und Ihren lokalen Anbieter für Anmeldeinformationen eingerichtet (AWS Systems Manager Manager-Hybridaktivierungen oder AWS IAM Roles Anywhere). Weitere Informationen finden Sie unter [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md).
+ Sie haben Ihren für Hybridknoten aktivierten Amazon-EKS-Cluster erstellt. Weitere Informationen finden Sie unter [Einen Amazon-EKS-Cluster mit Hybridknoten erstellen](hybrid-nodes-cluster-create.md).
+ Sie haben Ihre Hybridknoten-IAM-Rolle den Berechtigungen der rollenbasierten Zugriffssteuerung (RBAC) von Kubernetes zugeordnet. Weitere Informationen finden Sie unter [Vorbereitung des Cluster-Zugriffs für Hybridknoten](hybrid-nodes-cluster-prep.md).

## Schritt 1: TOML-Datei für die Bottlerocket-Einstellungen erstellen
<a name="_step_1_create_the_bottlerocket_settings_toml_file"></a>

Um Bottlerocket für Hybridknoten zu konfigurieren, ist es erforderlich, eine `settings.toml`-Datei mit der notwendigen Konfiguration zu erstellen. Der Inhalt der TOML-Datei unterscheidet sich je nach verwendetem Anmeldeinformationsanbieter (SSM oder IAM Roles Anywhere). Diese Datei wird bei der Bereitstellung der Bottlerocket-Instance als Benutzerdaten übermittelt.

**Anmerkung**  
Die unten angegebenen TOML-Dateien stellen nur die Mindesteinstellungen dar, die für die Initialisierung einer VMWare Bottlerocket-Maschine als Knoten in einem EKS-Cluster erforderlich sind. Bottlerocket bietet eine Vielzahl von Einstellungen für verschiedene Anwendungsfälle. Weitere Konfigurationsoptionen, die über die Initialisierung des Hybridknotens hinausgehen, finden Sie in der [Bottlerocket-Dokumentation](https://bottlerocket.dev/en) eine umfassende Liste aller dokumentierten Einstellungen für die von Ihnen verwendete Bottlerocket-Version ([hier](https://bottlerocket.dev/en/os/1.51.x/api/settings-index) sind beispielsweise alle für Bottlerocket 1.51.x verfügbaren Einstellungen).

### SSM
<a name="_ssm"></a>

Wenn Sie AWS Systems Manager als Ihren Anmeldeinformationsanbieter verwenden, erstellen Sie eine `settings.toml` Datei mit dem folgenden Inhalt:

```
[settings.kubernetes]
cluster-name = "<cluster-name>"
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
hostname-override = "<hostname>"
provider-id = "eks-hybrid:///<region>/<cluster-name>/<hostname>"
authentication-mode = "aws"
cloud-provider = ""
server-tls-bootstrap = true

[settings.network]
hostname = "<hostname>"

[settings.aws]
region = "<region>"

[settings.kubernetes.credential-providers.ecr-credential-provider]
enabled = true
cache-duration = "12h"
image-patterns = [
    "*.dkr.ecr.*.amazonaws.com",
    "*.dkr.ecr.*.amazonaws.com.rproxy.goskope.com.cn",
    "*.dkr.ecr.*.amazonaws.eu",
    "*.dkr.ecr-fips.*.amazonaws.com",
    "*.dkr.ecr-fips.*.amazonaws.eu",
    "public.ecr.aws"
]

[settings.kubernetes.node-labels]
"eks.amazonaws.com/compute-type" = "hybrid"
"eks.amazonaws.com/hybrid-credential-provider" = "ssm"

[settings.host-containers.admin]
enabled = true
user-data = "<base64-encoded-admin-container-userdata>"

[settings.bootstrap-containers.eks-hybrid-setup]
mode = "always"
user-data = "<base64-encoded-bootstrap-container-userdata>"

[settings.host-containers.control]
enabled = true
```

Ersetzen Sie die Platzhalter durch die folgenden Werte:
+  `<cluster-name>`: Der Name Ihres Amazon-EKS-Clusters.
+  `<api-server-endpoint>`: Der API-Server-Endpunkt Ihres Clusters.
+  `<cluster-certificate-authority>`: Das base64-codierte CA-Paket Ihres Clusters.
+  `<region>`: Die AWS Region, in der Ihr Cluster gehostet wird, zum Beispiel „us-east-1".
+  `<hostname>`: Der Host-Name der Bottlerocket-Instance, der auch als Knotenname konfiguriert wird. Dies kann ein beliebiger eindeutiger Wert Ihrer Wahl sein, muss jedoch den [Benennungskonventionen für Kubernetes-Objekte](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names) entsprechen. Außerdem darf der von Ihnen verwendete Hostname nicht länger als 64 Zeichen sein. HINWEIS: Bei Verwendung des SSM-Anbieters werden dieser Host-Name und der Knotenname nach der Registrierung der Instance bei SSM durch die ID der verwalteten Instance (z. B. `mi-*`-ID) ersetzt.
+  `<base64-encoded-admin-container-userdata>`: Der Base64-codierte Inhalt der Bottlerocket-Admin-Container-Konfiguration. Durch Aktivieren des Admin-Containers können Sie zur Systemerkundung und zum Debuggen per SSH eine Verbindung zu Ihrer Bottlerocket-Instance herstellen. Obwohl dies keine erforderliche Einstellung ist, empfehlen wir, sie zur einfacheren Fehlerbehebung zu aktivieren. Weitere Informationen zur Authentifizierung mit dem Admin-Container finden Sie in der [Dokumentation zum Bottlerocket-Admin-Container](https://github.com/bottlerocket-os/bottlerocket-admin-container#authenticating-with-the-admin-container). Der Admin-Container akzeptiert SSH-Benutzer- und Schlüsseleingaben im JSON-Format, zum Beispiel:

```
{
  "user": "<ssh-user>",
  "ssh": {
    "authorized-keys": [
      "<ssh-authorized-key>"
    ]
  }
}
```
+  `<base64-encoded-bootstrap-container-userdata>`: Der Base64-codierte Inhalt der Bottlerocket-Bootstrap-Container-Konfiguration. Weitere Informationen zur Konfiguration finden Sie in der [Dokumentation zum Bottlerocket-Bootstrap-Container](https://github.com/bottlerocket-os/bottlerocket-bootstrap-container). Der Bootstrap-Container ist dafür verantwortlich, die Instance als AWS SSM-verwaltete Instance zu registrieren und ihr als Kubernetes-Knoten in Ihrem Amazon EKS-Cluster beizutreten. Die an den Bootstrap-Container übergebenen Benutzerdaten haben die Form eines Befehlsaufrufs, der den zuvor erstellten SSM-Hybrid-Aktivierungscode und die ID als Eingabe akzeptiert:

```
eks-hybrid-ssm-setup --activation-id=<activation-id> --activation-code=<activation-code> --region=<region>
```

### IAM Roles Anywhere
<a name="_iam_roles_anywhere"></a>

Wenn Sie AWS IAM Roles Anywhere als Ihren Anbieter für Anmeldeinformationen verwenden, erstellen Sie eine `settings.toml` Datei mit dem folgenden Inhalt:

```
[settings.kubernetes]
cluster-name = "<cluster-name>"
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
hostname-override = "<hostname>"
provider-id = "eks-hybrid:///<region>/<cluster-name>/<hostname>"
authentication-mode = "aws"
cloud-provider = ""
server-tls-bootstrap = true

[settings.network]
hostname = "<hostname>"

[settings.aws]
region = "<region>"
config = "<base64-encoded-aws-config-file>"

[settings.kubernetes.credential-providers.ecr-credential-provider]
enabled = true
cache-duration = "12h"
image-patterns = [
    "*.dkr.ecr.*.amazonaws.com",
    "*.dkr.ecr.*.amazonaws.com.rproxy.goskope.com.cn",
    "*.dkr.ecr.*.amazonaws.eu",
    "*.dkr.ecr-fips.*.amazonaws.com",
    "*.dkr.ecr-fips.*.amazonaws.eu",
    "public.ecr.aws"
]

[settings.kubernetes.node-labels]
"eks.amazonaws.com/compute-type" = "hybrid"
"eks.amazonaws.com/hybrid-credential-provider" = "iam-ra"

[settings.host-containers.admin]
enabled = true
user-data = "<base64-encoded-admin-container-userdata>"

[settings.bootstrap-containers.eks-hybrid-setup]
mode = "always"
user-data = "<base64-encoded-bootstrap-container-userdata>"
```

Ersetzen Sie die Platzhalter durch die folgenden Werte:
+  `<cluster-name>`: Der Name Ihres Amazon-EKS-Clusters.
+  `<api-server-endpoint>`: Der API-Server-Endpunkt Ihres Clusters.
+  `<cluster-certificate-authority>`: Das base64-codierte CA-Paket Ihres Clusters.
+  `<region>`: Die AWS Region, in der Ihr Cluster gehostet wird, z. B. „us-east-1"
+  `<hostname>`: Der Host-Name der Bottlerocket-Instance, der auch als Knotenname konfiguriert wird. Dies kann ein beliebiger eindeutiger Wert Ihrer Wahl sein, muss jedoch den [Benennungskonventionen für Kubernetes-Objekte](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names) entsprechen. Außerdem darf der von Ihnen verwendete Hostname nicht länger als 64 Zeichen sein. HINWEIS: Bei Verwendung des IAM-RA-Anbieters muss der Knotenname mit dem CN des Zertifikats auf dem Host übereinstimmen, wenn Sie die Vertrauensrichtlinie Ihrer IAM-Rolle für Hybridknoten mit der `"sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}"`-Ressourcenbedingung konfiguriert haben.
+  `<base64-encoded-aws-config-file>`: Der Base64-kodierte Inhalt Ihrer Konfigurationsdatei. AWS Der Inhalt der Datei sollte wie folgt aussehen:

```
[default]
credential_process = aws_signing_helper credential-process --certificate /root/.aws/node.crt --private-key /root/.aws/node.key --profile-arn <profile-arn> --role-arn <role-arn> --trust-anchor-arn <trust-anchor-arn> --role-session-name <role-session-name>
```
+  `<base64-encoded-admin-container-userdata>`: Der Base64-codierte Inhalt der Bottlerocket-Admin-Container-Konfiguration. Durch Aktivieren des Admin-Containers können Sie zur Systemerkundung und zum Debuggen per SSH eine Verbindung zu Ihrer Bottlerocket-Instance herstellen. Obwohl dies keine erforderliche Einstellung ist, empfehlen wir, sie zur einfacheren Fehlerbehebung zu aktivieren. Weitere Informationen zur Authentifizierung mit dem Admin-Container finden Sie in der [Dokumentation zum Bottlerocket-Admin-Container](https://github.com/bottlerocket-os/bottlerocket-admin-container#authenticating-with-the-admin-container). Der Admin-Container akzeptiert SSH-Benutzer- und Schlüsseleingaben im JSON-Format, zum Beispiel:

```
{
  "user": "<ssh-user>",
  "ssh": {
    "authorized-keys": [
      "<ssh-authorized-key>"
    ]
  }
}
```
+  `<base64-encoded-bootstrap-container-userdata>`: Der Base64-codierte Inhalt der Bottlerocket-Bootstrap-Container-Konfiguration. Weitere Informationen zur Konfiguration finden Sie in der [Dokumentation zum Bottlerocket-Bootstrap-Container](https://github.com/bottlerocket-os/bottlerocket-bootstrap-container). Der Bootstrap-Container ist für die Erstellung der IAM Roles Anywhere-Host-Zertifikats- und Zertifikat-Privatschlüsseldateien auf der Instance verantwortlich. Diese werden dann von `aws_signing_helper` verwendet, um temporäre Anmeldeinformationen für die Authentifizierung bei Ihrem Amazon-EKS-Cluster zu erhalten. Die an den Bootstrap-Container übergebenen Benutzerdaten haben die Form eines Befehlsaufrufs, der als Eingabe den Inhalt des zuvor erstellten Zertifikats und des privaten Schlüssels akzeptiert:

```
eks-hybrid-iam-ra-setup --certificate=<certificate> --key=<private-key>
```

## Schritt 2: Bottlerocket vSphere VM mit Benutzerdaten bereitstellen
<a name="_step_2_provision_the_bottlerocket_vsphere_vm_with_user_data"></a>

Nachdem Sie die TOML-Datei erstellt haben, übergeben Sie sie während der Erstellung der vSphere-VM als Benutzerdaten. Beachten Sie, dass die Benutzerdaten konfiguriert werden müssen, bevor die VM zum ersten Mal gestartet wird. Daher müssen Sie diese bei der Erstellung der Instance angeben. Wenn Sie die VM im Voraus erstellen möchten, muss sie sich im Status „poweredOff“ befinden, bis Sie die Benutzerdaten dafür konfiguriert haben. Beispiel bei Verwendung der `govc`-CLI:

### Erstellen einer VM zum ersten Mal
<a name="_creating_vm_for_the_first_time"></a>

```
govc vm.create \
  -on=true \
  -c=2 \
  -m=4096 \
  -net.adapter=<network-adapter> \
  -net=<network-name> \
  -e guestinfo.userdata.encoding="base64" \
  -e guestinfo.userdata="$(base64 -w0 settings.toml)" \
  -template=<template-name> \
  <vm-name>
```

### Aktualisieren der Benutzerdaten für eine vorhandene VM
<a name="_updating_user_data_for_an_existing_vm"></a>

```
govc vm.create \
    -on=false \
    -c=2 \
    -m=4096 \
    -net.adapter=<network-adapter> \
    -net=<network-name> \
    -template=<template-name> \
    <vm-name>

govc vm.change
    -vm <vm-name> \
    -e guestinfo.userdata="$(base64 -w0 settings.toml)" \
    -e guestinfo.userdata.encoding="base64"

govc vm.power -on <vm-name>
```

In den oben genannten Abschnitten gibt die `-e guestinfo.userdata.encoding="base64"`-Option an, dass die Benutzerdaten base64-codiert sind. Die `-e guestinfo.userdata`-Option übergibt den base64-codierten Inhalt der `settings.toml`-Datei als Benutzerdaten an die Bottlerocket-Instance. Ersetzen Sie die Platzhalter durch Ihre spezifischen Werte, wie beispielsweise die Bottlerocket-OVA-Vorlage und die Netzwerkdetails.

## Schritt 3: Verbindung des Hybridknotens überprüfen
<a name="_step_3_verify_the_hybrid_node_connection"></a>

Nach dem Start der Bottlerocket-Instance wird versucht, eine Verbindung zu Ihrem Amazon-EKS-Cluster herzustellen. Sie können die Verbindung in der Amazon-EKS-Konsole überprüfen, indem Sie zur Registerkarte „Rechnen“ für Ihren Cluster navigieren oder den folgenden Befehl ausführen:

```
kubectl get nodes
```

**Wichtig**  
Ihre Knoten haben den Status `Not Ready`, was zu erwarten ist und darauf zurückzuführen ist, dass auf Ihren Hybridknoten kein CNI ausgeführt wird. Wenn Ihre Knoten nicht dem Cluster beigetreten sind, sehen Sie unter [Fehlerbehebung bei Hybridknoten](hybrid-nodes-troubleshooting.md) nach.

## Schritt 4: CNI für Hybridknoten konfigurieren
<a name="_step_4_configure_a_cni_for_hybrid_nodes"></a>

Um Ihre Hybridknoten für die Ausführung von Anwendungen vorzubereiten, führen Sie die Schritte in [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) aus.

# Aktualisierung von Hybridknoten für Ihren Cluster
<a name="hybrid-nodes-upgrade"></a>

Die Anleitung zum Upgrade von Hybridknoten ähnelt der für selbstverwaltete Amazon-EKS-Knoten, die in Amazon EC2 ausgeführt werden. Wir empfehlen Ihnen, neue Hybridknoten auf Ihrer Kubernetes-Zielversion zu erstellen, Ihre vorhandenen Anwendungen ordnungsgemäß auf die Hybridknoten der neuen Kubernetes-Version zu migrieren und die Hybridknoten der alten Kubernetes-Version aus Ihrem Cluster zu entfernen. Lesen Sie unbedingt die [Bewährten Methoden für Amazon-EKS-Upgrades](https://docs.aws.amazon.com/eks/latest/best-practices/cluster-upgrades.html), bevor Sie ein Upgrade starten. Amazon EKS Hybrid Nodes verfügen über dieselbe [Kubernetes-Versionsunterstützung](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) für Amazon-EKS-Cluster mit Cloud-Knoten, einschließlich Standard- und erweiterten Support.

Amazon EKS Hybrid Nodes befolgen dieselbe [Versionsabweichungsrichtlinie](https://kubernetes.io/releases/version-skew-policy/#supported-version-skew) für Knoten wie vorgeschaltete Kubernetes. Amazon EKS Hybrid Nodes dürfen keine neuere Version als die Amazon-EKS-Steuerebene aufweisen und Hybridknoten dürfen bis zu drei Kubernetes-Nebenversionen älter sein als die Nebenversion der Amazon-EKS-Steuerebene.

Wenn Sie keine freien Kapazitäten haben, um neue Hybridknoten auf Ihrer Zielversion von Kubernetes für eine Cutover-Migrations-Upgrade-Strategie zu erstellen, können Sie alternativ die CLI (`nodeadm`) für Amazon EKS Hybrid Nodes verwenden, um die Kubernetes-Version Ihrer Hybridknoten vor Ort zu aktualisieren.

**Wichtig**  
Wenn Sie Ihre Hybridknoten vor Ort mit `nodeadm` aktualisieren, kommt es während des Vorgangs zu Ausfallzeiten für den Knoten, bei denen die ältere Version der Kubernetes-Komponenten heruntergefahren und die Komponenten der neuen Kubernetes-Version installiert und gestartet werden.

## Voraussetzungen
<a name="_prerequisites"></a>

Stellen Sie vor dem Upgrade sicher, dass Sie die folgenden Voraussetzungen erfüllt haben.
+ Die Ziel-Kubernetes-Version für Ihr Hybridknoten-Upgrade muss gleich oder niedriger als die Version der Amazon-EKS-Steuerebene sein.
+ Wenn Sie eine Cutover-Migrations-Upgrade-Strategie verfolgen, müssen die neuen Hybridknoten, die Sie auf Ihrer Ziel-Kubernetes-Version installieren, die [Voraussetzungen für die Einrichtung von Hybridknoten](hybrid-nodes-prereqs.md)-Anforderungen erfüllen. Dies umfasst IP-Adressen innerhalb des Fern-Knoten-Netzwerk-CIDR, das Sie bei der Erstellung des Amazon-EKS-Clusters angegeben haben.
+ Sowohl für die Cutover-Migration als auch für direkte Upgrades müssen die Hybridknoten Zugriff auf die [erforderlichen Domains](hybrid-nodes-networking.md#hybrid-nodes-networking-on-prem) haben, um die neuen Versionen der Abhängigkeiten der Hybridknoten abzurufen.
+ Sie müssen kubectl auf Ihrem lokalen Rechner oder Ihrer Instance installiert haben, die Sie für die Interaktion mit Ihrem API-Endpunkt für Amazon EKS Kubernetes verwenden.
+ Die Version Ihres CNI muss die Kubernetes-Version unterstützen, auf die Sie aktualisieren. Ist dies nicht der Fall, aktualisieren Sie Ihre CNI-Version, bevor Sie Ihre Hybridknoten aktualisieren. Weitere Informationen finden Sie unter [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md).

## Cutover-Migration (Blau-Grün)-Upgrades
<a name="hybrid-nodes-upgrade-cutover"></a>

 *Cutover-Migrations-Upgrades* beziehen sich auf den Prozess der Erstellung neuer Hybridknoten auf neuen Hosts mit Ihrer Ziel-Kubernetes-Version, der ordnungsgemäßen Migration Ihrer vorhandenen Anwendungen auf die neuen Hybridknoten auf Ihrer Ziel-Kubernetes-Version und der Entfernung der Hybridknoten auf der alten Kubernetes-Version aus Ihrem Cluster. Diese Strategie wird auch als Blau-Grün-Migration bezeichnet.

1. Verbinden Sie Ihre neuen Hosts als Hybridknoten, indem Sie die Schritte [Hybridknoten verbinden](hybrid-nodes-join.md) befolgen. Verwenden Sie beim Ausführen des `nodeadm install`-Befehls Ihre Ziel-Kubernetes-Version.

1. Aktivieren Sie die Kommunikation zwischen den neuen Hybridknoten auf der Kubernetes-Zielversion und Ihren Hybridknoten auf der alten Kubernetes-Version. Diese Konfiguration ermöglicht die Kommunikation zwischen Pods, während Sie Ihre Workload auf die Hybridknoten der Kubernetes-Zielversion migrieren.

1. Bestätigen Sie, dass Ihre Hybridknoten auf Ihrer Ziel-Kubernetes-Version Ihrem Cluster erfolgreich beigetreten sind und den Status „Bereit“ aufweisen.

1. Verwenden Sie den folgenden Befehl, um jeden der Knoten, die Sie entfernen möchten, als nicht planbar zu markieren. Dadurch wird verhindert, dass auf den zu ersetzenden Knoten neue Pods geplant oder neu geplant werden. Weitere Informationen finden Sie unter [kubectl cordon](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_cordon/) in der Kubernetes-Dokumentation. Ersetzen Sie `NODE_NAME` durch den Namen der Hybridknoten in der alten Kubernetes-Version.

   ```
   kubectl cordon NODE_NAME
   ```

   Mit dem folgenden Code-Ausschnitt können Sie alle Knoten einer bestimmten Kubernetes-Version (in diesem Fall `1.28`) identifizieren und abgrenzen.

   ```
   K8S_VERSION=1.28
   for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name')
   do
       echo "Cordoning $node"
       kubectl cordon $node
   done
   ```

1. Wenn Ihre aktuelle Bereitstellung weniger als zwei CoreDNS-Replikate in Ihren Hybridknoten ausführt, skalieren die Bereitstellung auf mindestens zwei Replikate. Wir empfehlen, dass Sie aus Gründen der Ausfallsicherheit im Normalbetrieb mindestens zwei CoreDNS-Replikate in Hybridknoten ausführen.

   ```
   kubectl scale deployments/coredns --replicas=2 -n kube-system
   ```

1. Leeren Sie jeden Hybridknoten auf der alten Kubernetes-Version, den Sie aus Ihrem Cluster entfernen möchten, mit dem folgenden Befehl. Weitere Informationen zum Entleeren von Knoten finden Sie unter [Sicheres Entleeren eines Knotens](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/) in der Kubernetes-Dokumentation. Ersetzen Sie `NODE_NAME` durch den Namen der Hybridknoten in der alten Kubernetes-Version.

   ```
   kubectl drain NODE_NAME --ignore-daemonsets --delete-emptydir-data
   ```

   Mit dem folgenden Code-Ausschnitt können Sie alle Knoten einer bestimmten Kubernetes-Version (in diesem Fall `1.28`) identifizieren und entleeren.

   ```
   K8S_VERSION=1.28
   for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name')
   do
       echo "Draining $node"
       kubectl drain $node --ignore-daemonsets --delete-emptydir-data
   done
   ```

1. Sie können `nodeadm` verwenden, um die Artefakte der Hybridknoten zu stoppen und vom Host zu entfernen. Sie müssen `nodeadm` mit einem Benutzer ausführen, der über Root-/Sudo-Berechtigungen verfügt. Standardmäßig wird `nodeadm uninstall` nicht fortgesetzt, wenn auf dem Knoten noch Pods vorhanden sind. Weitere Informationen finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md).

   ```
   nodeadm uninstall
   ```

1. Nachdem die Artefakte der Hybridknoten angehalten und deinstalliert wurden, entfernen Sie die Knoten-Ressource aus Ihrem Cluster.

   ```
   kubectl delete node node-name
   ```

   Mit dem folgenden Code-Ausschnitt können Sie alle Knoten einer bestimmten Kubernetes-Version (in diesem Fall `1.28`) identifizieren und löschen.

   ```
   K8S_VERSION=1.28
   for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name')
   do
       echo "Deleting $node"
       kubectl delete node $node
   done
   ```

1. Abhängig von Ihrer CNI-Wahl können nach der Ausführung der obigen Schritte Artefakte auf Ihren Hybridknoten verbleiben. Weitere Informationen finden Sie unter [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md).

## Direkte Upgrades
<a name="hybrid-nodes-upgrade-inplace"></a>

Der direkte Upgrade-Prozess bezieht sich auf die Verwendung von `nodeadm upgrade` zum Upgrade der Kubernetes-Version für Hybridknoten ohne Verwendung neuer physischer oder virtueller Hosts und einer Cutover-Migrationsstrategie. Der `nodeadm upgrade`-Prozess beendet die vorhandenen älteren Kubernetes-Komponenten, die auf dem Hybridknoten ausgeführt werden, deinstalliert die vorhandenen älteren Kubernetes-Komponenten, installiert die neuen Ziel-Kubernetes-Komponenten und startet die neuen Ziel-Kubernetes-Komponenten. Es wird dringend empfohlen, jeweils nur einen Knoten zu aktualisieren, um die Auswirkungen auf Anwendungen, die auf den Hybridknoten ausgeführt werden, zu minimieren. Die Dauer dieses Vorgangs hängt von Ihrer Netzwerkbandbreite und Latenz ab.

1. Verwenden Sie den folgenden Befehl, um den Knoten, den Sie aktualisieren, als nicht planbar zu markieren. Dadurch wird sichergestellt, dass auf dem Knoten, den Sie aktualisieren, keine neuen Pods geplant oder neu geplant werden. Weitere Informationen finden Sie unter [kubectl cordon](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_cordon/) in der Kubernetes-Dokumentation. `NODE_NAME` durch den Namen des Hybridknotens, den Sie aktualisieren, ersetzen

   ```
   kubectl cordon NODE_NAME
   ```

1. Entleeren Sie den Knoten, den Sie aktualisieren, mit dem folgenden Befehl. Weitere Informationen zum Entleeren von Knoten finden Sie unter [Sicheres Entleeren eines Knotens](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/) in der Kubernetes-Dokumentation. Ersetzen Sie `NODE_NAME` durch den Namen des Hybridknotens, den Sie aktualisieren.

   ```
   kubectl drain NODE_NAME --ignore-daemonsets --delete-emptydir-data
   ```

1. Führen Sie `nodeadm upgrade` auf dem Hybridknoten aus, den Sie aktualisieren. Sie müssen `nodeadm` mit einem Benutzer ausführen, der über Root-/Sudo-Berechtigungen verfügt. Der Name des Knotens bleibt während des Upgrades für die Anmeldeinformationsanbieter AWS SSM und AWS IAM Roles Anywhere erhalten. Sie können die Anmeldeinformationsanbieter während des Upgrades nicht ändern. Konfigurationswerte für `nodeConfig.yaml` finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md). Ersetzen Sie `K8S_VERSION` durch die Ziel-Version von Kubernetes, auf die Sie aktualisieren möchten.

   ```
   nodeadm upgrade K8S_VERSION -c file://nodeConfig.yaml
   ```

1. Um die Planung von Pods auf dem Knoten nach dem Upgrade zuzulassen, geben Sie Folgendes ein. Ersetzen Sie `NODE_NAME` durch den Namen des Knotens.

   ```
   kubectl uncordon NODE_NAME
   ```

1. Überwachen Sie den Status Ihrer Hybridknoten und warten Sie, bis Ihre Knoten heruntergefahren sind und mit dem Status „Bereit“ auf der neuen Kubernetes-Version neu gestartet wurden.

   ```
   kubectl get nodes -o wide -w
   ```

# Patch-Sicherheitsaktualisierungen für Hybridknoten
<a name="hybrid-nodes-security"></a>

In diesem Thema wird das Verfahren zum direkten Patchen von Sicherheitsupdates für bestimmte Pakete und Abhängigkeiten beschrieben, die auf Ihren Hybridknoten ausgeführt werden. Als bewährte Methode empfehlen wir Ihnen, Ihre Hybridknoten regelmäßig zu aktualisieren, um CVEs und Sicherheits-Patches zu erhalten.

Schritte zum Upgrade der Kubernetes-Version finden Sie unter [Aktualisierung von Hybridknoten für Ihren Cluster](hybrid-nodes-upgrade.md).

Ein Beispiel für Software, die möglicherweise Sicherheits-Patches benötigt, ist `containerd`.

## `Containerd`
<a name="_containerd"></a>

 `containerd` ist die Standard-Kubernetes-Container-Laufzeitumgebung und Kernabhängigkeit für EKS-Hybridknoten, die zur Verwaltung des Container-Lebenszyklus verwendet wird, einschließlich des Abrufens von Images und der Verwaltung der Container-Ausführung. Auf einem Hybridknoten können Sie `containerd` über die [nodeadm CLI](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-nodeadm.html) oder manuell installieren. Abhängig vom Betriebssystem Ihres Knotens installiert `nodeadm` `containerd` aus dem vom Betriebssystem bereitgestellten Paket oder dem Docker-Paket.

Wenn eine CVE in `containerd` veröffentlicht wurde, stehen Ihnen die folgenden Optionen zur Verfügung, um auf Ihren Hybridknoten ein Upgrade auf die gepatchte Version von `containerd` durchzuführen.

## Schritt 1: Überprüfen, ob der Patch in den Paket-Managern veröffentlicht wurde
<a name="_step_1_check_if_the_patch_published_to_package_managers"></a>

Sie können überprüfen, ob der `containerd`-CVE-Patch für den jeweiligen Betriebssystem-Paket-Manager veröffentlicht wurde, indem Sie die entsprechenden Sicherheitsberichte lesene:
+  [Amazon Linux 2023](https://alas.aws.amazon.com/alas2023.html) 
+  [RHEL](https://access.redhat.com/security/security-updates/security-advisories) 
+  [Ubuntu 20.04](https://ubuntu.com/security/notices?order=newest&release=focal) 
+  [Ubuntu 22.04](https://ubuntu.com/security/notices?order=newest&release=jammy) 
+  [Ubuntu 24.04](https://ubuntu.com/security/notices?order=newest&release=noble) 

Wenn Sie das Docker-Repository als Quelle von `containerd` verwenden, können Sie die [Docker-Sicherheitsankündigungen](https://docs.docker.com/security/security-announcements/) überprüfen, um die Verfügbarkeit der gepatchten Version im Docker-Repository zu ermitteln.

## Schritt 2: Methode zur Installation des Patches auswählen
<a name="_step_2_choose_the_method_to_install_the_patch"></a>

Es gibt drei Methoden, um Sicherheitsupgrades direkt auf Knoten zu patchen und zu installieren. Welche Methode Sie verwenden können, hängt davon ab, ob der Patch vom Betriebssystem im Paket-Manager verfügbar ist oder nicht:

1. Installieren Sie Patches mit `nodeadm upgrade`, die in Paket-Managern veröffentlicht wurden, siehe [Schritt 2 a](#hybrid-nodes-security-nodeadm).

1. Installieren Sie Patches direkt mit den Paket-Managern, siehe [Schritt 2 b](#hybrid-nodes-security-package).

1. Installieren Sie benutzerdefinierte Patches, die nicht in Paket-Managern veröffentlicht wurden. Beachten Sie, dass für benutzerdefinierte Patches für `containerd`, [Schritt 2 c](#hybrid-nodes-security-manual), besondere Überlegungen angestellt werden müssen.

## Schritt 2 a: Patchen mit `nodeadm upgrade`
<a name="hybrid-nodes-security-nodeadm"></a>

Nachdem Sie bestätigt haben, dass der `containerd`-CVE-Patch im Betriebssystem oder in den Docker-Repos (entweder Apt oder RPM) veröffentlicht wurde, können Sie mit dem `nodeadm upgrade`-Befehl auf die neueste Version von `containerd` aktualisieren. Da es sich hierbei nicht um ein Upgrade der Kubernetes-Version handelt, müssen Sie Ihre aktuelle Kubernetes-Version an den `nodeadm`-Upgrade-Befehl übergeben.

```
nodeadm upgrade K8S_VERSION --config-source file:///root/nodeConfig.yaml
```

## Schritt 2 b: Patchen mit Paket-Managern des Betriebssystems
<a name="hybrid-nodes-security-package"></a>

Alternativ können Sie auch über den jeweiligen Paket-Manager aktualisieren und damit das `containerd`-Paket wie folgt aktualisieren.

 **Amazon Linux 2023** 

```
sudo yum update -y
sudo yum install -y containerd
```

 **RHEL** 

```
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo yum update -y
sudo yum install -y containerd
```

 **Ubuntu ** 

```
sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update -y
sudo apt install -y --only-upgrade containerd.io
```

## Schritt 2 c: `Containerd`-CVE-Patch nicht in Paket-Managern veröffentlicht
<a name="hybrid-nodes-security-manual"></a>

Wenn die gepatchte `containerd`-Version nur über andere Kanäle als den Paket-Manager verfügbar ist, beispielsweise in GitHub-Veröffentlichungen, können Sie `containerd` von der offiziellen GitHub-Website installieren.

1. Wenn der Rechner bereits als Hybridknoten dem Cluster beigetreten ist, müssen Sie den `nodeadm uninstall`-Befehl ausführen.

1. Installieren Sie die offiziellen `containerd`-Binärdateien. Befolgen Sie die [offiziellen Installationsschritte](https://github.com/containerd/containerd/blob/main/docs/getting-started.md#option-1-from-the-official-binaries) auf GitHub.

1. Führen Sie den `nodeadm install`-Befehl mit dem `--containerd-source`-Argument `none` aus, wodurch die `containerd`-Installation über `nodeadm` übersprungen wird. Sie können den Wert `none` in der `containerd`-Quelle für jedes Betriebssystem verwenden, auf dem der Knoten ausgeführt wird.

   ```
   nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER --containerd-source none
   ```

# Hybridknoten entfernen
<a name="hybrid-nodes-remove"></a>

In diesem Thema wird beschrieben, wie Sie Hybridknoten aus Ihrem Amazon-EKS-Cluster löschen. Sie müssen Ihre Hybridknoten mit einem Kubernetes-kompatiblen Tool Ihrer Wahl, wie beispielsweise [kubectl](https://kubernetes.io/docs/reference/kubectl/), löschen. Die Gebühren für Hybridknoten werden eingestellt, sobald das Knotenobjekt aus dem Amazon-EKS-Cluster entfernt wird. Weitere Informationen zu den Preisen für Hybridknoten finden Sie unter [Amazon EKS – Preise](https://aws.amazon.com/eks/pricing/).

**Wichtig**  
Das Entfernen von Knoten führt zu einer Unterbrechung der auf dem Knoten ausgeführten Workloads. Bevor Sie Hybridknoten löschen, empfehlen wir Ihnen, zunächst den Knoten zu entleeren, um Pods auf einen anderen aktiven Knoten zu verschieben. Weitere Informationen zum Entleeren von Knoten finden Sie unter [Sicheres Entleeren eines Knotens](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/) in der Kubernetes-Dokumentation.

Führen Sie die folgenden kubectl-Schritte von Ihrem lokalen Computer oder Ihrer Instance aus, die Sie für die Interaktion mit dem Kubernetes-API-Endpunkt des Amazon-EKS-Clusters verwenden. Wenn Sie eine bestimmte `kubeconfig`-Datei verwenden, verwenden Sie das `--kubeconfig`-Flag.

## Schritt 1: Knoten auflisten
<a name="_step_1_list_your_nodes"></a>

```
kubectl get nodes
```

## Schritt 2: Knoten entleeren
<a name="_step_2_drain_your_node"></a>

Weitere Informationen zu diesem `kubectl drain`-Befehl finden Sie unter [kubectl drain](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_drain/) in der Kubernetes-Dokumentation.

```
kubectl drain --ignore-daemonsets <node-name>
```

## Schritt 3: Hybridknoten-Artefakte beenden und deinstallieren
<a name="_step_3_stop_and_uninstall_hybrid_nodes_artifacts"></a>

Sie können die CLI von Amazon EKS Hybrid Nodes (`nodeadm`) verwenden, um die Hybridknoten-Artefakte auf dem Host zu beenden und zu entfernen. Sie müssen `nodeadm` mit einem Benutzer ausführen, der über Root-/Sudo-Berechtigungen verfügt. Standardmäßig wird `nodeadm uninstall` nicht fortgesetzt, wenn auf dem Knoten noch Pods vorhanden sind. Wenn Sie AWS Systems Manager (SSM) als Anmeldeinformationsanbieter verwenden, wird der Host mit diesem `nodeadm uninstall`-Befehl als von AWS SSM verwaltete Instance deregistriert. Weitere Informationen finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md).

```
nodeadm uninstall
```

## Schritt 4: Knoten aus dem Cluster entfernen
<a name="_step_4_delete_your_node_from_the_cluster"></a>

Nachdem die Artefakte der Hybridknoten angehalten und deinstalliert wurden, entfernen Sie die Knoten-Ressource aus Ihrem Cluster.

```
kubectl delete node <node-name>
```

## Schritt 5: Auf verbleibende Artefakte überprüfen
<a name="_step_5_check_for_remaining_artifacts"></a>

Abhängig von Ihrer CNI-Wahl können nach der Ausführung der obigen Schritte Artefakte auf Ihren Hybridknoten verbleiben. Weitere Informationen finden Sie unter [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md).

# Konfiguration von Anwendungsnetzwerken, Add-Ons und Webhooks für Hybridknoten
<a name="hybrid-nodes-configure"></a>

Nachdem Sie einen EKS-Cluster für Hybridknoten erstellt haben, konfigurieren Sie zusätzliche Funktionen für Anwendungsnetzwerke (CNI, BGP, Ingress, Load Balancing, Netzwerkrichtlinien), Add-Ons, Webhooks und Proxy-Einstellungen. Eine vollständige Liste der EKS- und Community-Add-Ons, die mit Hybridknoten kompatibel sind, finden Sie unte [Konfiguration von Add-Ons für Hybridknoten](hybrid-nodes-add-ons.md).

 **EKS-Cluster-Erkenntnisse** EKS umfasst Überprüfungen auf Fehlkonfigurationen in Ihrer Hybridknoten-Einrichtung, welche die Funktionalität Ihres Clusters oder Ihrer Workloads beeinträchtigen könnten. Weitere Informationen zu Cluster- Erkenntnissen finden Sie unter [Vorbereitung auf Kubernetes-Versionsupgrades und Beheben von Fehlkonfigurationen mit Cluster-Einblicken](cluster-insights.md).

Nachfolgend sind die allgemeinen Funktionen und Add-Ons aufgeführt, die Sie mit Hybridknoten verwenden können:
+  **Container Networking Interface (CNI)**: AWS unterstützt [Cilium](https://docs.cilium.io/en/stable/index.html) als CNI für Hybridknoten. Weitere Informationen finden Sie unter [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md). Beachten Sie, dass das AWS VPC CNI nicht mit Hybridknoten verwendet werden kann.
+  **CoreDNS und `kube-proxy` **: CoreDNS und `kube-proxy` werden automatisch installiert, wenn Hybridknoten dem EKS-Cluster beitreten. Diese Add-Ons können nach der Cluster-Erstellung als EKS-Add-Ons verwaltet werden.
+  **Ingress und Lastenausgleich**: Sie können den AWS Load Balancer Controller und den Application Load Balancer (ALB) oder Network Load Balancer (NLB) mit dem Zieltyp `ip` für Workloads verwenden, die auf Hybridknoten ausgeführt werden. AWS unterstützt die in Cilium integrierten Feature für Ingress, Gateway und Kubernetes-Service-Lastenausgleich für Workloads, die auf Hybridknoten ausgeführt werden. Weitere Informationen erhalten Sie unter [Konfiguration von Kubernetes Ingress für Hybridknoten](hybrid-nodes-ingress.md) und [Konfiguration von Services vom Typ LoadBalancer für Hybridknoten](hybrid-nodes-load-balancing.md).
+  **Metriken**: Sie können Amazon Managed Service für Prometheus (AMP) agentenlose Scraper, AWS Distro for Open Telemetry (ADOT) und den Amazon-CloudWatch-Beobachtbarkeits-Agent mit hybriden Knoten verwenden. Um agentenlose AMP-Scraper für Pod-Metriken in Hybridknoten zu verwenden, müssen Ihre Pods über die VPC, die Sie für den EKS-Cluster verwenden, zugänglich sein.
+  **Protokolle**: Sie können die Protokollierung der EKS-Steuerebene für Cluster mit aktivierten Hybridknoten aktivieren. Sie können das ADOT-EKS-Add-On und das EKS-Add-On für den Amazon-CloudWatch-Beobachtbarkeits-Agenten für die Protokollierung von Hybridknoten und Pods verwenden.
+  **Pod Identities und IRSA**: Sie können EKS Pod Identities und IAM-Rollen für Servicekonten (IRSA) mit Anwendungen verwenden, die in Hybridknoten ausgeführt werden, um einen differenzierten Zugriff für Ihre Pods zu ermöglichen, die auf Hybridknoten mit anderen AWS-Services ausgeführt werden.
+  **Webhooks**: Wenn Sie Webhooks ausführen, finden Sie unter [Konfiguration von Webhooks für Hybridknoten](hybrid-nodes-webhooks.md) Überlegungen und Schritte zum optionalen Ausführen von Webhooks auf Cloud-Knoten, falls Sie Ihre On-Premises-Pod-Netzwerke nicht routingfähig machen können.
+  **Proxy**: Wenn Sie in Ihrer On-Premises-Umgebung einen Proxy-Server für den Datenverkehr verwenden, der Ihr Rechenzentrum oder Ihre Edge-Umgebung verlässt, können Sie Ihre Hybridknoten und Ihren Cluster so konfigurieren, dass sie Ihren Proxy-Server verwenden. Weitere Informationen finden Sie unter [Konfiguration des Proxys für Hybridknoten](hybrid-nodes-proxy.md).

**Topics**
+ [

# CNI für Hybridknoten konfigurieren
](hybrid-nodes-cni.md)
+ [

# Konfiguration von Add-Ons für Hybridknoten
](hybrid-nodes-add-ons.md)
+ [

# Konfiguration von Webhooks für Hybridknoten
](hybrid-nodes-webhooks.md)
+ [

# Konfiguration des Proxys für Hybridknoten
](hybrid-nodes-proxy.md)
+ [

# Konfiguration von Cilium BGP für Hybridknoten
](hybrid-nodes-cilium-bgp.md)
+ [

# Konfiguration von Kubernetes Ingress für Hybridknoten
](hybrid-nodes-ingress.md)
+ [

# Konfiguration von Services vom Typ LoadBalancer für Hybridknoten
](hybrid-nodes-load-balancing.md)
+ [

# Konfiguration von Kubernetes-Netzwerkrichtlinien für Hybridknoten
](hybrid-nodes-network-policies.md)

# CNI für Hybridknoten konfigurieren
<a name="hybrid-nodes-cni"></a>

Cilium ist das AWS unterstützte Container Networking Interface (CNI) für Amazon EKS-Hybridknoten. Sie müssen ein CNI für Hybridknoten installieren, damit diese für die Verarbeitung von Workloads bereit sind. Hybridknoten werden mit dem Status `Not Ready` angezeigt, bis ein CNI ausgeführt wird. Sie können das CNI mit Tools Ihrer Wahl, wie beispielsweise Helm, verwalten. Die Anweisungen auf dieser Seite behandeln das Lebenszyklusmanagement von Cilium (Installation, Upgrade, Löschung). Informationen zur Konfiguration von Cilium für Ingress, Load Balancing und Netzwerkrichtlinien finden Sie unter [Übersicht über Cilium Ingress und Cilium Gateway](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium), [Servicetyp LoadBalancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer) und [Konfiguration von Kubernetes-Netzwerkrichtlinien für Hybridknoten](hybrid-nodes-network-policies.md).

Cilium wird nicht unterstützt, AWS wenn es auf Knoten in der Cloud ausgeführt wird. AWS Das Amazon VPC CNI ist nicht mit Hybridknoten kompatibel und das VPC CNI ist mit Anti-Affinität für das Label `eks.amazonaws.com/compute-type: hybrid` konfiguriert.

Die zuvor auf dieser Seite befindliche Calico-Dokumentation wurde in das [EKS-Repository für Hybrid-Beispiele](https://github.com/aws-samples/eks-hybrid-examples) verschoben.

## Versionskompatibilität
<a name="hybrid-nodes-cilium-version-compatibility"></a>

Cilium-Versionen `v1.17.x` und `v1.18.x` werden für EKS-Hybridknoten für jede in Amazon EKS unterstützte Kubernetes-Version unterstützt.

**Anmerkung**  
 **Kernelanforderung für Cilium v1.18.3**: Aufgrund der Kernelanforderungen (Linux-Kernel >= 5.10) wird Cilium v1.18.3 nicht unterstützt auf:
+ Ubuntu 20.04
+ Red Hat Enterprise Linux (RHEL) 8

[Die Systemanforderungen finden Sie unter Systemanforderungen für Cilium.](https://docs.cilium.io/en/stable/operations/system_requirements/)

Informationen zu den von Amazon EKS unterstützten Kubernetes-Versionen finden Sie unter [Kubernetes-Versionsunterstützung](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html). EKS-Hybridknoten verfügen über dieselbe Kubernetes-Versionsunterstützung wie Amazon-EKS-Cluster mit Cloud-Knoten.

## Unterstützte Funktionen
<a name="hybrid-nodes-cilium-support"></a>

 AWS verwaltet Builds von Cilium für EKS-Hybridknoten, die auf dem Open-Source-Projekt [Cilium](https://github.com/cilium/cilium) basieren. Um Support von AWS Cilium zu erhalten, müssen Sie die von Cilium AWS gepflegten Cilium-Builds und die unterstützten Cilium-Versionen verwenden.

 AWS bietet technischen Support für die Standardkonfigurationen der folgenden Funktionen von Cilium zur Verwendung mit EKS-Hybridknoten. Wenn Sie beabsichtigen, Funktionen außerhalb des AWS Supports zu nutzen, wird empfohlen, alternativen kommerziellen Support für Cilium in Anspruch zu nehmen oder über das interne Fachwissen zu verfügen, um Fehler zu beheben und Problemlösungen für das Cilium-Projekt bereitzustellen.


| Cilium-Feature | Unterstützt von AWS  | 
| --- | --- | 
|  Kubernetes-Netzwerkkonformität  |  Ja  | 
|  Konnektivität des zentralen Clusters  |  Ja  | 
|  IP-Familie  |  IPv4  | 
|  Verwaltung des Lebenszyklus  |  Helm  | 
|  Netzwerkmodus  |  VXLAN-Kapselung  | 
|  IP-Adressverwaltung (IPAM)  |  Cilium-IPAM-Cluster-Umfang  | 
|  Netzwerkrichtlinie  |  Kubernetes-Netzwerkrichtlinie  | 
|  Border Gateway Protocol (BGP)  |  Cilium-BGP-Steuerebene  | 
|  Kubernetes Ingress  |  Cilium Ingress, Cilium-Gateway  | 
|  Zuweisung von LoadBalancer Dienst-IP-Adressen  |  Cilium Load Balancer IPAM  | 
|  Werbung für die LoadBalancer IP-Adresse des Dienstes  |  Cilium-BGP-Steuerebene  | 
|  Ersatz für kube-proxy  |  Ja  | 

## Überlegungen zu Cilium
<a name="hybrid-nodes-cilium-considerations"></a>
+  **Helm-Repository** — AWS hostet das Cilium Helm-Diagramm im Amazon Elastic Container Registry Public (Amazon ECR Public) bei [Amazon EKS](https://gallery.ecr.aws/eks/cilium/cilium) Cilium/Cilium. Zu den verfügbaren Versionen gehören:
  + Cilium v1.17.9: `oci://public.ecr.aws/eks/cilium/cilium:1.17.9-0` 
  + Zilium v1.18.3: `oci://public.ecr.aws/eks/cilium/cilium:1.18.3-0` 

    Die Befehle in diesem Thema verwenden dieses Repository. Beachten Sie, dass bestimmte `helm repo`-Befehle für Helm-Repositorys in Amazon ECR Public nicht gültig sind. Sie können daher nicht von einem lokalen Helm-Repository-Namen auf dieses Repository verweisen. Verwenden Sie stattdessen in den meisten Befehlen die vollständige URI.
+ Standardmäßig ist Cilium so konfiguriert, dass es im Überlagerungs-/Tunnelmodus mit VXLAN als [Kapselungsmethode](https://docs.cilium.io/en/stable/network/concepts/routing/#encapsulation) ausgeführt wird. Dieser Modus stellt die geringsten Anforderungen an das zugrunde liegende physische Netzwerk.
+ Standardmäßig [maskiert](https://docs.cilium.io/en/stable/network/concepts/masquerading/) Cilium die Quell-IP-Adresse des gesamten Pod-Datenverkehrs, der den Cluster verlässt, mit der IP-Adresse des Knotens. Wenn Sie Masquerading deaktivieren, CIDRs muss Ihr Pod in Ihrem lokalen Netzwerk routingfähig sein.
+ Wenn Sie Webhooks auf Hybridknoten ausführen, CIDRs muss Ihr Pod in Ihrem lokalen Netzwerk routingfähig sein. Wenn CIDRs Ihr Pod in Ihrem lokalen Netzwerk nicht routbar ist, wird empfohlen, Webhooks auf Cloud-Knoten im selben Cluster auszuführen. Weitere Informationen finden Sie unter [Konfiguration von Webhooks für Hybridknoten](hybrid-nodes-webhooks.md) und [Vorbereitung der Vernetzung für Hybridknoten](hybrid-nodes-networking.md).
+  AWS empfiehlt, die integrierte BGP-Funktionalität von Cilium zu verwenden, um Ihren Pod in Ihrem lokalen Netzwerk CIDRs routingfähig zu machen. Weitere Informationen zur Konfiguration von Cilium BGP mit Hybridknoten finden Sie unter [Konfiguration von Cilium BGP für Hybridknoten](hybrid-nodes-cilium-bgp.md).
+ Die standardmäßige IP-Adressverwaltung (IPAM) in Cilium heißt [Cluster Scope](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/). Dabei weist der Cilium-Operator jedem Knoten auf der Grundlage des vom Benutzer konfigurierten Pods IP-Adressen zu. CIDRs

## Cilium in Hybridknoten installieren
<a name="hybrid-nodes-cilium-install"></a>

### Verfahren
<a name="_procedure"></a>

1. Erstellen Sie eine YAML-Datei mit dem Namen `cilium-values.yaml`. Im folgenden Beispiel wird Cilium so konfiguriert, dass es nur in Hybridknoten ausgeführt wird, indem die Affinität für das `eks.amazonaws.com/compute-type: hybrid`-Label für den Cilium-Agenten und -Operator festgelegt wird.
   + *Verwenden Sie für die Konfiguration `clusterPoolIpv4PodCIDRList` denselben Pod, den CIDRs Sie für die Remote-Pod-Netzwerke Ihres EKS-Clusters konfiguriert haben.* Beispiel, `10.100.0.0/24`. Der Cilium-Operator weist IP-Adressbereiche aus der konfigurierten `clusterPoolIpv4PodCIDRList`-IP-Umgebung zu. Ihr Pod-CIDR darf sich nicht mit Ihrem On-Premises-Knoten-CIDR, Ihrem VPC-CIDR oder Ihrem Kubernetes-Service-CIDR überschneiden.
   + Konfigurieren Sie `clusterPoolIpv4MaskSize` basierend auf den von Ihnen benötigten Pods pro Knoten. Beispiel: `25` für eine /25-Segmentgröße von 128 Pods pro Knoten.
   + Ändern Sie `clusterPoolIpv4PodCIDRList` oder `clusterPoolIpv4MaskSize` nicht, nachdem Sie Cilium in Ihrem Cluster bereitgestellt haben. Weitere Informationen finden Sie unter [Erweiterung des Cluster-Pools](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/#expanding-the-cluster-pool).
   + Wenn Sie Cilium im Kube-Proxy-Ersatzmodus ausführen, setzen Sie `kubeProxyReplacement: "true"` in Ihren Helm-Werten und stellen Sie sicher, dass Sie keine vorhandene Kube-Proxy-Bereitstellung auf denselben Knoten wie Cilium ausführen.
   + Das folgende Beispiel deaktiviert den Envoy Layer 7 (L7)-Proxy, den Cilium für L7-Netzwerkrichtlinien und Ingress verwendet. Weitere Informationen erhalten Sie unter [Konfiguration von Kubernetes-Netzwerkrichtlinien für Hybridknoten](hybrid-nodes-network-policies.md) und [Übersicht über Cilium Ingress und Cilium Gateway](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium).
   + Das nachstehende Beispiel konfiguriert `loadBalancer.serviceTopology`: `true` für die Verteilung des Service-Datenverkehrs, damit dieser korrekt funktioniert, wenn Sie ihn für Ihre Services konfigurieren. Weitere Informationen finden Sie unter [Verteilung des Service-Datenverkehrs konfigurieren](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-service-traffic-distribution).
   + Eine vollständige Liste der Helm-Werte für Cilium finden Sie in der [Helm-Referenz](https://docs.cilium.io/en/stable/helm-reference/) in der Cilium-Dokumentation.

     ```
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
     ipam:
       mode: cluster-pool
       operator:
         clusterPoolIPv4MaskSize: 25
         clusterPoolIPv4PodCIDRList:
         - POD_CIDR
     loadBalancer:
       serviceTopology: true
     operator:
       affinity:
         nodeAffinity:
           requiredDuringSchedulingIgnoredDuringExecution:
             nodeSelectorTerms:
             - matchExpressions:
               - key: eks.amazonaws.com/compute-type
                 operator: In
                 values:
                   - hybrid
       unmanagedPodWatcher:
         restart: false
     loadBalancer:
       serviceTopology: true
     envoy:
       enabled: false
     kubeProxyReplacement: "false"
     ```

1. Installieren Sie Cilium auf Ihrem Cluster.
   + `CILIUM_VERSION`Ersetzen Sie es durch eine Cilium-Version (zum Beispiel `1.17.9-0` oder`1.18.3-0`). Es wird empfohlen, die neueste Patch-Version für die Cilium-Nebenversion zu verwenden.
   + Stellen Sie sicher, dass Ihre Knoten die Kernel-Anforderungen für die von Ihnen gewählte Version erfüllen. Cilium v1.18.3 erfordert einen Linux-Kernel >= 5.10.
   + Wenn Sie eine bestimmte Kubeconfig-Datei verwenden, verwenden Sie das Flag `--kubeconfig` mit dem Helm-Installationsbefehl.

     ```
     helm install cilium oci://public.ecr.aws/eks/cilium/cilium \
         --version CILIUM_VERSION \
         --namespace kube-system \
         --values cilium-values.yaml
     ```

1. Bestätigen Sie mit den folgenden Befehlen, dass Ihre Cilium-Installation erfolgreich war Sie sollten die `cilium-operator`-Bereitstellung und die `cilium-agent`-Ausführung auf jedem Ihrer Hybridknoten anzeigen können. Darüber hinaus sollten Ihre Hybridknoten nun den Status `Ready` aufweisen. Informationen darüber, wie Sie Cilium BGP so konfigurieren, dass Ihr Pod in Ihrem lokalen Netzwerk angekündigt wird, finden CIDRs Sie unter. [Konfiguration von Cilium BGP für Hybridknoten](hybrid-nodes-cilium-bgp.md)

   ```
   kubectl get pods -n kube-system
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   cilium-jjjn8                      1/1     Running   0          11m
   cilium-operator-d4f4d7fcb-sc5xn   1/1     Running   0          11m
   ```

   ```
   kubectl get nodes
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION
   mi-04a2cf999b7112233   Ready    <none>   19m   v1.31.0-eks-a737599
   ```

## Cilium in Hybridknoten aktualisieren
<a name="hybrid-nodes-cilium-upgrade"></a>

Lesen Sie vor dem Upgrade Ihrer Cilium-Bereitstellung die [Cilium-Upgrade-Dokumentation](https://docs.cilium.io/en/v1.17/operations/upgrade/) und die Upgrade-Hinweise sorgfältig durch, um die Änderungen in der Zielversion von Cilium zu verstehen.

1. Stellen Sie sicher, dass Sie die `helm`-CLI in Ihrer Befehlszeilenumgebung installiert haben. Installationsanweisungen finden Sie in der [Helm-Dokumentation](https://helm.sh/docs/intro/quickstart/).

1. Führen Sie die Vorabprüfung für das Cilium-Upgrade durch. Ersetzen Sie `CILIUM_VERSION` durch Ihre gewünschte Cilium-Version. Wir empfehlen, die neueste Patch-Version für Ihre Cilium-Nebenversion zu verwenden. Die neueste Patch-Version für eine bestimmte Cilium-Nebenversion finden Sie im [Abschnitt Stabile Versionen](https://github.com/cilium/cilium#stable-releases) der Cilium-Dokumentation.

   ```
   helm install cilium-preflight oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \
     --namespace=kube-system \
     --set preflight.enabled=true \
     --set agent=false \
     --set operator.enabled=false
   ```

1. Stellen Sie nach dem Anwenden von `cilium-preflight.yaml` sicher, dass die Anzahl der `READY`-Pods mit der Anzahl der ausgeführten Cilium-Pods übereinstimmt.

   ```
   kubectl get ds -n kube-system | sed -n '1p;/cilium/p'
   ```

   ```
   NAME                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
   cilium                    2         2         2       2            2           <none>          1h20m
   cilium-pre-flight-check   2         2         2       2            2           <none>          7m15s
   ```

1. Sobald die Anzahl der READY-Pods gleich ist, stellen Sie sicher, dass die Cilium-Bereitstellung vor dem Flug auch als READY 1/1 markiert ist. Wenn „READY 0/1“ angezeigt wird, lesen Sie den Abschnitt zur [CNP-Validierung](https://docs.cilium.io/en/v1.17/operations/upgrade/#cnp-validation) und beheben Sie Probleme mit der Bereitstellung, bevor Sie mit dem Upgrade fortfahren.

   ```
   kubectl get deployment -n kube-system cilium-pre-flight-check -w
   ```

   ```
   NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
   cilium-pre-flight-check   1/1     1            0           12s
   ```

1. Vorabprüfung löschen

   ```
   helm uninstall cilium-preflight --namespace kube-system
   ```

1. Bewahren Sie vor dem Ausführen des `helm upgrade`-Befehls die Werte für Ihre Bereitstellung in einem `existing-cilium-values.yaml` auf oder verwenden Sie `--set`-Befehlszeilenoptionen für Ihre Einstellungen, wenn Sie den Upgrade-Befehl ausführen. Der Upgrade-Vorgang überschreibt das Cilium ConfigMap, daher ist es wichtig, dass Ihre Konfigurationswerte beim Upgrade übergeben werden.

   ```
   helm get values cilium --namespace kube-system -o yaml > existing-cilium-values.yaml
   ```

1. Im normalen Cluster-Betrieb sollten alle Cilium-Komponenten in derselben Version ausgeführt werden. Die folgenden Schritte beschreiben, wie Sie alle Komponenten von einer stabilen Version auf eine spätere stabile Version aktualisieren. Beim Upgrade von einer Nebenversion auf eine andere Nebenversion wird empfohlen, zuerst auf die neueste Patch-Version für die vorhandene Cilium-Nebenversion zu aktualisieren. Um Störungen zu minimieren, setzen Sie die Option `upgradeCompatibility` auf die ursprüngliche Cilium-Version, die Sie in diesem Cluster installiert haben.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \
     --namespace kube-system \
     --set upgradeCompatibility=1.X \
     -f existing-cilium-values.yaml
   ```

1. (Optional) Wenn Sie Ihr Upgrade aufgrund von Problemen zurücksetzen müssen, führen Sie die folgenden Befehle aus.

   ```
   helm history cilium --namespace kube-system
   helm rollback cilium [REVISION] --namespace kube-system
   ```

## Cilium aus Hybridknoten löschen
<a name="hybrid-nodes-cilium-delete"></a>

1. Führen Sie den folgenden Befehl aus, um alle Cilium-Komponenten aus Ihrem Cluster zu deinstallieren. Beachten Sie, dass die Deinstallation des CNI die Integrität von Knoten und Pods beeinträchtigen kann und nicht in Produktions-Clustern durchgeführt werden sollte.

   ```
   helm uninstall cilium --namespace kube-system
   ```

   Die von Cilium konfigurierten Schnittstellen und Routen werden standardmäßig nicht entfernt, wenn das CNI aus dem Cluster entfernt wird. Weitere Informationen finden Sie unter dem [GitHub Problem](https://github.com/cilium/cilium/issues/34289).

1. Um die Konfigurationsdateien und Ressourcen auf der Festplatte zu bereinigen, können Sie, wenn Sie die Standardkonfigurationsverzeichnisse verwenden, die Dateien wie im [`cni-uninstall.sh`Skript](https://github.com/cilium/cilium/blob/main/plugins/cilium-cni/cni-uninstall.sh) im Cilium-Repository unter gezeigt entfernen. GitHub

1. Um die benutzerdefinierten Cilium-Ressourcendefinitionen (CRDs) aus Ihrem Cluster zu entfernen, können Sie die folgenden Befehle ausführen.

   ```
   kubectl get crds -oname | grep "cilium" | xargs kubectl delete
   ```

# Konfiguration von Add-Ons für Hybridknoten
<a name="hybrid-nodes-add-ons"></a>

Auf dieser Seite werden Überlegungen zum Ausführen von AWS Add-Ons und Community-Add-Ons auf Amazon EKS-Hybridknoten beschrieben. Weitere Informationen zu Amazon-EKS-Add-Ons und den Prozessen zum Erstellen, Aktualisieren und Entfernen von Add-Ons aus Ihrem Cluster finden Sie unter [Amazon-EKS-Add-ons](eks-add-ons.md). Sofern auf dieser Seite nicht anders angegeben, sind die Verfahren zum Erstellen, Aktualisieren und Entfernen von Amazon EKS-Add-Ons für Amazon EKS-Cluster mit Hybridknoten identisch wie für Amazon EKS-Cluster mit Knoten, die in der AWS Cloud laufen. Nur die auf dieser Seite aufgeführten Add-Ons wurden auf Kompatibilität mit Amazon EKS Hybrid Nodes geprüft.

Die folgenden AWS Add-Ons sind mit Amazon EKS Hybrid Nodes kompatibel.


|  AWS Add-on | Kompatible Add-On-Versionen | 
| --- | --- | 
|  kube-proxy  |  v1.25.14-eksbuild.2 und höher  | 
|  CoreDNS  |  v1.9.3-eksbuild.7 und höher  | 
|   AWS Distribution für OpenTelemetry (ADOT)  |  v0.102.1-eksbuild.2 und höher  | 
|  CloudWatch Agent für Beobachtbarkeit  |  v2.2.1-eksbuild.1 und höher  | 
|  EKS Pod Identity Agent  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/hybrid-nodes-add-ons.html)  | 
|  Knotenüberwachungsagent  |  v1.2.0-eksbuild.1 und höher  | 
|  CSI-Snapshot-Controller  |  v8.1.0-eksbuild.1 und höher  | 
|   AWS Privater CA-Konnektor für Kubernetes  |  v1.6.0-eksbuild.1 und höher  | 
|  Amazon FSx CSI-Treiber  |  v1.7.0-eksbuild.1 und höher  | 
|   AWS Secrets Store CSI-Treiberanbieter  |  v2.1.1-eksbuild.1 und höher  | 

Die folgenden Community-Add-Ons sind mit Amazon EKS Hybrid Nodes kompatibel. Weitere Informationen zu Community-Add-Ons finden Sie unter [Community-Erweiterungen](community-addons.md).


| Community-Add-On | Kompatible Add-On-Versionen | 
| --- | --- | 
|  Kubernetes-Metriken-Server  |  v0.7.2-eksbuild.1 und höher  | 
|  cert-manager  |  v1.17.2-eksbuild.1 und höher  | 
|  Prometheus-Knoten-Exporter  |  v1.9.1-eksbuild.2 und höher  | 
|  kube-state-metrics  |  v2.15.0-eksbuild.4 und höher  | 
|  Externes DNS  |  v0.19.0-eksbuild.1 und höher  | 

Zusätzlich zu den Amazon-EKS-Add-Ons in den obigen Tabellen sind der [Amazon Managed Service für Prometheus Collector](prometheus.md) und der [AWS Load Balancer Controller](aws-load-balancer-controller.md) für [Anwendungseingang](alb-ingress.md) (HTTP) und [Load Balancing](network-load-balancing.md) (TCP/UDP) mit Hybridknoten kompatibel.

Es gibt AWS Add-Ons und Community-Add-Ons, die nicht mit Amazon EKS Hybrid Nodes kompatibel sind. Die neuesten Versionen dieser Add-Ons verfügen über eine Anti-Affinitätsregel für die standardmäßige `eks.amazonaws.com/compute-type: hybrid`-Kennzeichnung, das auf Hybridknoten angewendet wird. Dadurch wird verhindert, dass sie auf Hybridknoten ausgeführt werden, wenn sie in Ihren Clustern bereitgestellt werden. Wenn Sie Cluster mit sowohl Hybridknoten als auch Knoten haben, die in der AWS Cloud ausgeführt werden, können Sie diese Add-Ons in Ihrem Cluster auf Knoten bereitstellen, die in der AWS Cloud ausgeführt werden. Das Amazon VPC CNI ist nicht mit Hybridknoten kompatibel, und Cilium und Calico werden als Container Networking Interfaces (CNIs) für Amazon EKS-Hybridknoten unterstützt. Weitere Informationen finden Sie unter [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md).

## AWS Add-Ons
<a name="hybrid-nodes-add-ons-aws-add-ons"></a>

In den folgenden Abschnitten werden die Unterschiede zwischen der Ausführung kompatibler AWS Add-Ons auf Hybridknoten im Vergleich zu anderen Amazon EKS-Compute-Typen beschrieben.

## kube-proxy und CoreDNS
<a name="hybrid-nodes-add-ons-core"></a>

EKS installiert Kube-Proxy und CoreDNS standardmäßig als selbstverwaltete Add-Ons, wenn Sie einen EKS-Cluster mit der AWS API und AWS SDKs, auch über die CLI, erstellen. AWS Sie können diese Add-Ons nach der Cluster-Erstellung mit Amazon-EKS-Add-Ons überschreiben. Weitere Informationen zu [Verwaltung von `kube-proxy` in Amazon-EKS-Clustern](managing-kube-proxy.md) und [CoreDNS für DNS in Amazon EKS-Clustern verwalten](managing-coredns.md) finden Sie in der EKS-Dokumentation. Wenn Sie einen Cluster im gemischten Modus mit Hybridknoten und Knoten in der AWS Cloud ausführen, AWS empfiehlt es sich, mindestens ein CoreDNS-Replikat auf Hybridknoten und mindestens ein CoreDNS-Replikat auf Ihren Knoten in der Cloud zu haben. AWS Konfigurationsschritte finden Sie unter [CoreDNS-Replikate konfigurieren](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-coredns).

## CloudWatch Beobachtbarkeitsagent
<a name="hybrid-nodes-add-ons-cw"></a>

[Der CloudWatch Observability-Agent-Operator verwendet Webhooks.](https://kubernetes.io/docs/reference/access-authn-authz/webhook/) Wenn Sie den Operator auf Hybridknoten ausführen, muss Ihr On-Premises-Pod-CIDR in Ihrem On-Premises-Netzwerk routingfähig sein, und Sie müssen Ihren EKS-Cluster mit Ihrem Pod-Netzwerk aus der Ferne konfigurieren. Weitere Informationen finden Sie unter [Konfiguration von Webhooks für Hybridknoten](hybrid-nodes-webhooks.md).

Metriken auf Knotenebene sind für Hybridknoten nicht verfügbar, da [CloudWatch Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html) von der Verfügbarkeit des [Instance Metadata Service](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) (IMDS) für Metriken auf Knotenebene abhängt. Für Hybridknoten sind Metriken auf Cluster-, Workload-, Pod- und Container-Ebene verfügbar.

Nachdem Sie das Add-on mithilfe der unter [Installieren des CloudWatch Agenten mit Amazon CloudWatch Observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Observability-EKS-addon.html) beschriebenen Schritte installiert haben, muss das Zusatz-Manifest aktualisiert werden, bevor der Agent erfolgreich auf Hybridknoten ausgeführt werden kann. Bearbeiten Sie die `amazoncloudwatchagents`-Ressource im Cluster, um die `RUN_WITH_IRSA`-Umgebungsvariable wie unten angezeigt hinzuzufügen.

```
kubectl edit amazoncloudwatchagents -n amazon-cloudwatch cloudwatch-agent
```

```
apiVersion: v1
items:
- apiVersion: cloudwatch.aws.amazon.com/v1alpha1
  kind: AmazonCloudWatchAgent
  metadata:
    ...
    name: cloudwatch-agent
    namespace: amazon-cloudwatch
    ...
  spec:
    ...
    env:
    - name: RUN_WITH_IRSA # <-- Add this
      value: "True" # <-- Add this
    - name: K8S_NODE_NAME
      valueFrom:
        fieldRef:
          fieldPath: spec.nodeName
          ...
```

## Amazon Managed Prometheus Managed Collector für Hybridknoten
<a name="hybrid-nodes-add-ons-amp"></a>

Ein verwalteter Kollector von Amazon Managed Service für Prometheus (AMP) besteht aus einem Scraper, der Metriken aus den Ressourcen in einem Amazon-EKS-Cluster erkennt und erfasst. AMP verwaltet den Scraper für Sie, sodass Sie sich nicht selbst um Instances, Agenten oder Scraper kümmern müssen.

Sie können die von AMP verwalteten Kollektoren ohne zusätzliche Konfiguration für Hybridknoten verwenden. Die metrischen Endpunkte für Ihre Anwendungen auf den Hybridknoten müssen jedoch von der VPC aus erreichbar sein, einschließlich der Routen von der VPC zum Remote-Pod-Netzwerk CIDRs und der offenen Ports in Ihrer lokalen Firewall. Darüber hinaus muss Ihr Cluster über einen [privaten Cluster-Endpunktzugriff](cluster-endpoint.md) verfügen.

Folgen Sie den Schritten [unter Verwenden eines AWS verwalteten Collectors](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html) im Amazon Managed Service for Prometheus Benutzerhandbuch.

## AWS Distribution für OpenTelemetry (ADOT)
<a name="hybrid-nodes-add-ons-adot"></a>

Sie können das Add-on AWS Distro for OpenTelemetry (ADOT) verwenden, um Metriken, Protokolle und Ablaufverfolgungsdaten von Ihren Anwendungen zu sammeln, die auf Hybridknoten ausgeführt werden. ADOT verwendet Zulassungs-[Webhooks](https://kubernetes.io/docs/reference/access-authn-authz/webhook/), um die Anfragen für benutzerdefinierte Kollektor-Ressourcen zu verändern und zu validieren. Wenn Sie den ADOT-Operator in Hybridknoten ausführen, muss Ihr On-Premises-Pod-CIDR in Ihrem On-Premises-Netzwerk routingfähig sein und Sie müssen Ihren EKS-Cluster mit Ihrem dezentralen Pod-Netzwerk konfigurieren. Weitere Informationen finden Sie unter [Konfiguration von Webhooks für Hybridknoten](hybrid-nodes-webhooks.md).

*Folgen Sie den Schritten unter [Erste Schritte mit AWS Distro zur OpenTelemetry Verwendung von EKS-Add-Ons](https://aws-otel.github.io/docs/getting-started/adot-eks-add-on) in der AWS Dokumentation von Distro. OpenTelemetry*

## AWS Load Balancer Balancer-Controller
<a name="hybrid-nodes-add-ons-lbc"></a>

Sie können den [Load AWS Balancer Controller](aws-load-balancer-controller.md) und den Application Load Balancer (ALB) oder den Network Load Balancer (NLB) mit dem Zieltyp `ip` für Workloads auf Hybridknoten verwenden. Die mit dem ALB oder NLB verwendeten IP-Ziele müssen routbar sein. AWS Der AWS Load Balancer Balancer-Controller verwendet auch [Webhooks](https://kubernetes.io/docs/reference/access-authn-authz/webhook/). Wenn Sie den Load AWS Balancer Controller-Operator auf Hybridknoten ausführen, muss Ihr lokales Pod-CIDR in Ihrem lokalen Netzwerk routingfähig sein und Sie müssen Ihren EKS-Cluster mit Ihrem Remote-Pod-Netzwerk konfigurieren. Weitere Informationen finden Sie unter [Konfiguration von Webhooks für Hybridknoten](hybrid-nodes-webhooks.md).

Um den Load AWS Balancer Controller zu installieren, folgen Sie den Schritten unter [AWS Application Load Balancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-alb) oder[AWS Network Load Balancer](hybrid-nodes-load-balancing.md#hybrid-nodes-service-lb-nlb).

Für den Eingang mit ALB müssen Sie die folgenden Annotationen angeben. Weitere Informationen finden Sie unter [Anwendungen und HTTP-Datenverkehr mit Application Load Balancers weiterleiten](alb-ingress.md).

```
alb.ingress.kubernetes.io/target-type: ip
```

Für den Lastenausgleich mit NLB müssen Sie die folgenden Annotationen angeben. Weitere Informationen finden Sie unter [Weiterleitung von TCP- und UDP-Datenverkehr mit Network Load Balancers](network-load-balancing.md).

```
service.beta.kubernetes.io/aws-load-balancer-type: "external"
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
```

## EKS Pod Identity Agent
<a name="hybrid-nodes-add-ons-pod-id"></a>

**Anmerkung**  
Um das Add-On für EKS Pod Identity Agent erfolgreich in Hybridknoten mit Bottlerocket bereitzustellen, stellen Sie sicher, dass Ihre Bottlerocket-Version mindestens v1.39.0 ist. Der Pod-Identity-Agent wird in früheren Bottlerocket-Versionen in Hybridknoten-Umgebungen nicht unterstützt.

Der ursprüngliche Amazon EKS Pod Identity Agent DaemonSet ist auf die Verfügbarkeit von EC2 IMDS auf dem Knoten angewiesen, um die erforderlichen AWS Anmeldeinformationen zu erhalten. Da IMDS ab Version 1.3.3-eksbuild.1 auf Hybridknoten nicht verfügbar ist, stellt das Pod Identity Agent-Add-on optional einen bereit, der die erforderlichen Anmeldeinformationen bereitstellt. DaemonSet Hybridknoten, auf denen Bottlerocket ausgeführt wird, benötigen eine andere Methode zum Mounten der Anmeldeinformationen. Ab Version 1.3.7-eksbuild.2 stellt das Pod Identity Agent-Add-on optional eine bereit, die speziell auf Bottlerocket-Hybridknoten abzielt. DaemonSet In den folgenden Abschnitten wird DaemonSets der Prozess zur Aktivierung der optionalen Option beschrieben.

### Ubuntu/RHEL/AL2023
<a name="_ubunturhelal2023"></a>

1. Um den Pod Identity-Agenten auf Ubuntu/RHEL/Al 2023 Hybridknoten zu verwenden, legen Sie `enableCredentialsFile: true` im Hybrid-Abschnitt der `nodeadm` Konfiguration wie unten gezeigt fest:

   ```
   apiVersion: node.eks.aws/v1alpha1
   kind: NodeConfig
   spec:
       hybrid:
           enableCredentialsFile: true # <-- Add this
   ```

   Dadurch wird `nodeadm` so konfiguriert, dass eine Anmeldeinformationsdatei erstellt wird, die auf dem Knoten unter `/eks-hybrid/.aws/credentials` konfiguriert wird und von `eks-pod-identity-agent`-Pods verwendet wird. Diese Anmeldeinformationsdatei enthält temporäre AWS Anmeldeinformationen, die regelmäßig aktualisiert werden.

1. Nachdem Sie die `nodeadm`-Konfiguration auf *jedem* Knoten aktualisiert haben, führen Sie den folgenden `nodeadm init`-Befehl mit Ihrem `nodeConfig.yaml` aus, um Ihre Hybridknoten mit Ihrem Amazon-EKS-Cluster zu verbinden. Wenn Ihre Knoten dem Cluster bereits zuvor beigetreten sind, führen Sie den `nodeadm init`-Befehl dennoch erneut aus.

   ```
   nodeadm init -c file://nodeConfig.yaml
   ```

1. Installieren Sie `eks-pod-identity-agent` mit aktivierter Unterstützung für Hybridknoten, entweder über die AWS CLI oder AWS-Managementkonsole.

   1.  AWS CLI: Führen Sie auf dem Computer, den Sie zur Verwaltung des Clusters verwenden, den folgenden Befehl aus, um die Installation `eks-pod-identity-agent` mit aktivierter Unterstützung für Hybridknoten zu installieren. Ersetzen Sie `my-cluster` mit dem Namen Ihres Clusters.

      ```
      aws eks create-addon \
          --cluster-name my-cluster \
          --addon-name eks-pod-identity-agent \
          --configuration-values '{"daemonsets":{"hybrid":{"create": true}}}'
      ```

   1.  AWS-Managementkonsole: Wenn Sie das Pod Identity Agent-Add-on über die AWS Konsole installieren, fügen Sie der optionalen Konfiguration Folgendes hinzu, um DaemonSet das Add-on für Hybridknoten bereitzustellen.

      ```
      {"daemonsets":{"hybrid":{"create": true}}}
      ```

### Bottlerocket
<a name="_bottlerocket"></a>

1. Um den Pod-Identity-Agenten auf Bottlerocket-Hybridknoten zu verwenden, fügen Sie dem Befehl, der für die Benutzerdaten des Bottlerocket-Bootstrap-Containers verwendet wird, das `--enable-credentials-file=true`-Flag hinzu, wie in [Hybridknoten mit Bottlerocket verbinden](hybrid-nodes-bottlerocket.md) beschrieben.

   1. Wenn Sie den SSM-Anmeldeinformations-Anbieter verwenden, sollte Ihr Befehl wie folgt aussehen:

      ```
      eks-hybrid-ssm-setup --activation-id=<activation-id> --activation-code=<activation-code> --region=<region> --enable-credentials-file=true
      ```

   1. Wenn Sie den Anmeldeinformationsanbieter IAM Roles Anywhere verwenden, sollte Ihr Befehl folgendermaßen aussehen:

      ```
      eks-hybrid-iam-ra-setup --certificate=<certificate> --key=<private-key> --enable-credentials-file=true
      ```

      Dadurch wird das Bootstrap-Skript so konfiguriert, dass auf dem Knoten unter `/var/eks-hybrid/.aws/credentials` eine Anmeldeinformationsdatei erstellt wird, die von `eks-pod-identity-agent`-Pods verwendet wird. Diese Anmeldeinformationsdatei enthält temporäre AWS Anmeldeinformationen, die regelmäßig aktualisiert werden.

1. Installieren Sie `eks-pod-identity-agent` mit aktivierter Unterstützung für Bottlerocket-Hybridknoten, entweder über die AWS CLI oder. AWS-Managementkonsole

   1.  AWS CLI: Führen Sie auf dem Computer, den Sie zur Verwaltung des Clusters verwenden, den folgenden Befehl aus, um die Installation `eks-pod-identity-agent` mit aktivierter Unterstützung für Bottlerocket-Hybridknoten zu installieren. Ersetzen Sie `my-cluster` mit dem Namen Ihres Clusters.

      ```
      aws eks create-addon \
          --cluster-name my-cluster \
          --addon-name eks-pod-identity-agent \
          --configuration-values '{"daemonsets":{"hybrid-bottlerocket":{"create": true}}}'
      ```

   1.  AWS-Managementkonsole: Wenn Sie das Pod Identity Agent-Add-On über die AWS Konsole installieren, fügen Sie der optionalen Konfiguration Folgendes hinzu, um die auf Bottlerocket-Hybridknoten DaemonSet abzielenden Pakete bereitzustellen.

      ```
      {"daemonsets":{"hybrid-bottlerocket":{"create": true}}}
      ```

## CSI-Snapshot-Controller
<a name="hybrid-nodes-add-ons-csi-snapshotter"></a>

Ab Version `v8.1.0-eksbuild.2` wendet das [CSI-Snapshot-Controller-Add-on](csi-snapshot-controller.md) eine Soft-Anti-Affinitätsregel für Hybridknoten an und bevorzugt es, dass der Controller `deployment` auf EC2 in derselben AWS Region wie die Amazon EKS-Steuerebene ausgeführt wird. Die gemeinsame Platzierung `deployment` in derselben AWS Region wie die Amazon EKS-Steuerebene verbessert die Latenz.

## Community-Erweiterungen
<a name="hybrid-nodes-add-ons-community"></a>

In den folgenden Abschnitten werden die Unterschiede zwischen der Ausführung kompatibler Community-Add-Ons in Hybridknoten und anderen Amazon-EKS-Rechentypen beschrieben.

## Kubernetes-Metriken-Server
<a name="hybrid-nodes-add-ons-metrics-server"></a>

Die Steuerebene muss die Pod-IP des Metriken-Servers erreichen (oder die Knoten-IP, wenn hostNetwork aktiviert ist). Wenn Sie den Metriken-Server nicht im hostNetwork-Modus ausführen, müssen Sie daher beim Erstellen Ihres Amazon-EKS-Clusters ein Pod-Netzwerk aus der Ferne konfigurieren und Ihre Pod-IP-Adressen routingfähig machen. Die Implementierung des Border Gateway Protocol (BGP) mit dem CNI ist eine gängige Methode, um die IP-Adressen Ihrer Pods routingfähig zu machen.

## cert-manager
<a name="hybrid-nodes-add-ons-cert-manager"></a>

 `cert-manager` verwendet [Webhooks](https://kubernetes.io/docs/reference/access-authn-authz/webhook/). Wenn Sie `cert-manager` in Hybridknoten ausführen, muss Ihr On-Premises-Pod-CIDR in Ihrem On-Premises-Netzwerk routingfähig sein und Sie müssen Ihren EKS-Cluster mit Ihrem Pod-Netzwerk aus der Ferne konfigurieren. Weitere Informationen finden Sie unter [Konfiguration von Webhooks für Hybridknoten](hybrid-nodes-webhooks.md).

# Konfiguration von Webhooks für Hybridknoten
<a name="hybrid-nodes-webhooks"></a>

Auf dieser Seite finden Sie detaillierte Überlegungen zum Ausführen von Webhooks mit Hybridknoten. Webhooks werden in Kubernetes-Anwendungen und Open-Source-Projekten wie dem AWS Load Balancer Controller und dem CloudWatch-Beobachtbarkeits-Agenten verwendet, um Mutations- und Validierungsfunktionen zur Laufzeit auszuführen.

 **Routingfähige Pod-Netzwerke** 

Wenn Sie Ihr lokales Pod-CIDR in Ihrem On-Premises-Netzwerk routingfähig machen können, können Sie Webhooks in Hybridknoten ausführen Es gibt mehrere Techniken, mit denen Sie Ihren On-Premises-Pod CIDR in Ihrem On-Premises-Netzwerk routingfähig machen können, darunter Border Gateway Protocol (BGP), statische Routen oder andere benutzerdefinierte Routing-Lösungen. BGP ist die empfohlene Lösung, da es skalierbarer und einfacher zu verwalten ist als alternative Lösungen, die eine benutzerdefinierte oder manuelle Routing-Konfiguration erfordern. AWS unterstützt die BGP-Funktionen von Cilium und Calico für die Bekanntmachung für Pod-CIDRs. Weitere Informationen finden Sie unter [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) und [Routingfähige Fern-Pod-CIDRs](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs).

 **Nicht routingfähige Pod-Netzwerke** 

Wenn Sie Ihr On-Premises-Pod-CIDR in Ihrem On-Premises-Netzwerk *nicht* routingfähig machen können und Webhooks ausführen müssen, empfehlen wir Ihnen, alle Webhooks auf Cloud-Knoten im selben EKS-Cluster wie Ihre Hybridknoten auszuführen.

## Überlegungen zu Clustern im kombinierten Modus
<a name="hybrid-nodes-considerations-mixed-mode"></a>

 *Cluster im kombinierten Modus* sind EKS-Cluster, die sowohl Hybridknoten als auch Knoten umfassen, die in der AWS Cloud ausgeführt werden. Beachten Sie bei der Ausführung eines Clusters im kombinierten Modus die folgenden Empfehlungen:
+ Führen Sie das VPC CNI auf Knoten in der AWS Cloud und entweder Cilium oder Calico auf Hybridknoten aus. Cilium und Calico werden von AWS nicht unterstützt, wenn sie auf Knoten in der AWS Cloud ausgeführt werden.
+ Konfigurieren Sie Webhooks für die Ausführung auf Knoten in der AWS Cloud. Informationen zur Konfiguration der Webhooks für AWS und Community-Add-Ons finden Sie unter [Webhooks für Add-Ons konfigurieren](#hybrid-nodes-webhooks-add-ons).
+ Wenn Ihre Anwendungen erfordern, dass Pods, die auf Knoten in der AWS Cloud ausgeführt werden, direkt mit Pods kommunizieren, die auf Hybridknoten ausgeführt werden („Ost-West-Kommunikation“), und Sie das VPC CNI auf Knoten in der AWS Cloud und Cilium oder Calico auf Hybridknoten verwenden, muss Ihr On-Premises-Pod-CIDR in Ihrem On-Premises-Netzwerk routingfähig sein.
+ Führen Sie mindestens eine Replik von CoreDNS in Knoten in der AWS Cloud und mindestens eine Replik von CoreDNS in Hybridknoten aus.
+ Konfigurieren Sie die Verteilung des Service-Datenverkehrs, um den Service-Datenverkehr lokal in der Zone zu halten, aus der er stammt. Weitere Informationen zur Verteilung des Service-Datenverkehrs finden Sie unter [Verteilung des Service-Datenverkehrs konfigurieren](#hybrid-nodes-mixed-service-traffic-distribution).
+ Wenn Sie AWS Application Load Balancer (ALB) oder Network Load Balancer (NLB) für den Workload-Datenverkehr auf Hybridknoten verwenden, müssen die mit ALB oder NLB verwendeten IP-Ziele von AWS aus routingfähig sein
+ Das Metriken-Server-Add-On erfordert eine Verbindung von der EKS-Steuerebene zur IP-Adresse des Metriken-Server-Pods. Wenn Sie das Metriken-Server-Add-On in Hybridknoten ausführen, muss Ihr lokaler Pod-CIDR in Ihrem On-Premises-Netzwerk routingfähig sein.
+ Um Metriken für Hybridknoten mithilfe von Amazon Managed Service für Prometheus (AMP) verwalteten Kollektoren zu erfassen, muss Ihr On-Premises-Pod-CIDR in Ihrem On-Premises-Netzwerk routingfähig sein. Alternativ können Sie den AMP Managed Collector für EKS-Steuerebenen-Metriken und in der AWS Cloud ausgeführte Ressourcen sowie das AWS Distro for OpenTelemetry (ADOT)-Add-On verwenden, um Metriken für Hybridknoten zu erfassen.

## Cluster im kombinierten Modus konfigurieren
<a name="hybrid-nodes-mixed-mode"></a>

Um die mutierenden und validierenden Webhooks anzuzeigen, die auf Ihrem Cluster ausgeführt werden, können Sie den Ressourcentyp **Erweiterungen** im **Ressourcenbereich** der EKS-Konsole für Ihren Cluster anzeigen oder die folgenden Befehle verwenden. EKS meldet auch Webhook-Metriken im Cluster-Beobachtbarkeits-Dashboard. Weitere Informationen finden Sie unter [Überwachen Ihres Clusters im Dashboard „Beobachtbarkeit“](observability-dashboard.md).

```
kubectl get mutatingwebhookconfigurations
```

```
kubectl get validatingwebhookconfigurations
```

### Verteilung des Service-Datenverkehrs konfigurieren
<a name="hybrid-nodes-mixed-service-traffic-distribution"></a>

Bei der Ausführung von Clustern im kombinierten Modus empfehlen wir die Verwendung der [https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution](https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution), um den Service-Datenverkehr lokal in der Zone zu halten, aus der er stammt. Die Verteilung des Service-Datenverkehrs (verfügbar für Kubernetes-Versionen 1.31 und höher in EKS) wird gegenüber dem [topologiebewussten Routing](https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/) als Lösung empfohlen, da sie vorhersehbarer ist. Mit der Verteilung des Service-Datenverkehrs erhalten fehlerfreie Endpunkte in der Zone den gesamten Datenverkehr für diese Zone. Bei Topologiebewusstem Routing muss jeder Service mehrere Bedingungen in dieser Zone erfüllen, um das benutzerdefinierte Routing anzuwenden. Andernfalls wird der Datenverkehr gleichmäßig auf alle Endpunkte verteilt.

Wenn Sie Cilium als CNI verwenden, müssen Sie das CNI mit dem Wert `enable-service-topology` auf `true` ausführen, um die Verteilung des Service-Datenverkehrs zu aktivieren. Sie können diese Konfiguration mit dem Helm-Installations-Flag `--set loadBalancer.serviceTopology=true` übergeben oder eine vorhandene Installation mit dem Cilium-CLI-Befehl `cilium config set enable-service-topology true` aktualisieren. Der auf jedem Knoten ausgeführte Cilium-Agent muss nach der Aktualisierung der Konfiguration für eine vorhandene Installation neu gestartet werden.

Im folgenden Abschnitt wird ein Beispiel für die Konfiguration der Verteilung des Service-Datenverkehrs für den CoreDNS-Service gezeigt. Wir empfehlen, dies für alle Services in Ihrem Cluster zu aktivieren, um unbeabsichtigten Datenverkehr zwischen Umgebungen zu vermeiden.

### CoreDNS-Replikate konfigurieren
<a name="hybrid-nodes-mixed-coredns"></a>

Wenn Sie einen Cluster im kombinierten Modus mit Hybridknoten und Knoten in der AWS Cloud ausführen, empfehlen wir Ihnen, mindestens eine CoreDNS-Replik auf Hybridknoten und mindestens eine CoreDNS-Replik auf Ihren Knoten in der AWS Cloud zu haben. Um Latenz- und Netzwerkprobleme in einer Cluster-Konfiguration im kombinierten Modus zu vermeiden, können Sie den CoreDNS-Service so konfigurieren, dass er die nächstgelegene CoreDNS-Replik mit der [Verteilung des Service-Datenverkehrs](https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution) bevorzugt.

 Die *Verteilung des Service-Datenverkehrs* (verfügbar für Kubernetes-Versionen 1.31 und höher in EKS) wird gegenüber dem [topologiebewussten Routing](https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/) als Lösung empfohlen, da sie vorhersehbarer ist. Bei der Verteilung des Service-Datenverkehrs erhalten alle fehlerfreien Endpunkte in der Zone den gesamten Datenverkehr für diese Zone. Beim topologiebewussten Routing muss jeder Service mehrere Bedingungen in dieser Zone erfüllen, um das benutzerdefinierte Routing anzuwenden. Andernfalls wird der Datenverkehr gleichmäßig auf alle Endpunkte verteilt. Die folgenden Schritte konfigurieren die Verteilung des Service-Datenverkehrs.

Wenn Sie Cilium als CNI verwenden, müssen Sie das CNI mit dem Wert `enable-service-topology` auf `true` ausführen, um die Verteilung des Service-Datenverkehrs zu aktivieren. Sie können diese Konfiguration mit dem Helm-Installations-Flag `--set loadBalancer.serviceTopology=true` übergeben oder eine vorhandene Installation mit dem Cilium-CLI-Befehl `cilium config set enable-service-topology true` aktualisieren. Der auf jedem Knoten ausgeführte Cilium-Agent muss nach der Aktualisierung der Konfiguration für eine vorhandene Installation neu gestartet werden.

1. Fügen Sie für jeden Ihrer Hybridknoten eine Topologie-Zonenbezeichnung hinzu, beispielsweise `topology.kubernetes.io/zone: onprem`. Alternativ können Sie die Bezeichnung in der `nodeadm init`-Phase festlegen, indem Sie die Bezeichnung in Ihrer `nodeadm`-Konfiguration angeben, siehe [Knotenkonfiguration zur Anpassung von kubelet (optional)](hybrid-nodes-nodeadm.md#hybrid-nodes-nodeadm-kubelet). Beachten Sie, dass Knoten, die in der AWS Cloud ausgeführt werden, automatisch eine Topologie-Zonenbezeichnung erhalten, die der Availability Zone (AZ) des Knotens entspricht.

   ```
   kubectl label node hybrid-node-name topology.kubernetes.io/zone=zone
   ```

1. Fügen Sie `podAntiAffinity` mit dem Topologie-Zonenschlüssel zur CoreDNS-Bereitstellung hinzu. Alternativ können Sie die CoreDNS-Bereitstellung während der Installation mit EKS-Add-Ons konfigurieren.

   ```
   kubectl edit deployment coredns -n kube-system
   ```

   ```
   spec:
     template:
       spec:
         affinity:
          ...
           podAntiAffinity:
             preferredDuringSchedulingIgnoredDuringExecution:
             - podAffinityTerm:
                 labelSelector:
                   matchExpressions:
                   - key: k8s-app
                     operator: In
                     values:
                     - kube-dns
                 topologyKey: kubernetes.io/hostname
               weight: 100
             - podAffinityTerm:
                 labelSelector:
                   matchExpressions:
                   - key: k8s-app
                     operator: In
                     values:
                     - kube-dns
                 topologyKey: topology.kubernetes.io/zone
               weight: 50
         ...
   ```

1. Fügen Sie die Einstellung `trafficDistribution: PreferClose` zur Service-Konfiguration `kube-dns` hinzu, um die Verteilung des Service-Datenverkehrs zu aktivieren.

   ```
   kubectl patch svc kube-dns -n kube-system --type=merge -p '{
     "spec": {
       "trafficDistribution": "PreferClose"
     }
   }'
   ```

1. Sie können überprüfen, ob die Verteilung des Service-Datenverkehrs aktiviert ist, indem Sie die Endpunkt-Segmente für den `kube-dns`-Service anzeigen. Ihre Endpunkt-Segmente müssen die `hints` für Ihre Topologie-Zonenbezeichnungen anzeigen, was bestätigt, dass die Verteilung des Service-Datenverkehrs aktiviert ist. Wenn Sie für jede Endpunktadresse kein `hints` sehen, ist die Verteilung des Service-Datenverkehrs nicht aktiviert.

   ```
   kubectl get endpointslice -A | grep "kube-dns"
   ```

   ```
   kubectl get endpointslice [.replaceable]`kube-dns-<id>`  -n kube-system -o yaml
   ```

   ```
   addressType: IPv4
   apiVersion: discovery.k8s.io/v1
   endpoints:
   - addresses:
     - <your-hybrid-node-pod-ip>
     hints:
       forZones:
       - name: onprem
     nodeName: <your-hybrid-node-name>
     zone: onprem
   - addresses:
     - <your-cloud-node-pod-ip>
     hints:
       forZones:
       - name: us-west-2a
     nodeName: <your-cloud-node-name>
     zone: us-west-2a
   ```

### Webhooks für Add-Ons konfigurieren
<a name="hybrid-nodes-webhooks-add-ons"></a>

Die folgenden Add-Ons verwenden Webhooks und werden für die Verwendung mit Hybridknoten unterstützt.
+  AWS-Lastenverteilungs-Controller
+ CloudWatch-Beobachtbarkeits-Agent
+  AWS Distro for OpenTelemetry (ADOT)
+  `cert-manager` 

Informationen zum Konfigurieren der von diesen Add-Ons verwendeten Webhooks für die Ausführung auf Knoten in der AWS Cloud finden Sie in den folgenden Abschnitten.

#### AWS-Lastenverteilungs-Controller
<a name="hybrid-nodes-mixed-lbc"></a>

Um den AWS Load Balancer Controller in einer Cluster-Konfiguration im kombinierten Modus zu verwenden, ist es erforderlich, den Controller auf Knoten in der AWS Cloud auszuführen. Fügen Sie dazu Folgendes zu Ihrer Helm-Wertekonfiguration hinzu oder geben Sie die Werte mithilfe der EKS-Add-On-Konfiguration an.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
```

#### CloudWatch-Beobachtbarkeits-Agent
<a name="hybrid-nodes-mixed-cwagent"></a>

Das Add-On für den CloudWatch-Beobachtbarkeits-Agent verfügt über einen Kubernetes-Operator, der Webhooks verwendet. Um den Operator auf Knoten in der AWS Cloud in einer Cluster-Konfiguration im kombinierten Modus auszuführen, bearbeiten Sie die Konfiguration des Operators für den CloudWatch-Beobachtbarkeits-Agenten. Sie können die Operator-Affinität während der Installation mit Helm- und EKS-Add-Ons nicht konfigurieren (siehe [Container-Roadmap-Problem Nr. 2431](https://github.com/aws/containers-roadmap/issues/2431)).

```
kubectl edit -n amazon-cloudwatch deployment amazon-cloudwatch-observability-controller-manager
```

```
spec:
  ...
  template:
    ...
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: eks.amazonaws.com/compute-type
                operator: NotIn
                values:
                - hybrid
```

#### AWS Distro for OpenTelemetry (ADOT)
<a name="hybrid-nodes-mixed-adot"></a>

Das AWS Distro for OpenTelemetry (ADOT)-Add-On verfügt über einen Kubernetes-Operator, der Webhooks verwendet. Um den Operator auf Knoten in der AWS Cloud in einer Cluster-Konfiguration im kombinierten Modus auszuführen, fügen Sie Folgendes zu Ihrer Helm-Wertekonfiguration hinzu oder geben Sie die Werte mithilfe der EKS-Add-On-Konfiguration an.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
```

Wenn Ihr Pod-CIDR in Ihrem On-Premises-Netzwerk nicht routingfähig ist, muss der ADOT-Kollektor in Hybridknoten ausgeführt werden, um die Metriken von Ihren Hybridknoten und den darauf ausgeführten Workloads zu erfassen. Bearbeiten Sie dazu die benutzerdefinierte Ressourcendefinition (CRD).

```
kubectl -n opentelemetry-operator-system edit opentelemetrycollectors.opentelemetry.io adot-col-prom-metrics
```

```
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: In
            values:
            - hybrid
```

Sie können den ADOT-Kollektor so konfigurieren, dass er nur Metriken von Hybridknoten und den auf Hybridknoten ausgeführten Ressourcen erfasst, indem Sie das folgende `relabel_configs` zu jedem `scrape_configs` in der ADOT-Kollektor-CRD-Konfiguration hinzufügen.

```
relabel_configs:
  - action: keep
    regex: hybrid
    source_labels:
    - __meta_kubernetes_node_label_eks_amazonaws_com_compute_type
```

Das ADOT-Add-on erfordert die Installation von `cert-manager` für die vom ADOT-Operator-Webhook verwendeten TLS-Zertifikate. `cert-manager` führt ebenfalls Webhooks aus und kann mit der folgenden Helm-Wertekonfiguration für die Ausführung auf Knoten in der AWS Cloud konfiguriert werden.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
webhook:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
cainjector:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
startupapicheck:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
```

#### `cert-manager`
<a name="hybrid-nodes-mixed-cert-manager"></a>

Das `cert-manager`-Add-On führt Webhooks aus und Sie können es mit der folgenden Helm-Wertekonfiguration so konfigurieren, dass es auf Knoten in der AWS Cloud ausgeführt wird.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
webhook:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
cainjector:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
startupapicheck:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
```

# Konfiguration des Proxys für Hybridknoten
<a name="hybrid-nodes-proxy"></a>

Wenn Sie in Ihrer On-Premises-Umgebung mithilfe eines Proxy-Servers den Datenverkehr steuern, der Ihr Rechenzentrum oder Ihre Edge-Umgebung verlässt, müssen Sie Ihre Knoten und Ihren Cluster separat für die Verwendung Ihres Proxy-Servers konfigurieren.

Cluster  
In Ihrem Cluster müssen Sie `kube-proxy` so konfigurieren, dass Ihr Proxy-Server verwendet wird. Sie müssen `kube-proxy` nach der Erstellung Ihres Amazon-EKS-Clusters konfigurieren.

Knoten  
Auf Ihren Knoten müssen Sie das Betriebssystem, `containerd`, `kubelet` und den Amazon SSM-Agenten so konfigurieren, dass sie Ihren Proxy-Server verwenden. Sie können diese Änderungen während des Entwicklungsprozesses für Ihre Betriebssystem-Images oder vor der Ausführung von `nodeadm init` auf jedem Hybridknoten vornehmen.

## Konfiguration auf Knotenebene
<a name="_node_level_configuration"></a>

Sie müssen die folgenden Konfigurationen entweder in Ihren Betriebssystem-Images oder vor der Ausführung von `nodeadm init` auf jedem Hybridknoten anwenden.

### `containerd`-Proxy-Konfiguration
<a name="_containerd_proxy_configuration"></a>

 `containerd` ist die standardmäßig Container-Management-Laufzeitumgebung für Kubernetes. Wenn Sie einen Proxy für den Internetzugriff verwenden, müssen Sie `containerd` so konfigurieren, dass es die von Kubernetes und Amazon EKS benötigten Container-Images abrufen kann.

Erstellen Sie auf jedem Hybridknoten eine `/etc/systemd/system/containerd.service.d`-Datei mit dem Namen `http-proxy.conf` im Verzeichnis mit dem folgenden Inhalt. Ersetzen Sie `proxy-domain` und `port` durch die Werte für Ihre Umgebung.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

#### `containerd`-Konfiguration aus Benutzerdaten
<a name="_containerd_configuration_from_user_data"></a>

Für diese Datei muss das `containerd.service.d`-Verzeichnis erstellt werden. Sie müssen systemd neu laden, um die Konfigurationsdatei ohne Neustart zu übernehmen. In AL2023 wird der Service wahrscheinlich bereits ausgeführt, wenn Ihr Skript ausgeführt wird, sodass Sie ihn auch neu starten müssen.

```
mkdir -p /etc/systemd/system/containerd.service.d
echo '[Service]' > /etc/systemd/system/containerd.service.d/http-proxy.conf
echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf
echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf
echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf
systemctl daemon-reload
systemctl restart containerd
```

### `kubelet`-Proxy-Konfiguration
<a name="_kubelet_proxy_configuration"></a>

 `kubelet` ist der Kubernetes-Knotenagent, der auf jedem Kubernetes-Knoten ausgeführt wird und für die Verwaltung des Knotens und der darauf ausgeführten Pods verantwortlich ist. Wenn Sie in Ihrer On-Premises-Umgebung einen Proxy verwenden, müssen Sie `kubelet` so konfigurieren, dass es mit den öffentlichen oder privaten Endpunkten Ihres Amazon-EKS-Clusters kommunizieren kann.

Erstellen Sie auf jedem Hybridknoten eine Datei mit dem Namen `http-proxy.conf` im `/etc/systemd/system/kubelet.service.d/`-Verzeichnis mit dem folgenden Inhalt. Ersetzen Sie `proxy-domain` und `port` durch die Werte für Ihre Umgebung.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

#### `kubelet`-Konfiguration aus Benutzerdaten
<a name="_kubelet_configuration_from_user_data"></a>

Für diese Datei muss das `kubelet.service.d`-Verzeichnis erstellt werden. Sie müssen systemd neu laden, um die Konfigurationsdatei ohne Neustart zu übernehmen. In AL2023 wird der Service wahrscheinlich bereits ausgeführt, wenn Ihr Skript ausgeführt wird, sodass Sie ihn auch neu starten müssen.

```
mkdir -p /etc/systemd/system/kubelet.service.d
echo '[Service]' > /etc/systemd/system/kubelet.service.d/http-proxy.conf
echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf
echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf
echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf
systemctl daemon-reload
systemctl restart kubelet
```

### `ssm`-Proxy-Konfiguration
<a name="_ssm_proxy_configuration"></a>

 `ssm` ist einer der Anmeldeinformationsanbieter, die zum Initialisieren eines Hybridknotens verwendet werden können. `ssm` ist für die Authentifizierung mit AWS und die Generierung temporärer Anmeldeinformationen verantwortlich, die von `kubelet` verwendet werden. Wenn Sie in Ihrer On-Premises-Umgebung einen Proxy verwenden und `ssm` als Anmeldeinformationsanbieter auf dem Knoten nutzen, müssen Sie `ssm` so konfigurieren, dass es mit Amazon-SSM-Service-Endpunkten kommunizieren kann.

Erstellen Sie auf jedem Hybridknoten eine Datei mit dem Namen `http-proxy.conf` im nachfolgenden Pfad, abhängig vom Betriebssystem
+ Ubuntu – `/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d/http-proxy.conf` 
+ Amazon Linux 2023 und Red Hat Enterprise Linux – `/etc/systemd/system/amazon-ssm-agent.service.d/http-proxy.conf` 

Füllen Sie die Datei mit dem folgenden Inhalt. Ersetzen Sie `proxy-domain` und `port` durch die Werte für Ihre Umgebung.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

#### `ssm`-Konfiguration aus Benutzerdaten
<a name="_ssm_configuration_from_user_data"></a>

Für diese Datei muss das `ssm`-systemd-Service-Dateiverzeichnis erstellt werden. Der Verzeichnispfad hängt vom verwendeten Betriebssystem des Knotens ab.
+ Ubuntu – `/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d` 
+ Amazon Linux 2023 und Red Hat Enterprise Linux – `/etc/systemd/system/amazon-ssm-agent.service.d` 

systemd-Servicenamen im folgenden Neustartbefehl je nach dem auf dem Knoten verwendeten Betriebssystem ersetzen
+ Ubuntu – `snap.amazon-ssm-agent.amazon-ssm-agent` 
+ Amazon Linux 2023 und Red Hat Enterprise Linux – `amazon-ssm-agent` 

```
mkdir -p systemd-service-file-directory
echo '[Service]' > [.replaceable]#systemd-service-file-directory/http-proxy.conf
echo 'Environment="HTTP_PROXY=http://[.replaceable]#proxy-domain:port"' >> systemd-service-file-directory/http-proxy.conf
echo 'Environment="HTTPS_PROXY=http://[.replaceable]#proxy-domain:port"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf
echo 'Environment="NO_PROXY=localhost"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf
systemctl daemon-reload
systemctl restart [.replaceable]#systemd-service-name
```

### Proxy-Konfiguration des Betriebssystems
<a name="_operating_system_proxy_configuration"></a>

Wenn Sie einen Proxy für den Internetzugang verwenden, müssen Sie Ihr Betriebssystem so konfigurieren, dass es die Abhängigkeiten der Hybridknoten aus dem Paket-Manager Ihres Betriebssystems abrufen kann.

 **Ubuntu ** 

1. Konfigurieren Sie `snap` mit den folgenden Befehlen für die Verwendung Ihres Proxys:

   ```
   sudo snap set system proxy.https=http://proxy-domain:port
   sudo snap set system proxy.http=http://proxy-domain:port
   ```

1. Um den Proxy für `apt` zu aktivieren, erstellen Sie im `/etc/apt/`-Verzeichnis eine Datei mit dem Namen `apt.conf`. Ersetzen Sie Proxy-Domain und Port durch die entsprechenden Werte für Ihre Umgebung.

   ```
   Acquire::http::Proxy "http://proxy-domain:port";
   Acquire::https::Proxy "http://proxy-domain:port";
   ```

 **Amazon Linux 2023** 

1. Konfigurieren Sie `dnf` für die Verwendung Ihres Proxys. Erstellen Sie eine Datei `/etc/dnf/dnf.conf` mit den Werten für die Proxy-Domain und den Port für Ihre Umgebung.

   ```
   proxy=http://proxy-domain:port
   ```

 **Red Hat Enterprise Linux** 

1. Konfigurieren Sie `yum` für die Verwendung Ihres Proxys. Erstellen Sie eine Datei `/etc/yum.conf` mit den Werten für die Proxy-Domain und den Port für Ihre Umgebung.

   ```
   proxy=http://proxy-domain:port
   ```

### Proxy-Konfiguration von IAM Roles Anywhere
<a name="_iam_roles_anywhere_proxy_configuration"></a>

Der Service des Anmeldeinformationsanbieters für IAM Roles Anywhere ist für die Aktualisierung der Anmeldeinformationen verantwortlich, wenn IAM Roles Anywhere mit dem `enableCredentialsFile`-Flag verwendet wird (siehe [EKS Pod Identity Agent](hybrid-nodes-add-ons.md#hybrid-nodes-add-ons-pod-id)). Wenn Sie in Ihrer On-Premises-Umgebung einen Proxy verwenden, müssen Sie den Service so konfigurieren, dass er mit den Endpunkten von IAM Roles Anywhere kommunizieren kann.

Erstellen Sie im `/etc/systemd/system/aws_signing_helper_update.service.d/`-Verzeichnis eine Datei mit dem Namen `http-proxy.conf` mit folgendem Inhalt. Ersetzen Sie `proxy-domain` und `port` durch die Werte für Ihre Umgebung.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

## Cluster-weite Konfiguration
<a name="_cluster_wide_configuration"></a>

Die Konfigurationen in diesem Abschnitt müssen angewendet werden, nachdem Sie Ihren Amazon-EKS-Cluster erstellt haben und bevor Sie `nodeadm init` auf jedem Hybridknoten ausführen.

### kube-proxy-Proxy-Konfiguration
<a name="_kube_proxy_proxy_configuration"></a>

Amazon EKS installiert `kube-proxy` automatisch als DaemonSet auf jedem Hybridknoten, wenn Ihre Hybridknoten dem Cluster beitreten. `kube-proxy` ermöglicht das Routing über Services, die von Pods auf Amazon-EKS-Clustern unterstützt werden. Um jeden Host zu konfigurieren, erfordert `kube-proxy` eine DNS-Auflösung für Ihren Amazon-EKS-Cluster-Endpunkt.

1. `kube-proxy` DaemonSet mit dem folgenden Befehl bearbeiten

   ```
   kubectl -n kube-system edit ds kube-proxy
   ```

   Dadurch wird die `kube-proxy`-DaemonSet-Definition in Ihrem konfigurierten Editor geöffnet.

1. Fügen Sie die Umgebungsvariablen für `HTTP_PROXY` und `HTTPS_PROXY` hinzu. Beachten Sie, dass die `NODE_NAME`-Umgebungsvariable bereits in Ihrer Konfiguration vorhanden sein sollte. Ersetzen Sie `proxy-domain` und `port` durch Werte für Ihre Umgebung.

   ```
   containers:
     - command:
       - kube-proxy
       - --v=2
       - --config=/var/lib/kube-proxy-config/config - --hostname-override=$(NODE_NAME)
       env:
       - name: HTTP_PROXY
         value: http://proxy-domain:port
       - name: HTTPS_PROXY
         value: http://proxy-domain:port
       - name: NODE_NAME
         valueFrom:
           fieldRef:
             apiVersion: v1
             fieldPath: spec.nodeName
   ```

# Konfiguration von Cilium BGP für Hybridknoten
<a name="hybrid-nodes-cilium-bgp"></a>

In diesem Thema wird beschrieben, wie Sie Cilium Border Gateway Protocol (BGP) für Amazon EKS Hybrid Nodes konfigurieren. Die BGP-Funktionalität von Cilium heißt [Cilium BGP Control Plane](https://docs.cilium.io/en/stable/network/bgp-control-plane/bgp-control-plane/) und kann verwendet werden, um Pod- und Serviceadressen in Ihrem On-Premises-Netzwerk bekannt zu geben. Alternative Methoden, um Pod-CIDRs in Ihrem On-Premises-Netzwerk routingfähig zu machen, finden Sie unter [Routingfähige Fern-Pod-CIDRs](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs).

## Cilium BGP konfigurieren
<a name="hybrid-nodes-cilium-bgp-configure"></a>

### Voraussetzungen
<a name="_prerequisites"></a>
+ Cilium wurde gemäß den Anweisungen in [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) installiert.

### Verfahren
<a name="_procedure"></a>

1. Um BGP mit Cilium zu verwenden und Pod- oder Service-Adressen in Ihrem On-Premises-Netzwerk bekannt zu geben, muss Cilium mit `bgpControlPlane.enabled: true` installiert sein. Wenn Sie BGP für eine vorhandene Cilium-Bereitstellung aktivieren, müssen Sie den Cilium-Operator neu starten, um die BGP-Konfiguration anzuwenden, falls BGP zuvor nicht aktiviert wurde. Sie können in Ihren Helm-Werten `operator.rollOutPods` auf `true` setzen, um den Cilium-Operator als Teil des Helm-Installations-/Upgrade-Prozesses neu zu starten.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --set bgpControlPlane.enabled=true
   ```

1. Bestätigen Sie, dass der Cilium-Operator und die Agenten neu gestartet wurden und ausgeführt werden.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

1. Erstellen Sie eine Datei mit dem Namen `cilium-bgp-cluster.yaml` mit einer `CiliumBGPClusterConfig`-Definition. Möglicherweise müssen Sie die folgenden Informationen von Ihrem Netzwerkadministrator einholen.
   + Konfigurieren Sie `localASN` mit der ASN für die Knoten, auf denen Cilium ausgeführt wird.
   + Konfigurieren Sie `peerASN` mit der ASN für Ihren On-Premises-Router.
   + Konfigurieren Sie `peerAddress` mit der On-Premises-Router-IP, mit der jeder Knoten, auf dem Cilium ausgeführt wird, eine Peering-Verbindung herstellt.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPClusterConfig
     metadata:
       name: cilium-bgp
     spec:
       nodeSelector:
         matchExpressions:
         - key: eks.amazonaws.com/compute-type
           operator: In
           values:
           - hybrid
       bgpInstances:
       - name: "rack0"
         localASN: NODES_ASN
         peers:
         - name: "onprem-router"
           peerASN: ONPREM_ROUTER_ASN
           peerAddress: ONPREM_ROUTER_IP
           peerConfigRef:
             name: "cilium-peer"
     ```

1. Wenden Sie die Cilium-BGP-Cluster-Konfiguration auf Ihren Cluster an.

   ```
   kubectl apply -f cilium-bgp-cluster.yaml
   ```

1. Erstellen Sie eine Datei mit dem Namen `cilium-bgp-peer.yaml` mit der `CiliumBGPPeerConfig`-Ressource, die eine BGP-Peer-Konfiguration definiert. Mehrere Peers können dieselbe Konfiguration freigeben und auf die gemeinsame `CiliumBGPPeerConfig`-Ressource verweisen. Eine vollständige Liste der Konfigurationsoptionen finden Sie in der [BGP-Peer-Konfiguration](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane-v2/#bgp-peer-configuration) in der Cilium-Dokumentation.

   Die Werte für die folgenden Cilium-Peer-Einstellungen müssen mit denen des On-Premises-Routers übereinstimmen, mit dem Sie das Peering durchführen.
   + Konfigurieren Sie `holdTimeSeconds`, das festlegt, wie lange ein BGP-Peer auf eine Keepalive- oder Aktualisierungsnachricht wartet, bevor die Sitzung als unterbrochen erklärt wird. Der Standardwert ist 90 Sekunden.
   + Konfigurieren Sie `keepAliveTimeSeconds`, um festzustellen, ob ein BGP-Peer noch erreichbar ist und die BGP-Sitzung aktiv ist. Standardmäßig ist ein Zeitraum von 30 Sekunden festgelegt.
   + Konfigurieren Sie `restartTimeSeconds`, das die Zeit bestimmt, nach der die BGP-Steuerebene von Cilium die BGP-Sitzung nach einem Neustart wiederherstellen soll. Standardmäßig sind 120 Sekunden festgelegt.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPPeerConfig
     metadata:
       name: cilium-peer
     spec:
       timers:
         holdTimeSeconds: 90
         keepAliveTimeSeconds: 30
       gracefulRestart:
         enabled: true
         restartTimeSeconds: 120
       families:
         - afi: ipv4
           safi: unicast
           advertisements:
             matchLabels:
               advertise: "bgp"
     ```

1. Wenden Sie die Cilium BGP-Peer-Konfiguration auf Ihren Cluster an.

   ```
   kubectl apply -f cilium-bgp-peer.yaml
   ```

1. Erstellen Sie eine Datei mit dem Namen `cilium-bgp-advertisement-pods.yaml` und einer `CiliumBGPAdvertisement`-Ressource, um die Pod-CIDRs in Ihrem On-Premises-Netzwerk bekannt zu machen.
   + Die `CiliumBGPAdvertisement`-Ressource wird verwendet, um Ankündigungstypen und die zugehörigen Attribute zu definieren. Im folgenden Beispiel wird Cilium so konfiguriert, dass nur Pod-CIDRs bekannt gemacht werden. Weitere Informationen zum Konfigurieren von Cilium zum Bekanntgeben von Service-Adressen finden Sie in den Beispielen in [Servicetyp LoadBalancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer) und [Cilium-Load-Balancing im Cluster](hybrid-nodes-load-balancing.md#hybrid-nodes-service-lb-cilium).
   + Jeder Hybridknoten, auf dem der Cilium-Agent ausgeführt wird, ist mit dem Upstream-BGP-fähigen Router verbunden. Jeder Knoten gibt den ihm zugehörigen Pod-CIDR-Bereich bekannt, wenn Ciliums `advertisementType` wie im folgenden Beispiel auf `PodCIDR` gesetzt ist. Weitere Informationen finden Sie in der [BGP-Anzeigenkonfiguration](https://docs.cilium.io/en/stable/network/bgp-control-plane/bgp-control-plane-v2/#bgp-advertisements) in der Cilium-Dokumentation.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPAdvertisement
     metadata:
       name: bgp-advertisement-pods
       labels:
         advertise: bgp
     spec:
       advertisements:
         - advertisementType: "PodCIDR"
     ```

1. Wenden Sie die Cilium BGP-Anzeigenkonfiguration auf Ihren Cluster an.

   ```
   kubectl apply -f cilium-bgp-advertisement-pods.yaml
   ```

1. Sie können mit dem `cilium bgp peers`-Befehl überprüfen, ob das BGP-Peering mit der [Cilium CLI](https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/#install-the-cilium-cli) funktioniert. In der Ausgabe sollten die korrekten Werte für Ihre Umgebung und der Sitzungsstatus `established` angezeigt werden. Weitere Informationen zur Fehlerbehebung finden Sie im [Handbuch zur Fehlerbehebung und zum Betrieb](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane/#troubleshooting-and-operation-guide) in der Cilium-Dokumentation.

   In den folgenden Beispielen gibt es fünf Hybridknoten, in denen der Cilium-Agent ausgeführt wird, und jeder Knoten gibt den Pod-CIDR-Bereich bekannt, den er besitzt.

   ```
   cilium bgp peers
   ```

   ```
   Node                   Local AS    Peer AS               Peer Address        Session State   Uptime     Family         Received   Advertised
   mi-026d6a261e355fba7   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h18m58s   ipv4/unicast   1          2
   mi-082f73826a163626e   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h19m12s   ipv4/unicast   1          2
   mi-09183e8a3d755abf6   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h18m47s   ipv4/unicast   1          2
   mi-0d78d815980ed202d   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h19m12s   ipv4/unicast   1          2
   mi-0daa253999fe92daa   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h18m58s   ipv4/unicast   1          2
   ```

   ```
   cilium bgp routes
   ```

   ```
   Node                   VRouter       Prefix           NextHop   Age         Attrs
   mi-026d6a261e355fba7   NODES_ASN     10.86.2.0/26     0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-082f73826a163626e   NODES_ASN     10.86.2.192/26   0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-09183e8a3d755abf6   NODES_ASN     10.86.2.64/26    0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0d78d815980ed202d   NODES_ASN     10.86.2.128/26   0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0daa253999fe92daa   NODES_ASN     10.86.3.0/26     0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   ```

# Konfiguration von Kubernetes Ingress für Hybridknoten
<a name="hybrid-nodes-ingress"></a>

In diesem Thema wird beschrieben, wie Sie Kubernetes Ingress für Workloads konfigurieren, die in Amazon EKS Hybrid Nodes ausgeführt werden. [Kubernetes Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) macht HTTP- und HTTPS-Routen von außerhalb des Clusters für Services innerhalb des Clusters verfügbar. Zur Nutzung von Ingress-Ressourcen ist ein Kubernetes-Ingress-Controller erforderlich, um die Netzwerkinfrastruktur und Komponenten für den Netzwerkverkehr einzurichten.

 AWS unterstützt AWS Application Load Balancer (ALB) und Cilium für Kubernetes Ingress für Workloads, die in EKS-Hybridknoten ausgeführt werden. Die Entscheidung, ALB oder Cilium für Ingress zu verwenden, hängt von der Quelle des Anwendungs-Datenverkehrs ab. Wenn der Anwendungsdatenverkehr aus einer AWS-Region stammt, empfiehlt AWS die Verwendung von AWS ALB und AWS Load Balancer Controller. Wenn der Anwendungs-Datenverkehr aus der lokalen On-Premises- oder Edge-Umgebung stammt, empfiehlt AWS die Verwendung der integrierten Ingress-Funktionen von Cilium, die mit oder ohne Load-Balancer-Infrastruktur in Ihrer Umgebung verwendet werden können.

![\[EKS-Hybridknoten-Eingang\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-nodes-ingress.png)


## AWS Application Load Balancer
<a name="hybrid-nodes-ingress-alb"></a>

Sie können den [AWS Load Balancer Controller](aws-load-balancer-controller.md) und den Application Load Balancer (ALB) mit dem Zieltyp `ip` für Workloads verwenden, die in Hybridknoten ausgeführt werden. Bei Verwendung des Zieltyps `ip` leitet ALB den Datenverkehr direkt an die Pods weiter und umgeht dabei den Netzwerkpfad der Service-Ebene. Damit ALB die Pod-IP-Ziele auf Hybridknoten erreichen kann, muss Ihr On-Premises-Pod-CIDR in Ihrem On-Premises-Netzwerk routingfähig sein. Darüber hinaus verwendet der AWS Load Balancer Controller Webhooks und erfordert eine direkte Kommunikation von der EKS-Steuerebene. Weitere Informationen finden Sie unter [Konfiguration von Webhooks für Hybridknoten](hybrid-nodes-webhooks.md).

### Überlegungen
<a name="_considerations"></a>
+ Weitere Informationen zu AWS Application Load Balancer und AWS Load Balancer Controller finden Sie unter [Anwendungen und HTTP-Datenverkehr mit Application Load Balancers weiterleiten](alb-ingress.md) und [Installieren Sie den AWS Load Balancer Controller mit Helm](lbc-helm.md).
+ Informationen zur Auswahl zwischen AWS Application Load Balancer und AWS Network Load Balancer finden Sie unter [Bewährte Methoden für Load Balancing](https://docs.aws.amazon.com/eks/latest/best-practices/load-balacing.html).
+ Eine Liste der Annotationen, die für Ingress-Ressourcen mit AWS Application Load Balancer konfiguriert werden können, finden Sie unter [Annotationen fürAWS Load Balancer Controller Ingress](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/annotations/).

### Voraussetzungen
<a name="_prerequisites"></a>
+ Cilium wurde gemäß den Anweisungen in [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) installiert.
+ Cilium-BGP-Steuerebene gemäß den Anweisungen in [Konfiguration von Cilium BGP für Hybridknoten](hybrid-nodes-cilium-bgp.md) aktiviert. Wenn Sie BGP nicht verwenden möchten, müssen Sie eine alternative Methode verwenden, um die CIDRs Ihres On-Premises-Pods in Ihrem On-Premises-Netzwerk routingfähig zu machen. Wenn Sie Ihre On-Premises-Pod-CIDRs nicht routingfähig machen, kann ALB Ihre Pod-IP-Ziele nicht registrieren oder kontaktieren.
+ Weitere Informationen finden Sie in den [Anweisungen zur Einrichtung von Helm](helm.md).
+ eksctl ist in Ihrer Befehlszeilenumgebung installiert. Weitere Informationen finden Sie in den [Installationsanweisungen für eksctl](install-kubectl.md#eksctl-install-update).

### Verfahren
<a name="_procedure"></a>

1. Laden Sie eine IAM-Richtlinie für den AWS-Lastenverteilungs-Controller herunter, die es ihm ermöglicht, in Ihrem Namen Aufrufe an AWS-APIs zu tätigen.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/docs/install/iam_policy.json
   ```

1. Erstellen Sie eine IAM-Richtlinie mit der im vorherigen Schritt heruntergeladenen Richtlinie.

   ```
   aws iam create-policy \
       --policy-name AWSLoadBalancerControllerIAMPolicy \
       --policy-document file://iam_policy.json
   ```

1. Ersetzen Sie die Werte für den Cluster-Namen (`CLUSTER_NAME`), die AWS-Region (`AWS_REGION`) und die AWS-Konto-ID (`AWS_ACCOUNT_ID`) durch Ihre Einstellungen und führen Sie den folgenden Befehl aus.

   ```
   eksctl create iamserviceaccount \
       --cluster=CLUSTER_NAME \
       --namespace=kube-system \
       --name=aws-load-balancer-controller \
       --attach-policy-arn=arn:aws:iam::AWS_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \
       --override-existing-serviceaccounts \
       --region AWS_REGION \
       --approve
   ```

1. Fügen Sie das Helm-Diagramm-Repository eks-charts hinzu und aktualisieren Sie Ihr lokales Helm-Repository, um sicherzustellen, dass Sie über die aktuellsten Diagramme verfügen.

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

   ```
   helm repo update eks
   ```

1. Installieren Sie den AWS-Lastenverteilungs-Controller. Ersetzen Sie die Werte für Cluster-Name (`CLUSTER_NAME`), AWS-Region (`AWS_REGION`), VPC-ID (`VPC_ID`) und Helm-Chart-Version für AWS Load Balancer Controller (`AWS_LBC_HELM_VERSION`) durch Ihre Einstellungen und führen Sie den folgenden Befehl aus. Wenn Sie einen Cluster im kombinierten Modus mit Hybridknoten und Knoten in der AWS Cloud betreiben, können Sie AWS Load Balancer Controller auf Cloud-Knoten ausführen, indem Sie die Anweisungen unter [AWS-Lastenverteilungs-Controller](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-lbc) befolgen.
   + Die neueste Version des Helm-Charts finden Sie, indem Sie `helm search repo eks/aws-load-balancer-controller --versions` ausführen.

     ```
     helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
       -n kube-system \
       --version AWS_LBC_HELM_VERSION \
       --set clusterName=CLUSTER_NAME \
       --set region=AWS_REGION \
       --set vpcId=VPC_ID \
       --set serviceAccount.create=false \
       --set serviceAccount.name=aws-load-balancer-controller
     ```

1. Überprüfen Sie, ob der AWS Load Balancer Controller erfolgreich installiert wurde.

   ```
   kubectl get -n kube-system deployment aws-load-balancer-controller
   ```

   ```
   NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
   aws-load-balancer-controller   2/2     2            2           84s
   ```

1. Erstellen Sie eine Beispielanwendung. Das folgende Beispiel verwendet die Beispielanwendung [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/) für Microservices.

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Erstellen Sie eine Datei mit dem Namen `my-ingress-alb.yaml` und dem folgenden Inhalt.

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       alb.ingress.kubernetes.io/load-balancer-name: "my-ingress-alb"
       alb.ingress.kubernetes.io/target-type: "ip"
       alb.ingress.kubernetes.io/scheme: "internet-facing"
       alb.ingress.kubernetes.io/healthcheck-path: "/details/1"
   spec:
     ingressClassName: alb
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Wenden Sie die Ingress-Konfiguration auf Ihren Cluster an.

   ```
   kubectl apply -f my-ingress-alb.yaml
   ```

1. Die Bereitstellung von ALB für Ihre Ingress-Ressource kann einige Minuten dauern. Sobald der ALB bereitgestellt ist, wird Ihrer Ingress-Ressource eine Adresse zugewiesen, die dem DNS-Namen der ALB-Bereitstellung entspricht. Die Adresse hat das Format `<alb-name>-<random-string>.<region>.elb.amazonaws.com`.

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS   HOSTS   ADDRESS                                                     PORTS   AGE
   my-ingress   alb     *       my-ingress-alb-<random-string>.<region>.elb.amazonaws.com   80      23m
   ```

1. Zugriff auf den Service über die Adresse des ALB.

   ```
   curl -s http//my-ingress-alb-<random-string>.<region>.elb.amazonaws.com:80/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
     "details": "This is the details page"
   }
   ```

## Übersicht über Cilium Ingress und Cilium Gateway
<a name="hybrid-nodes-ingress-cilium"></a>

Die Ingress-Funktionen von Cilium sind in die Architektur von Cilium integriert und können über die Kubernetes Ingress API oder Gateway API verwaltet werden. Wenn Sie noch nicht über vorhandene Ingress-Ressourcen verfügen, empfiehlt AWS den Einstieg mit der Gateway-API, da diese eine ausdrucksstärkere und flexiblere Möglichkeit zur Definition und Verwaltung von Kubernetes-Netzwerkressourcen bietet. Die [Kubernetes-Gateway-API](https://gateway-api.sigs.k8s.io/) zielt darauf ab, die Definition und Verwaltung von Netzwerkressourcen für Ingress, Lastenausgleich und Service Mesh in Kubernetes-Clustern zu standardisieren.

Wenn Sie die Ingress- oder Gateway-Features von Cilium aktivieren, gleicht der Cilium-Operator Ingress-/Gateway-Objekte im Cluster ab und Envoy-Proxys auf jedem Knoten verarbeiten den Layer-7-Netzwerk-Datenverkehr (L7). Cilium stellt Ingress-/Gateway-Infrastruktur wie Load Balancer nicht direkt bereit. Wenn Sie Cilium Ingress/Gateway mit einem Load Balancer verwenden möchten, müssen Sie die Tools des Load Balancers, üblicherweise einen Ingress- oder Gateway-Controller, verwenden, um die Infrastruktur des Load Balancers bereitzustellen und zu verwalten.

Für den Ingress-/Gateway-Datenverkehr übernimmt Cilium den Kernnetzwerk-Datenverkehr und die Durchsetzung der L3/L4-Richtlinien, während integrierte Envoy-Proxys den L7-Netzwerk-Datenverkehr verarbeiten. Mit Cilium Ingress/Gateway ist Envoy für die Anwendung von L7-Routing-Regeln, Richtlinien und Anforderungsmanipulation, erweitertes Datenverkehrs-Management wie Datenverkehrsaufteilung und -spiegelung sowie TLS-Beendigung und -Initiierung verantwortlich. Die Envoy-Proxys von Cilium werden standardmäßig als separates DaemonSet (`cilium-envoy`) bereitgestellt, wodurch Envoy und der Cilium-Agent separat aktualisiert, skaliert und verwaltet werden können.

Weitere Informationen zur Funktionsweise von [Cilium Ingress](https://docs.cilium.io/en/stable/network/servicemesh/ingress/) und [Cilium Gateway](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/) finden Sie auf den Seiten Cilium Ingress und Cilium Gateway in der Cilium-Dokumentation.

## Vergleich zwischen Cilium Ingress und Gateway
<a name="hybrid-nodes-ingress-cilium-comparison"></a>

Die folgende Tabelle fasst die Features von Cilium Ingress und Cilium Gateway in **Cilium-Version 1.17.x** zusammen.


| Funktion | Ingress | Gateway | 
| --- | --- | --- | 
|  Servicetyp LoadBalancer  |  Ja  |  Ja  | 
|  Servicetyp NodePort  |  Ja  |  Keine1   | 
|  Host-Netzwerk  |  Ja  |  Ja  | 
|  Gemeinsam genutzter Load Balancer  |  Ja  |  Ja  | 
|  Dedizierter Load Balancer  |  Ja  |  Nr.2   | 
|  Netzwerkrichtlinien  |  Ja  |  Ja  | 
|  Protokolle  |  Layer 7 (HTTP(S), gRPC)  |  Layer 7 (HTTP(S), gRPC)3   | 
|  TLS Passthrough  |  Ja  |  Ja  | 
|  Verwaltung des Datenverkehrs  |  Pfad- und Host-Routing  |  Pfad- und Host-Routing, URL-Weiterleitung und -Umschreibung, Datenverkehrsteilung, Header-Änderung  | 

 1 Cilium-Gateway-Support für NodePort-Services ist für Cilium-Version 1.18.x geplant ([\$127273](https://github.com/cilium/cilium/pull/27273))

 2 Cilium-Gateway-Support für dedizierte Load Balancer ([\$125567](https://github.com/cilium/cilium/issues/25567))

 3 Cilium-Gateway-Support für TCP/UDP ([\$121929](https://github.com/cilium/cilium/issues/21929))

## Cilium Gateway installieren
<a name="hybrid-nodes-ingress-cilium-gateway-install"></a>

### Überlegungen
<a name="_considerations_2"></a>
+ Cilium muss mit `nodePort.enabled` auf `true` konfiguriert werden, wie in den folgenden Beispielen dargestellt. Wenn Sie das kube-proxy-Ersatz-Feature von Cilium verwenden, müssen Sie `nodePort.enabled` nicht auf `true` setzen.
+ Cilium muss mit `envoy.enabled` auf `true` konfiguriert werden, wie in den folgenden Beispielen dargestellt.
+ Cilium Gateway kann im Load-Balancer-Modus (Standard) oder im Host-Netzwerkmodus bereitgestellt werden.
+ Wenn Sie Cilium Gateway im Load Balancer-Modus verwenden, muss die `service.beta.kubernetes.io/aws-load-balancer-type: "external"`-Annotation auf der Gateway-Ressource festgelegt werden, um zu verhindern, dass der alte AWS-Cloud-Anbieter einen Classic Load Balancer für den Service vom Typ LoadBalancer erstellt, den Cilium für die Gateway-Ressource erstellt.
+ Bei Verwendung von Cilium Gateway im Host-Netzwerkmodus ist der Service vom Typ LoadBalancer-Modus deaktiviert. Der Host-Netzwerkmodus ist nützlich für Umgebungen ohne Load Balancer-Infrastruktur. Weitere Informationen finden Sie unter [Host-Netzwerk](#hybrid-nodes-ingress-cilium-host-network).

### Voraussetzungen
<a name="_prerequisites_2"></a>

1. Helm ist in Ihrer Befehlszeilenumgebung installiert. Weitere Informationen finden Sie unter [Anweisungen zur Einrichtung von Helm](helm.md).

1. Cilium wurde gemäß den Anweisungen in [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) installiert.

### Verfahren
<a name="_procedure_2"></a>

1. Installieren Sie die benutzerdefinierten Ressourcendefinitionen (CRDs) der Kubernetes-Gateway-API.

   ```
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_gatewayclasses.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_gateways.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml
   ```

1. Erstellen Sie eine Datei mit dem Namen `cilium-gateway-values.yaml` und den folgenden Inhalten. Das folgende Beispiel konfiguriert Cilium Gateway so, dass der Standard-Load-Balancer-Modus verwendet wird und ein separates `cilium-envoy` DaemonSet für Envoy-Proxys verwendet wird, das so konfiguriert ist, dass es nur auf Hybridknoten ausgeführt wird.

   ```
   gatewayAPI:
     enabled: true
     # uncomment to use host network mode
     # hostNetwork:
     #   enabled: true
   nodePort:
     enabled: true
   envoy:
     enabled: true
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
   ```

1. Wenden Sie die Helm-Wertedatei auf Ihren Cluster an.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --values cilium-gateway-values.yaml
   ```

1. Bestätigen Sie, dass der Cilium-Operator, der Agent und die Envoy-Pods ausgeführt werden.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-envoy-5pgnd                 1/1     Running   0          6m31s
   cilium-envoy-6fhg4                 1/1     Running   0          6m30s
   cilium-envoy-jskrk                 1/1     Running   0          6m30s
   cilium-envoy-k2xtb                 1/1     Running   0          6m31s
   cilium-envoy-w5s9j                 1/1     Running   0          6m31s
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

## Cilium Gateway konfigurieren
<a name="hybrid-nodes-ingress-cilium-gateway-configure"></a>

Cilium Gateway wird für Gateway-Objekte aktiviert, indem `gatewayClassName` auf `cilium` gesetzt wird. Der Service, den Cilium für Gateway-Ressourcen erstellt, kann mit Feldern im Gateway-Objekt konfiguriert werden. Gängige Annotationen, die von Gateway-Controllern zur Konfiguration der Load-Balancer-Infrastruktur verwendet werden, können über das `infrastructure`-Feld des Gateway-Objekts konfiguriert werden. Bei Verwendung von Ciliums LoadBalancer IPAM (siehe Beispiel in [Servicetyp LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer)) kann die für den Service vom Typ LoadBalancer zu verwendende IP-Adresse über das `addresses`-Feld des Gateway-Objekts konfiguriert werden. Weitere Informationen zur Gateway-Konfiguration finden Sie in der [Kubernetes-Gateway-API-Spezifikation](https://gateway-api.sigs.k8s.io/reference/spec/#gateway).

```
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: my-gateway
spec:
  gatewayClassName: cilium
  infrastructure:
    annotations:
      service.beta.kubernetes.io/...
      service.kuberentes.io/...
  addresses:
  - type: IPAddress
    value: <LoadBalancer IP address>
  listeners:
  ...
```

Cilium und die Kubernetes Gateway-Spezifikation unterstützen die Ressourcen GatewayClass, Gateway, HTTPRoute, GRPCRoute und ReferenceGrant.
+ Eine Liste der verfügbaren Felder finden Sie in den [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/HTTPRoute)- und [GRPCRoute](https://gateway-api.sigs.k8s.io/api-types/grpcroute/GRPCRoute)-Spezifikationen.
+ Informationen zur Verwendung und Konfiguration dieser Ressourcen finden Sie in den Beispielen im nachfolgenden [Cilium Gateway bereitstellen](#hybrid-nodes-ingress-cilium-gateway-deploy)-Abschnitt und in der [Cilium-Dokumentation](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/#examples).

## Cilium Gateway bereitstellen
<a name="hybrid-nodes-ingress-cilium-gateway-deploy"></a>

1. Erstellen Sie eine Beispielanwendung. Das folgende Beispiel verwendet die Beispielanwendung [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/) für Microservices.

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Bestätigen Sie, dass die Anwendung erfolgreich ausgeführt wird.

   ```
   kubectl get pods
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   details-v1-766844796b-9965p       1/1     Running   0          81s
   productpage-v1-54bb874995-jmc8j   1/1     Running   0          80s
   ratings-v1-5dc79b6bcd-smzxz       1/1     Running   0          80s
   reviews-v1-598b896c9d-vj7gb       1/1     Running   0          80s
   reviews-v2-556d6457d-xbt8v        1/1     Running   0          80s
   reviews-v3-564544b4d6-cpmvq       1/1     Running   0          80s
   ```

1. Erstellen Sie eine Datei mit dem Namen `my-gateway.yaml` und dem folgenden Inhalt. Das folgende Beispiel verwendet die `service.beta.kubernetes.io/aws-load-balancer-type: "external"`-Annotation, um zu verhindern, dass der alte AWS-Cloud-Anbieter einen Classic Load Balancer für den Service vom Typ LoadBalancer erstellt, den Cilium für die Gateway-Ressource erstellt.

   ```
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: Gateway
   metadata:
     name: my-gateway
   spec:
     gatewayClassName: cilium
     infrastructure:
       annotations:
         service.beta.kubernetes.io/aws-load-balancer-type: "external"
     listeners:
     - protocol: HTTP
       port: 80
       name: web-gw
       allowedRoutes:
         namespaces:
           from: Same
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: HTTPRoute
   metadata:
     name: http-app-1
   spec:
     parentRefs:
     - name: my-gateway
       namespace: default
     rules:
     - matches:
       - path:
           type: PathPrefix
           value: /details
       backendRefs:
       - name: details
         port: 9080
   ```

1. Wenden Sie die Gateway-Ressource auf Ihren Cluster an.

   ```
   kubectl apply -f my-gateway.yaml
   ```

1. Bestätigen Sie, dass die Gateway-Ressource und der entsprechende Service erstellt wurden. Zum gegenwärtigen Zeitpunkt wird davon ausgegangen, dass das `ADDRESS`-Feld der Gateway-Ressource keine IP-Adresse oder keinen Host-Namen enthält und dass dem Service vom Typ LoadBalancer für die Gateway-Ressource ebenfalls keine IP-Adresse oder kein Host-Name zugewiesen ist.

   ```
   kubectl get gateway my-gateway
   ```

   ```
   NAME         CLASS    ADDRESS   PROGRAMMED   AGE
   my-gateway   cilium             True         10s
   ```

   ```
   kubectl get svc cilium-gateway-my-gateway
   ```

   ```
   NAME                        TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
   cilium-gateway-my-gateway   LoadBalancer   172.16.227.247   <pending>     80:30912/TCP   24s
   ```

1. Fahren Sie mit [Servicetyp LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer) fort, um die Gateway-Ressource für die Verwendung einer von Cilium Load Balancer IPAM zugewiesenen IP-Adresse zu konfigurieren, und mit [Servicetyp NodePort](#hybrid-nodes-ingress-cilium-nodeport) oder [Host-Netzwerk](#hybrid-nodes-ingress-cilium-host-network), um die Gateway-Ressource für die Verwendung von NodePort- oder Host-Netzwerkadressen zu konfigurieren.

## Cilium Ingress installieren
<a name="hybrid-nodes-ingress-cilium-ingress-install"></a>

### Überlegungen
<a name="_considerations_3"></a>
+ Cilium muss mit `nodePort.enabled` auf `true` konfiguriert werden, wie in den folgenden Beispielen dargestellt. Wenn Sie das kube-proxy-Ersatz-Feature von Cilium verwenden, müssen Sie `nodePort.enabled` nicht auf `true` setzen.
+ Cilium muss mit `envoy.enabled` auf `true` konfiguriert werden, wie in den folgenden Beispielen dargestellt.
+ Wenn `ingressController.loadbalancerMode` auf `dedicated` gesetzt ist, erstellt Cilium dedizierte Services für jede Ingress-Ressource. Wenn `ingressController.loadbalancerMode` auf `shared` gesetzt ist, erstellt Cilium einen gemeinsamen Service vom Typ LoadBalancer für alle Ingress-Ressourcen im Cluster. Bei Verwendung des `shared`-Load-Balancer-Modus werden die Einstellungen für den gemeinsam genutzten Service wie `labels`, `annotations`, `type` und `loadBalancerIP` im `ingressController.service`-Abschnitt der Helm-Werte konfiguriert. Weitere Informationen finden Sie in der [Wertereferenz von Cilium Helm](https://github.com/cilium/cilium/blob/v1.17.6/install/kubernetes/cilium/values.yaml#L887).
+ Wenn `ingressController.default` auf `true` gesetzt ist, wird Cilium als Standard-Ingress-Controller für den Cluster konfiguriert und erstellt Ingress-Einträge, auch wenn `ingressClassName` bei Ingress-Ressourcen nicht angegeben ist.
+ Cilium Ingress kann im Load Balancer- (Standard), Knoten-Port- oder Host-Netzwerkmodus bereitgestellt werden. Wenn Cilium im Host-Netzwerkmodus installiert ist, werden die Modi „Service vom Typ LoadBalancer“ und „Service vom Typ NodePort“ deaktiviert. Weitere Informationen finden Sie unter [Host-Netzwerk](#hybrid-nodes-ingress-cilium-host-network).
+ Setzen Sie in den Helm-Werten `ingressController.service.annotations` immer auf `service.beta.kubernetes.io/aws-load-balancer-type: "external"`, um zu verhindern, dass der alte AWS-Cloud-Anbieter einen Classic Load Balancer für den vom [Helm-Chart-Diagramm](https://github.com/cilium/cilium/blob/main/install/kubernetes/cilium/templates/cilium-ingress-service.yaml) erstellten Standard-`cilium-ingress`-Service erstellt.

### Voraussetzungen
<a name="_prerequisites_3"></a>

1. Helm ist in Ihrer Befehlszeilenumgebung installiert. Weitere Informationen finden Sie unter [Anweisungen zur Einrichtung von Helm](helm.md).

1. Cilium wurde gemäß den Anweisungen in [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) installiert.

### Verfahren
<a name="_procedure_3"></a>

1. Erstellen Sie eine Datei mit dem Namen `cilium-ingress-values.yaml` und den folgenden Inhalten. Das folgende Beispiel konfiguriert Cilium Ingress so, dass der Standard-`dedicated`-Modus für Load-Balancer verwendet wird und ein separates `cilium-envoy` DaemonSet für Envoy-Proxys verwendet wird, das so konfiguriert ist, dass es nur auf Hybridknoten ausgeführt wird.

   ```
   ingressController:
     enabled: true
     loadbalancerMode: dedicated
     service:
       annotations:
         service.beta.kubernetes.io/aws-load-balancer-type: "external"
   nodePort:
     enabled: true
   envoy:
     enabled: true
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
   ```

1. Wenden Sie die Helm-Wertedatei auf Ihren Cluster an.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --values cilium-ingress-values.yaml
   ```

1. Bestätigen Sie, dass der Cilium-Operator, der Agent und die Envoy-Pods ausgeführt werden.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-envoy-5pgnd                 1/1     Running   0          6m31s
   cilium-envoy-6fhg4                 1/1     Running   0          6m30s
   cilium-envoy-jskrk                 1/1     Running   0          6m30s
   cilium-envoy-k2xtb                 1/1     Running   0          6m31s
   cilium-envoy-w5s9j                 1/1     Running   0          6m31s
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

## Cilium Ingress konfigurieren
<a name="hybrid-nodes-ingress-cilium-ingress-configure"></a>

Cilium Ingress wird für Ingress-Objekte aktiviert, indem `ingressClassName` auf `cilium` gesetzt wird. Der/die Service(s), den/die Cilium für Ingress-Ressourcen erstellt, kann/können mit Annotationen zu den Ingress-Objekten konfiguriert werden, wenn der `dedicated`-Load-Balancer-Modus verwendet wird, sowie in der Cilium-/Helm-Konfiguration, wenn der `shared`-Load-Balancer-Modus verwendet wird. Diese Annotationen werden oft von Ingress-Controllern verwendet, um die Load-Balancer-Infrastruktur oder andere Attribute des Service zu konfigurieren, wie z. B. den Servicetyp, den Load-Balancer-Modus, Ports und TLS Passthrough. Die wichtigsten Annotationen werden unten beschrieben. Eine vollständige Liste der unterstützten Annotationen finden Sie in den [Cilium-Ingress-Annotationen](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#supported-ingress-annotations) in der Cilium-Dokumentation.


| Anmerkung | Beschreibung | 
| --- | --- | 
|   `ingress.cilium.io/loadbalancer-mode`   |   `dedicated`: Dedizierter Service vom Typ LoadBalancer für jede Ingress-Ressource (Standard).  `shared`: Einzelner Service vom Typ LoadBalancer für alle Ingress-Ressourcen.  | 
|   `ingress.cilium.io/service-type`   |   `LoadBalancer`: Der Service ist vom Typ LoadBalancer (Standard).  `NodePort`: Der Service ist vom Typ NodePort.  | 
|   `service.beta.kubernetes.io/aws-load-balancer-type`   |   `"external"`: Verhindern Sie, dass ältere AWS-Cloud-Anbieter Classic Load Balancer für Services vom Typ LoadBalancer bereitstellen.  | 
|   `lbipam.cilium.io/ips`   |  Liste der IP-Adressen, die vom Cilium LoadBalancer IPAM zugewiesen werden sollen  | 

Cilium und die Kubernetes-Ingress-Spezifikation unterstützen exakte, präfix- und implementierungsspezifische Übereinstimmungsregeln für Ingress-Pfade. Cilium unterstützt Regex als implementierungsspezifische Übereinstimmungsregel. Weitere Informationen finden Sie unter [Ingress-Pfadtypen und -Priorität](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#ingress-path-types-and-precedence) und [Beispiele für Pfadtypen](https://docs.cilium.io/en/stable/network/servicemesh/path-types/) in der Cilium-Dokumentation sowie in den Beispielen im [Cilium Ingress bereitstellen](#hybrid-nodes-ingress-cilium-ingress-deploy)-Abschnitt dieser Seite.

Ein Beispiel für ein Cilium-Ingress-Objekt ist unten dargestellt.

```
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    service.beta.kuberentes.io/...
    service.kuberentes.io/...
spec:
  ingressClassName: cilium
  rules:
  ...
```

## Cilium Ingress bereitstellen
<a name="hybrid-nodes-ingress-cilium-ingress-deploy"></a>

1. Erstellen Sie eine Beispielanwendung. Das folgende Beispiel verwendet die Beispielanwendung [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/) für Microservices.

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Bestätigen Sie, dass die Anwendung erfolgreich ausgeführt wird.

   ```
   kubectl get pods
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   details-v1-766844796b-9965p       1/1     Running   0          81s
   productpage-v1-54bb874995-jmc8j   1/1     Running   0          80s
   ratings-v1-5dc79b6bcd-smzxz       1/1     Running   0          80s
   reviews-v1-598b896c9d-vj7gb       1/1     Running   0          80s
   reviews-v2-556d6457d-xbt8v        1/1     Running   0          80s
   reviews-v3-564544b4d6-cpmvq       1/1     Running   0          80s
   ```

1. Erstellen Sie eine Datei mit dem Namen `my-ingress.yaml` und dem folgenden Inhalt. Das folgende Beispiel verwendet die `service.beta.kubernetes.io/aws-load-balancer-type: "external"`-Annotation, um zu verhindern, dass der alte AWS-Cloud-Anbieter einen Classic Load Balancer für den Service vom Typ LoadBalancer erstellt, den Cilium für die Ingress-Ressource erstellt.

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: "external"
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Wenden Sie die Ingress-Ressource auf Ihren Cluster an.

   ```
   kubectl apply -f my-ingress.yaml
   ```

1. Bestätigen Sie, dass die Ingress-Ressource und der entsprechende Service erstellt wurden. Zu diesem Zeitpunkt wird davon ausgegangen, dass das `ADDRESS`-Feld der Ingress-Ressource keine IP-Adresse oder keinen Host-Namen enthält und dass dem gemeinsam genutzten oder dedizierten Service vom Typ LoadBalancer für die Ingress-Ressource ebenfalls keine IP-Adresse oder kein Host-Name zugewiesen ist.

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS    HOSTS   ADDRESS   PORTS   AGE
   my-ingress   cilium   *                 80      8s
   ```

   Für Load-Balancer-Modus `shared` 

   ```
   kubectl -n kube-system get svc cilium-ingress
   ```

   ```
   NAME             TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress   LoadBalancer   172.16.217.48   <pending>     80:32359/TCP,443:31090/TCP   10m
   ```

   Für Load-Balancer-Modus `dedicated` 

   ```
   kubectl -n default get svc cilium-ingress-my-ingress
   ```

   ```
   NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress-my-ingress   LoadBalancer   172.16.193.15   <pending>     80:32088/TCP,443:30332/TCP   25s
   ```

1. Fahren Sie mit [Servicetyp LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer) fort, um die Ingress-Ressource so zu konfigurieren, dass sie eine von Cilium Load Balancer IPAM zugewiesene IP-Adresse verwendet, und mit [Servicetyp NodePort](#hybrid-nodes-ingress-cilium-nodeport) oder [Host-Netzwerk](#hybrid-nodes-ingress-cilium-host-network), um die Ingress-Ressource so zu konfigurieren, dass sie NodePort- oder Host-Netzwerkadressen verwendet.

## Servicetyp LoadBalancer
<a name="hybrid-nodes-ingress-cilium-loadbalancer"></a>

### Vorhandene Load-Balancer-Infrastruktur
<a name="_existing_load_balancer_infrastructure"></a>

Standardmäßig erstellt Cilium sowohl für Cilium Ingress als auch für Cilium-Gateway-Kubernetes-Services vom Typ LoadBalancer für die Ingress-/Gateway-Ressourcen. Die Attribute der von Cilium erstellten Service(s) können über die Ingress- und Gateway-Ressourcen konfiguriert werden. Wenn Sie Ingress- oder Gateway-Ressourcen erstellen, werden die extern verfügbar gemachten IP-Adressen oder Host-Namen für Ingress oder Gateway von der Load Balancer-Infrastruktur zugewiesen, die normalerweise von einem Ingress- oder Gateway-Controller bereitgestellt wird.

Viele Ingress- und Gateway-Controller verwenden Annotationen, um die Load-Balancer-Infrastruktur zu erkennen und zu konfigurieren. Die Annotationen für diese Ingress- und Gateway-Controller werden auf den Ingress- oder Gateway-Ressourcen konfiguriert, wie in den vorherigen Beispielen oben gezeigt. Informationen zu den unterstützten Annotationen finden Sie in der Dokumentation Ihres Ingress- oder Gateway-Controllers. Eine Liste gängiger Controller finden Sie in der [Kubernetes-Ingress-Dokumentation](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) und der [Kubernetes-Gateway-Dokumentation](https://gateway-api.sigs.k8s.io/implementations/).

**Wichtig**  
Cilium Ingress und Gateway können nicht mit dem AWS Load Balancer Controller und AWS Network Load Balancern (NLBs) mit EKS-Hybridknoten verwendet werden. Der Versuch, diese zusammen zu verwenden, führt zu nicht registrierten Zielen, da der NLB versucht, eine direkte Verbindung zu den Pod-IPs herzustellen, die den Service vom Typ LoadBalancer unterstützen, wenn der `target-type` des NLB auf `ip` eingestellt ist (Voraussetzung für die Verwendung von NLB mit Workloads, die auf EKS-Hybridknoten ausgeführt werden).

### Keine Load-Balancer-Infrastruktur
<a name="_no_load_balancer_infrastructure"></a>

Wenn Sie in Ihrer Umgebung keine Load Balancer-Infrastruktur und keinen entsprechenden Ingress-/Gateway-Controller haben, können Ingress-/Gateway-Ressourcen und entsprechende Services vom Typ LoadBalancer so konfiguriert werden, dass sie IP-Adressen verwenden, die von der [Load-Balancer-IP-Adressverwaltung](https://docs.cilium.io/en/stable/network/lb-ipam/) (LB IPAM) von Cilium zugewiesen werden. Cilium LB IPAM kann mit bekannten IP-Adressbereichen aus Ihrer lokalen Umgebung konfiguriert werden. Mit dem integrierten Border Gateway Protocol (BGP)-Support von Cilium oder L2-Ankündigungen können die LoadBalancer-IP-Adressen in Ihrem On-Premises-Netzwerk bekannt gegeben werden.

Das folgende Beispiel veranschaulicht, wie Sie Ciliums LB IPAM mit einer IP-Adresse für Ihre Ingress-/Gateway-Ressourcen konfigurieren und wie Sie die Cilium-BGP-Steuerebene konfigurieren, um die LoadBalancer-IP-Adresse im On-Premises-Netzwerk bekannt zu geben. Das LB-IPAM-Feature von Cilium ist standardmäßig aktiviert, wird jedoch erst nach der Erstellung einer `CiliumLoadBalancerIPPool`-Ressource aktiviert.

#### Voraussetzungen
<a name="_prerequisites_4"></a>
+ Cilium Ingress oder Gateway wurde gemäß den Anweisungen in [Cilium Ingress installieren](#hybrid-nodes-ingress-cilium-ingress-install) oder [Cilium Gateway installieren](#hybrid-nodes-ingress-cilium-gateway-install) installiert.
+ Cilium-Ingress- oder Gateway-Ressourcen mit Beispielanwendung bereitgestellt gemäß den Anweisungen in [Cilium Ingress bereitstellen](#hybrid-nodes-ingress-cilium-ingress-deploy) oder [Cilium Gateway bereitstellen](#hybrid-nodes-ingress-cilium-gateway-deploy).
+ Cilium-BGP-Steuerebene gemäß den Anweisungen in [Konfiguration von Cilium BGP für Hybridknoten](hybrid-nodes-cilium-bgp.md) aktiviert. Wenn Sie BGP nicht verwenden möchten, können Sie diese Voraussetzung überspringen. Sie können jedoch erst dann auf Ihre Ingress- oder Gateway-Ressource zugreifen, wenn die von Cilium LB IPAM zugewiesene LoadBalancer-IP-Adresse in Ihrem On-Premises-Netzwerk routingfähig sind.

#### Verfahren
<a name="_procedure_4"></a>

1. Patchen Sie optional die Ingress- oder Gateway-Ressource, um eine bestimmte IP-Adresse für den Service vom Typ LoadBalancer anzufordern. Wenn Sie keine bestimmte IP-Adresse anfordern, weist Cilium im nächsten Schritt eine IP-Adresse aus dem in der `CiliumLoadBalancerIPPool`-Ressource konfigurierten IP-Adressbereich zu. Ersetzen Sie in den folgenden Befehlen `LB_IP_ADDRESS` durch die anzufordernde IP-Adresse für den Service vom Typ LoadBalancer.

    **Gateway** 

   ```
   kubectl patch gateway -n default my-gateway --type=merge -p '{
     "spec": {
       "addresses": [{"type": "IPAddress", "value": "LB_IP_ADDRESS"}]
     }
   }'
   ```

    **Ingress** 

   ```
   kubectl patch ingress my-ingress --type=merge -p '{
     "metadata": {"annotations": {"lbipam.cilium.io/ips": "LB_IP_ADDRESS"}}
   }'
   ```

1. Erstellen Sie eine Datei mit dem Namen `cilium-lbip-pool-ingress.yaml` mit einer `CiliumLoadBalancerIPPool`-Ressource, um den IP-Adressbereich des Load Balancers für Ihre Ingress-/Gateway-Ressourcen zu konfigurieren.
   + Wenn Sie Cilium Ingress verwenden, wendet Cilium das `cilium.io/ingress: "true"`-Label automatisch auf die Services an, die es für Ingress-Ressourcen erstellt. Sie können dieses Label im Feld `serviceSelector` der `CiliumLoadBalancerIPPool`-Ressourcendefinition verwenden, um die für LB IPAM geeigneten Services auszuwählen.
   + Wenn Sie Cilium-Gateway verwenden, können Sie das `gateway.networking.k8s.io/gateway-name`-Label in den Feldern `serviceSelector` der `CiliumLoadBalancerIPPool`-Ressourcendefinition verwenden, um die für LB IPAM geeigneten Gateway-Ressourcen auszuwählen.
   + Ersetzen Sie `LB_IP_CIDR` durch den IP-Adressbereich, der für die IP-Adressen des Load Balancers verwendet werden soll. Um eine einzelne IP-Adresse auszuwählen, verwenden Sie ein `/32` CIDR. Weitere Informationen finden Sie unter [LoadBalancer-IP-Adressverwaltung](https://docs.cilium.io/en/stable/network/lb-ipam/) in der Cilium-Dokumentation.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumLoadBalancerIPPool
     metadata:
       name: bookinfo-pool
     spec:
       blocks:
       - cidr: "LB_IP_CIDR"
       serviceSelector:
         # if using Cilium Gateway
         matchExpressions:
           - { key: gateway.networking.k8s.io/gateway-name, operator: In, values: [ my-gateway ] }
         # if using Cilium Ingress
         matchLabels:
           cilium.io/ingress: "true"
     ```

1. Wenden Sie die `CiliumLoadBalancerIPPool`-Ressource auf Ihren Cluster an.

   ```
   kubectl apply -f cilium-lbip-pool-ingress.yaml
   ```

1. Bestätigen Sie, dass von Cilium LB IPAM eine IP-Adresse für die Ingress-/Gateway-Ressource zugewiesen wurde.

    **Gateway** 

   ```
   kubectl get gateway my-gateway
   ```

   ```
   NAME         CLASS    ADDRESS        PROGRAMMED   AGE
   my-gateway   cilium   LB_IP_ADDRESS    True         6m41s
   ```

    **Ingress** 

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS    HOSTS   ADDRESS        PORTS   AGE
   my-ingress   cilium   *       LB_IP_ADDRESS   80      10m
   ```

1. Erstellen Sie eine Datei mit dem Namen `cilium-bgp-advertisement-ingress.yaml` und einer `CiliumBGPAdvertisement`-Ressource, um die LoadBalancer-IP-Adresse für die Ingress-/Gateway-Ressourcen bekannt zu geben. Wenn Sie Cilium BGP nicht verwenden, können Sie diesen Schritt überspringen. Die für Ihre Ingress-/Gateway-Ressource verwendete LoadBalancer-IP-Adresse muss in Ihrem On-Premises-Netzwerk routingfähig sein, damit Sie den Service im nächsten Schritt abfragen können.

   ```
   apiVersion: cilium.io/v2alpha1
   kind: CiliumBGPAdvertisement
   metadata:
     name: bgp-advertisement-lb-ip
     labels:
       advertise: bgp
   spec:
     advertisements:
       - advertisementType: "Service"
         service:
           addresses:
             - LoadBalancerIP
         selector:
           # if using Cilium Gateway
           matchExpressions:
             - { key: gateway.networking.k8s.io/gateway-name, operator: In, values: [ my-gateway ] }
           # if using Cilium Ingress
           matchLabels:
             cilium.io/ingress: "true"
   ```

1. Wenden Sie die `CiliumBGPAdvertisement`-Ressource auf Ihren Cluster an.

   ```
   kubectl apply -f cilium-bgp-advertisement-ingress.yaml
   ```

1. Greifen Sie über die von Cilium LB IPAM zugewiesene IP-Adresse auf den Service zu.

   ```
   curl -s http://LB_IP_ADDRESS:80/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

## Servicetyp NodePort
<a name="hybrid-nodes-ingress-cilium-nodeport"></a>

Wenn Sie in Ihrer Umgebung keine Load Balancer-Infrastruktur und keinen entsprechenden Ingress-Controller haben oder wenn Sie Ihre Load Balancer-Infrastruktur selbst verwalten oder DNS-basiertes Load Balancing verwenden, können Sie Cilium Ingress so konfigurieren, dass Service vom Typ NodePort für die Ingress-Ressourcen erstellt werden Bei Verwendung von NodePort mit Cilium Ingress wird der Service vom Typ NodePort auf einem Port auf jedem Knoten im Port-Bereich 30000-32767 verfügbar gemacht. In diesem Modus wird der Datenverkehr, sobald er einen beliebigen Knoten im Cluster auf dem NodePort erreicht, an einen Pod weitergeleitet, der den Service unterstützt. Dieser Pod kann sich auf demselben Knoten oder auf einem anderen Knoten befinden.

**Anmerkung**  
Der Support für Cilium Gateway für NodePort-Services ist für Cilium Version 1.18.x geplant ([\$127273](https://github.com/cilium/cilium/pull/27273)).

### Voraussetzungen
<a name="_prerequisites_5"></a>
+ Cilium Ingress wurde gemäß den Anweisungen in [Cilium Ingress installieren](#hybrid-nodes-ingress-cilium-ingress-install) installiert.
+ Cilium-Ingress-Ressourcen mit Beispielanwendung wurden gemäß den Anweisungen in [Cilium Ingress bereitstellen](#hybrid-nodes-ingress-cilium-ingress-deploy) bereitgestellt.

### Verfahren
<a name="_procedure_5"></a>

1. Patchen Sie die vorhandene Ingress-Ressource `my-ingress`, um sie vom Servicetyp LoadBalancer in NodePort zu ändern.

   ```
   kubectl patch ingress my-ingress --type=merge -p '{
       "metadata": {"annotations": {"ingress.cilium.io/service-type": "NodePort"}}
   }'
   ```

   Falls Sie die Ingress-Ressource noch nicht erstellt haben, können Sie sie erstellen, indem Sie die folgende Ingress-Definition auf Ihren Cluster anwenden. Beachten Sie, dass die folgende Ingress-Definition die in [Cilium Ingress bereitstellen](#hybrid-nodes-ingress-cilium-ingress-deploy) beschriebene Istio-Bookinfo-Beispielanwendung verwendet.

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: "external"
       "ingress.cilium.io/service-type": "NodePort"
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Bestätigen Sie, dass der Service für die Ingress-Ressource aktualisiert wurde, um den Servicetyp NodePort zu verwenden. Notieren Sie sich den Port für das HTTP-Protokoll in der Ausgabe. Im folgenden Beispiel lautet dieser HTTP-Port `32353` und wird in einem späteren Schritt zur Abfrage des Services verwendet. Der Vorteil der Verwendung von Cilium Ingress mit einem Servic. vom Typ NodePort besteht darin, dass Sie pfad- und Host-basiertes Routing sowie Netzwerkrichtlinien für den Ingress-Datenverkehr anwenden können. Dies ist bei einem Standard-Service vom Typ NodePort ohne Ingress nicht möglich.

   ```
   kubectl -n default get svc cilium-ingress-my-ingress
   ```

   ```
   NAME                        TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress-my-ingress   NodePort   172.16.47.153   <none>        80:32353/TCP,443:30253/TCP   27m
   ```

1. Rufen Sie die IP-Adressen Ihrer Knoten in Ihrem Cluster ab.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Greifen Sie mit den IP-Adressen Ihrer Knoten und dem oben erfassten NodePort auf den Service vom Typ NodePort zu. Im folgenden Beispiel ist die verwendete Knoten-IP-Adresse `10.80.146.32` und der Knoten-Port ist `32353`. Ersetzen Sie diese durch die Werte für Ihre Umgebung.

   ```
   curl -s http://10.80.146.32:32353/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

## Host-Netzwerk
<a name="hybrid-nodes-ingress-cilium-host-network"></a>

Ähnlich wie beim Service vom Typ NodePort können Sie – wenn Sie nicht über eine Load-Balancer-Infrastruktur und einen Ingress- oder Gateway-Controller verfügen oder wenn Sie Ihren Load Balancing mit einem externen Load Balancer selbst verwalten – Cilium Ingress und Cilium Gateway so konfigurieren, dass Ingress- und Gateway-Ressourcen direkt im Host-Netzwerk verfügbar gemacht werden. Wenn der Host-Netzwerkmodus für eine Ingress- oder Gateway-Ressource aktiviert ist, werden die Modi „Service vom Typ LoadBalancer“ und „NodePort“ automatisch deaktiviert. Der Host-Netzwerkmodus und diese alternativen Modi schließen sich für jede Ingress- oder Gateway-Ressource gegenseitig aus. Im Vergleich zum Modus „Service vom Typ NodePort“ bietet der Host-Netzwerkmodus zusätzliche Flexibilität hinsichtlich des verwendbaren Portbereichs (er ist nicht auf den NodePort-Bereich 30000–32767 beschränkt). Außerdem können Sie eine Teilmenge von Knoten konfigurieren, auf denen die Envoy-Proxys im Host-Netzwerk ausgeführt werden.

### Voraussetzungen
<a name="_prerequisites_6"></a>
+ Cilium Ingress oder Gateway wurde gemäß den Anweisungen in [Cilium Ingress installieren](#hybrid-nodes-ingress-cilium-ingress-install) oder [Cilium Gateway installieren](#hybrid-nodes-ingress-cilium-gateway-install) installiert.

### Verfahren
<a name="_procedure_6"></a>

#### Gateway
<a name="_gateway"></a>

1. Erstellen Sie eine Datei mit dem Namen `cilium-gateway-host-network.yaml` und dem folgenden Inhalt.

   ```
   gatewayAPI:
     enabled: true
     hostNetwork:
       enabled: true
       # uncomment to restrict nodes where Envoy proxies run on the host network
       # nodes:
       #   matchLabels:
       #     role: gateway
   ```

1. Wenden Sie die Cilium Gateway-Konfiguration des Host-Netzwerks auf Ihren Cluster an.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     -f cilium-gateway-host-network.yaml
   ```

   Wenn Sie die Gateway-Ressource noch nicht erstellt haben, können Sie sie erstellen, indem Sie die folgende Gateway-Definition auf Ihren Cluster anwenden. Die nachfolgende Gateway-Definition verwendet die in [Cilium Gateway bereitstellen](#hybrid-nodes-ingress-cilium-gateway-deploy) beschriebene Istio-Bookinfo-Beispielanwendung. Im folgenden Beispiel ist die Gateway-Ressource so konfiguriert, dass sie den `8111`-Port für den HTTP-Listener verwendet, den gemeinsamen Listener-Port für die im Host-Netzwerk ausgeführten Envoy-Proxys. Wenn Sie einen bevorzugten Port (unter 1023) für die Gateway-Ressource verwenden, finden Sie Anweisungen dazu in der [Cilium-Dokumentation](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/#bind-to-privileged-port).

   ```
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: Gateway
   metadata:
     name: my-gateway
   spec:
     gatewayClassName: cilium
     listeners:
     - protocol: HTTP
       port: 8111
       name: web-gw
       allowedRoutes:
         namespaces:
           from: Same
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: HTTPRoute
   metadata:
     name: http-app-1
   spec:
     parentRefs:
     - name: my-gateway
       namespace: default
     rules:
     - matches:
       - path:
           type: PathPrefix
           value: /details
       backendRefs:
       - name: details
         port: 9080
   ```

   Mit dem folgenden Befehl können Sie die angewendete Cilium-Envoy-Konfiguration anzeigen.

   ```
   kubectl get cec cilium-gateway-my-gateway -o yaml
   ```

   Mit dem folgenden Befehl können Sie den Envoy-Listener-Port für den `cilium-gateway-my-gateway`-Service abrufen. In diesem Beispiel lautet der gemeinsame Listener-Port `8111`.

   ```
   kubectl get cec cilium-gateway-my-gateway -o jsonpath={.spec.services[0].ports[0]}
   ```

1. Rufen Sie die IP-Adressen Ihrer Knoten in Ihrem Cluster ab.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Greifen Sie über die IP-Adressen Ihrer Knoten und den Listener-Port für die `cilium-gateway-my-gateway`-Ressource auf den Service zu. Im nachfolgenden Beispiel lautet die verwendete Knoten-IP-Adresse `10.80.146.32` und der Listener-Port `8111`. Ersetzen Sie diese durch die Werte für Ihre Umgebung.

   ```
   curl -s http://10.80.146.32:8111/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

#### Ingress
<a name="_ingress"></a>

Aufgrund eines vorgelagerten Cilium-Problems ([\$134028](https://github.com/cilium/cilium/issues/34028)) erfordert Cilium Ingress im Host-Netzwerkmodus die Verwendung von `loadbalancerMode: shared`, wodurch ein einzelner Service vom Typ ClusterIP für alle Ingress-Ressourcen im Cluster erstellt wird. Wenn Sie einen bevorzugten Port (unter 1023) für die Ingress-Ressource verwenden, finden Sie Anweisungen dazu in der [Cilium-Dokumentation](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#bind-to-privileged-port).

1. Erstellen Sie eine Datei mit dem Namen `cilium-ingress-host-network.yaml` und dem folgenden Inhalt.

   ```
   ingressController:
     enabled: true
     loadbalancerMode: shared
     # This is a workaround for the upstream Cilium issue
     service:
       externalTrafficPolicy: null
       type: ClusterIP
     hostNetwork:
       enabled: true
       # ensure the port does not conflict with other services on the node
       sharedListenerPort: 8111
       # uncomment to restrict nodes where Envoy proxies run on the host network
       # nodes:
       #   matchLabels:
       #     role: ingress
   ```

1. Wenden Sie die Cilium Ingress-Konfiguration des Host-Netzwerks auf Ihren Cluster an.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     -f cilium-ingress-host-network.yaml
   ```

   Falls Sie die Ingress-Ressource noch nicht erstellt haben, können Sie sie erstellen, indem Sie die folgende Ingress-Definition auf Ihren Cluster anwenden. Die nachfolgende Ingress-Definition verwendet die in [Cilium Ingress bereitstellen](#hybrid-nodes-ingress-cilium-ingress-deploy) beschriebene Istio-Bookinfo-Beispielanwendung.

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

   Mit dem folgenden Befehl können Sie die angewendete Cilium-Envoy-Konfiguration anzeigen.

   ```
   kubectl get cec -n kube-system cilium-ingress -o yaml
   ```

   Mit dem folgenden Befehl können Sie den Envoy-Listener-Port für den `cilium-ingress`-Service abrufen. In diesem Beispiel lautet der gemeinsame Listener-Port `8111`.

   ```
   kubectl get cec -n kube-system cilium-ingress -o jsonpath={.spec.services[0].ports[0]}
   ```

1. Rufen Sie die IP-Adressen Ihrer Knoten in Ihrem Cluster ab.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Greifen Sie über die IP-Adressen Ihrer Knoten und das `sharedListenerPort` für die `cilium-ingress`-Ressource auf den Service zu. Im nachfolgenden Beispiel lautet die verwendete Knoten-IP-Adresse `10.80.146.32` und der Listener-Port `8111`. Ersetzen Sie diese durch die Werte für Ihre Umgebung.

   ```
   curl -s http://10.80.146.32:8111/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

# Konfiguration von Services vom Typ LoadBalancer für Hybridknoten
<a name="hybrid-nodes-load-balancing"></a>

In diesem Thema wird beschrieben, wie Sie den Layer 4 (L4)-Lastenausgleich für Anwendungen konfigurieren, die auf Amazon EKS Hybrid Nodes ausgeführt werden. Kubernetes-Services vom Typ LoadBalancer werden verwendet, um Kubernetes-Anwendungen außerhalb des Clusters verfügbar zu machen. Services vom Typ LoadBalancer werden oft mit einer physischen Load-Balancer-Infrastruktur in der Cloud oder in einer On-Premises-Umgebung verwendet, um den Datenverkehr der Workload zu bedienen. Diese Load-Balancer-Infrastruktur wird in der Regel mit einem umgebungsspezifischen Controller bereitgestellt.

 AWS unterstützt AWS Network Load Balancer (NLB) und Cilium für Services vom Typ LoadBalancer, die in EKS-Hybridknoten ausgeführt werden. Die Entscheidung, ob NLB oder Cilium verwendet wird, hängt von der Quelle des Anwendungs-Datenverkehrs ab. Wenn der Anwendungsverkehr aus einer AWS-Region stammt, empfiehlt AWS die Verwendung von AWS NLB und dem AWS Load Balancer Controller. Wenn der Anwendungs-Datenverkehr aus der lokalen On-Premises- oder Edge-Umgebung stammt, empfiehlt AWS die Verwendung der integrierten Load-Balancing-Funktionen von Cilium, die mit oder ohne Load Balancer-Infrastruktur in Ihrer Umgebung verwendet werden können.

Informationen zum Load Balancing für den Anwendungs-Datenverkehr der Layer 7 (L7) finden Sie unter [Konfiguration von Kubernetes Ingress für Hybridknoten](hybrid-nodes-ingress.md). Allgemeine Informationen zum Load Balancing mit EKS finden Sie unter [Bewährte Methoden für den Load Balancing](https://docs.aws.amazon.com/eks/latest/best-practices/load-balancing.html).

## AWS Network Load Balancer
<a name="hybrid-nodes-service-lb-nlb"></a>

Sie können den [AWS Load Balancer Controller](aws-load-balancer-controller.md) und NLB mit dem Zieltyp `ip` für Workloads verwenden, die in Hybridknoten ausgeführt werden. Bei Verwendung des Zieltyps `ip` leitet NLB den Datenverkehr direkt an die Pods weiter und umgeht dabei den Netzwerkpfad der Service-Ebene. Damit NLB die Pod-IP-Ziele auf Hybridknoten erreichen kann, müssen Ihre lokalen Pod-CIDRs in Ihrem On-Premises-Netzwerk routingfähig sein. Darüber hinaus verwendet der AWS Load Balancer Controller Webhooks und erfordert eine direkte Kommunikation von der EKS-Steuerebene. Weitere Informationen finden Sie unter [Konfiguration von Webhooks für Hybridknoten](hybrid-nodes-webhooks.md).
+ Weitere Informationen zu den Anforderungen für die Subnetzkonfiguration finden Sie unter [Weiterleitung von TCP- und UDP-Datenverkehr mit Network Load Balancers](network-load-balancing.md). Weitere Informationen zum AWS Network Load Balancer und AWS Load Balancer Controller finden Sie unter [Installieren Sie den AWS Load Balancer Controller mit Helm](lbc-helm.md) und [Bewährte Methoden für Load Balancing](https://docs.aws.amazon.com/eks/latest/best-practices/load-balancing.html).
+ Informationen zu Konfigurationen, die auf Services vom Typ `LoadBalancer` mit AWS Network Load Balancer angewendet werden können, finden Sie unter [Konfigurationen für AWS Load Balancer Controller NLB](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/nlb/).

### Voraussetzungen
<a name="_prerequisites"></a>
+ Cilium wurde gemäß den Anweisungen in [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) installiert.
+ Cilium-BGP-Steuerebene gemäß den Anweisungen in [Konfiguration von Cilium BGP für Hybridknoten](hybrid-nodes-cilium-bgp.md) aktiviert. Wenn Sie BGP nicht verwenden möchten, müssen Sie eine alternative Methode verwenden, um die CIDRs Ihres On-Premises-Pods in Ihrem On-Premises-Netzwerk routingfähig zu machen. Weitere Informationen finden Sie unter [Routingfähige Fern-Pod-CIDRs](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs).
+ Helm ist in Ihrer Befehlszeilenumgebung installiert. Weitere Informationen finden Sie unter [Anweisungen zur Einrichtung von Helm](helm.md).
+ eksctl in Ihrer Befehlszeilenumgebung installiert ist. Lesen Sie die Anweisungen zur [Einrichtung von eksctl](install-kubectl.md#eksctl-install-update).

### Verfahren
<a name="_procedure"></a>

1. Laden Sie eine IAM-Richtlinie für den AWS-Lastenverteilungs-Controller herunter, die es ihm ermöglicht, in Ihrem Namen Aufrufe an AWS-APIs zu tätigen.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/docs/install/iam_policy.json
   ```

1. Erstellen Sie eine IAM-Richtlinie mit der im vorherigen Schritt heruntergeladenen Richtlinie.

   ```
   aws iam create-policy \
       --policy-name AWSLoadBalancerControllerIAMPolicy \
       --policy-document file://iam_policy.json
   ```

1. Ersetzen Sie die Werte für Cluster-Name (`CLUSTER_NAME`), AWS-Region (`AWS_REGION`) und AWS-Konto-ID (`AWS_ACCOUNT_ID`) durch Ihre Einstellungen und führen Sie den folgenden Befehl aus.

   ```
   eksctl create iamserviceaccount \
       --cluster=CLUSTER_NAME \
       --namespace=kube-system \
       --name=aws-load-balancer-controller \
       --attach-policy-arn=arn:aws:iam::AWS_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \
       --override-existing-serviceaccounts \
       --region AWS_REGION \
       --approve
   ```

1. Fügen Sie das Helm-Chart-Repository eks-charts hinzu. AWS verwaltet dieses Repository auf GitHub.

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

1. Aktualisieren Sie Ihr lokales Helm-Repository, um sicherzustellen, dass Sie über die aktuellsten Diagramme verfügen.

   ```
   helm repo update eks
   ```

1. Installieren Sie den AWS-Lastenverteilungs-Controller. Ersetzen Sie die Werte für Cluster-Name (`CLUSTER_NAME`), AWS-Region (`AWS_REGION`), VPC-ID (`VPC_ID`), und die Helm-Chart-Version des AWS Load Balancer Controller (`AWS_LBC_HELM_VERSION`) durch Ihre Einstellungen. Die neueste Version des Helm-Charts finden Sie, indem Sie `helm search repo eks/aws-load-balancer-controller --versions` ausführen. Wenn Sie einen Cluster im kombinierten Modus mit Hybridknoten und Knoten in der AWS Cloud betreiben, können Sie AWS Load Balancer Controller auf Cloud-Knoten ausführen, indem Sie die Anweisungen unter [AWS-Lastenverteilungs-Controller](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-lbc) befolgen.

   ```
   helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
     -n kube-system \
     --version AWS_LBC_HELM_VERSION \
     --set clusterName=CLUSTER_NAME \
     --set region=AWS_REGION \
     --set vpcId=VPC_ID \
     --set serviceAccount.create=false \
     --set serviceAccount.name=aws-load-balancer-controller
   ```

1. Überprüfen Sie, ob der AWS Load Balancer Controller erfolgreich installiert wurde.

   ```
   kubectl get -n kube-system deployment aws-load-balancer-controller
   ```

   ```
   NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
   aws-load-balancer-controller   2/2     2            2           84s
   ```

1. Definieren Sie eine Beispielanwendung in einer Datei mit dem Namen `tcp-sample-app.yaml`. Das folgende Beispiel verwendet eine einfache NGINX-Bereitstellung mit einem TCP-Port.

   ```
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: tcp-sample-app
     namespace: default
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
           - name: nginx
             image: public.ecr.aws/nginx/nginx:1.23
             ports:
               - name: tcp
                 containerPort: 80
   ```

1. Wenden Sie die Bereitstellung auf Ihren Cluster an.

   ```
   kubectl apply -f tcp-sample-app.yaml
   ```

1. Definieren Sie einen Service vom Typ LoadBalancer für die Bereitstellung in einer Datei mit dem Namen `tcp-sample-service.yaml`.

   ```
   apiVersion: v1
   kind: Service
   metadata:
     name: tcp-sample-service
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: external
       service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip
       service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
   spec:
     ports:
       - port: 80
         targetPort: 80
         protocol: TCP
     type: LoadBalancer
     selector:
       app: nginx
   ```

1. Wenden Sie die Servicekonfiguration auf Ihren Cluster an.

   ```
   kubectl apply -f tcp-sample-service.yaml
   ```

1. Die Bereitstellung des NLB für den Service kann einige Minuten dauern. Sobald der NLB bereitgestellt ist, wird dem Service eine Adresse zugewiesen, die dem DNS-Namen der NLB-Bereitstellung entspricht.

   ```
   kubectl get svc tcp-sample-service
   ```

   ```
   NAME                 TYPE           CLUSTER-IP       EXTERNAL-IP                                                                    PORT(S)        AGE
   tcp-sample-service   LoadBalancer   172.16.115.212   k8s-default-tcpsampl-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.<region>.amazonaws.com   80:30396/TCP   8s
   ```

1. Greifen Sie über die Adresse des NLB auf den Service zu.

   ```
   curl k8s-default-tcpsampl-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.<region>.amazonaws.com
   ```

   Unten sehen Sie eine Beispielausgabe.

   ```
   <!DOCTYPE html>
   <html>
   <head>
   <title>Welcome to nginx!</title>
   [...]
   ```

1. Bereinigen Sie die -Ressourcen, die Sie erstellt haben.

   ```
   kubectl delete -f tcp-sample-service.yaml
   kubectl delete -f tcp-sample-app.yaml
   ```

## Cilium-Load-Balancing im Cluster
<a name="hybrid-nodes-service-lb-cilium"></a>

Cilium kann als Cluster-interner Load Balancer für Workloads verwendet werden, die in EKS-Hybridknoten ausgeführt werden. Dies kann für Umgebungen nützlich sein, die nicht über eine Load-Balancer-Infrastruktur verfügen. Die Load-Balancing-Funktionen von Cilium basieren auf einer Kombination von Cilium-Features, darunter kube-proxy-Ersatz, Load Balancer IP Address Management (IPAM) und BGP-Steuerebene. Die Aufgaben dieser Feature werden nachfolgend näher erläutert:
+  **Cilium-kube-proxy-Ersatz**: Verarbeitet die Weiterleitung des Service-Datenverkehrs an Backend-Pods.
+  **Cilium Load Balancer IPAM**: Verwaltet IP-Adressen, die Services vom Typ `LoadBalancer` zugewiesen werden können.
+  **Cilium-BGP-Steuerebene**: Gibt vom Load Balancer IPAM dem On-Premises-Netzwerk zugewiesene IP-Adressen bekannt.

Wenn Sie den kube-proxy-Ersatz von Cilium nicht verwenden, können Sie dennoch Cilium Load Balancer IPAM und BGP-Steuerebene nutzen, um IP-Adressen für Services vom Typ LoadBalancer zuzuweisen und zuzuordnen. Wenn Sie den kube-proxy-Ersatz von Cilium nicht verwenden, wird der Lastenausgleich für Services zu Backend-Pods in EKS standardmäßig durch kube-proxy- und iptables-Regeln übernommen.

### Voraussetzungen
<a name="_prerequisites_2"></a>
+ Cilium wurde gemäß den Anweisungen in [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) mit oder ohne aktiviertem kube-proxy-Ersatz installiert. Der kube-proxy-Ersatz von Cilium erfordert ein Betriebssystem mit einem Linux-Kernel mindestens der aktuellen Version v4.19.57, v5.1.16 oder v5.2.0. Alle aktuellen Versionen der für die Verwendung mit Hybridknoten unterstützten Betriebssysteme erfüllen dieses Kriterium, mit Ausnahme von Red Hat Enterprise Linux (RHEL) 8.x.
+ Cilium-BGP-Steuerebene gemäß den Anweisungen in [Konfiguration von Cilium BGP für Hybridknoten](hybrid-nodes-cilium-bgp.md) aktiviert. Wenn Sie BGP nicht verwenden möchten, müssen Sie eine alternative Methode verwenden, um die CIDRs Ihres On-Premises-Pods in Ihrem On-Premises-Netzwerk routingfähig zu machen. Weitere Informationen finden Sie unter [Routingfähige Fern-Pod-CIDRs](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs).
+ Helm ist in Ihrer Befehlszeilenumgebung installiert. Weitere Informationen finden Sie unter [Anweisungen zur Einrichtung von Helm](helm.md).

### Verfahren
<a name="_procedure_2"></a>

1. Erstellen Sie eine Datei mit dem Namen `cilium-lbip-pool-loadbalancer.yaml` mit einer `CiliumLoadBalancerIPPool`-Ressource, um den Load Balancer-IP-Adressbereich für Ihre Service vom Typ LoadBalancer zu konfigurieren.
   + Ersetzen Sie `LB_IP_CIDR` durch den IP-Adressbereich, der für die IP-Adressen des Load Balancers verwendet werden soll. Um eine einzelne IP-Adresse auszuwählen, verwenden Sie ein `/32` CIDR. Weitere Informationen finden Sie unter [LoadBalancer-IP-Adressverwaltung](https://docs.cilium.io/en/stable/network/lb-ipam/) in der Cilium-Dokumentation.
   + Das `serviceSelector`-Feld wird so konfiguriert, dass es mit dem Namen des Service übereinstimmt, den Sie in einem späteren Schritt erstellen. Mit dieser Konfiguration werden IPs aus diesem Pool nur Services mit dem Namen `tcp-sample-service` zugewiesen.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumLoadBalancerIPPool
     metadata:
       name: tcp-service-pool
     spec:
       blocks:
       - cidr: "LB_IP_CIDR"
       serviceSelector:
         matchLabels:
           io.kubernetes.service.name: tcp-sample-service
     ```

1. Wenden Sie die `CiliumLoadBalancerIPPool`-Ressource auf Ihren Cluster an.

   ```
   kubectl apply -f cilium-lbip-pool-loadbalancer.yaml
   ```

1. Stellen Sie sicher, dass im Pool mindestens eine IP-Adresse verfügbar ist.

   ```
   kubectl get ciliumloadbalancerippools.cilium.io
   ```

   ```
   NAME               DISABLED   CONFLICTING   IPS AVAILABLE   AGE
   tcp-service-pool   false      False         1               24m
   ```

1. Erstellen Sie eine Datei mit dem Namen `cilium-bgp-advertisement-loadbalancer.yaml` mit einer `CiliumBGPAdvertisement`-Ressource, um die IP-Adresse des Load Balancers für den Service bekannt zu geben, den Sie im nächsten Schritt erstellen. Wenn Sie Cilium BGP nicht verwenden, können Sie diesen Schritt überspringen. Die für Ihren Service verwendete IP-Adresse des Load Balancers muss in Ihrem On-Premises-Netzwerk routingfähig sein, damit Sie den Service im letzten Schritt abfragen können.
   + Das `advertisementType`-Feld ist auf `Service` gesetzt und `service.addresses` ist auf `LoadBalancerIP` gesetzt, um den `LoadBalancerIP` für Services vom Typ `LoadBalancer` bekannt zu geben.
   + Das `selector`-Feld wird so konfiguriert, dass es mit dem Namen des Service übereinstimmt, den Sie in einem späteren Schritt erstellen. Mit dieser Konfiguration werden nur `LoadBalancerIP` für Services mit dem Namen `tcp-sample-service` bekannt gegeben.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPAdvertisement
     metadata:
       name: bgp-advertisement-tcp-service
       labels:
         advertise: bgp
     spec:
       advertisements:
         - advertisementType: "Service"
           service:
             addresses:
               - LoadBalancerIP
           selector:
             matchLabels:
               io.kubernetes.service.name: tcp-sample-service
     ```

1. Wenden Sie die `CiliumBGPAdvertisement`-Ressource auf Ihren Cluster an. Wenn Sie Cilium BGP nicht verwenden, können Sie diesen Schritt überspringen.

   ```
   kubectl apply -f cilium-bgp-advertisement-loadbalancer.yaml
   ```

1. Definieren Sie eine Beispielanwendung in einer Datei mit dem Namen `tcp-sample-app.yaml`. Das folgende Beispiel verwendet eine einfache NGINX-Bereitstellung mit einem TCP-Port.

   ```
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: tcp-sample-app
     namespace: default
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
           - name: nginx
             image: public.ecr.aws/nginx/nginx:1.23
             ports:
               - name: tcp
                 containerPort: 80
   ```

1. Wenden Sie die Bereitstellung auf Ihren Cluster an.

   ```
   kubectl apply -f tcp-sample-app.yaml
   ```

1. Definieren Sie einen Service vom Typ LoadBalancer für die Bereitstellung in einer Datei mit dem Namen `tcp-sample-service.yaml`.
   + Mit der `lbipam.cilium.io/ips`-Annotation zum Serviceobjekt können Sie eine bestimmte IP-Adresse aus dem IP-Pool des Load Balancers anfordern. Sie können diese Annotation entfernen, wenn Sie keine bestimmte IP-Adresse für den Service anfordern möchten.
   + Das Spezifikationsfeld `loadBalancerClass` ist erforderlich, um zu verhindern, dass der alte AWS-Cloud-Anbieter einen Classic Load Balancer für den Service erstellt. Im nachfolgenden Beispiel ist dies auf `io.cilium/bgp-control-plane` konfiguriert, um die BGP-Steuerebene von Cilium als Load-Balancer-Klasse zu verwenden. Dieses Feld kann alternativ auf `io.cilium/l2-announcer` konfiguriert werden, um das [L2-Ankündigungsfeature](https://docs.cilium.io/en/latest/network/l2-announcements/) von Cilium zu verwenden (derzeit in der Betaphase und nicht offiziell von AWS unterstützt).

     ```
     apiVersion: v1
     kind: Service
     metadata:
       name: tcp-sample-service
       namespace: default
       annotations:
         lbipam.cilium.io/ips: "LB_IP_ADDRESS"
     spec:
       loadBalancerClass: io.cilium/bgp-control-plane
       ports:
         - port: 80
           targetPort: 80
           protocol: TCP
       type: LoadBalancer
       selector:
         app: nginx
     ```

1. Wenden Sie den Service auf Ihren Cluster an. Der Service wird mit einer externen IP-Adresse erstellt, die Sie für den Zugriff auf die Anwendung verwenden können.

   ```
   kubectl apply -f tcp-sample-service.yaml
   ```

1. Überprüfen Sie, ob der Service erfolgreich erstellt wurde und ihm eine IP aus dem im vorherigen Schritt erstellten `CiliumLoadBalancerIPPool` zugewiesen wurde.

   ```
   kubectl get svc tcp-sample-service
   ```

   ```
   NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
   tcp-sample-service   LoadBalancer   172.16.117.76   LB_IP_ADDRESS   80:31129/TCP   14m
   ```

1. Wenn Sie Cilium im kube-proxy-Ersatzmodus verwenden, können Sie mit dem folgenden Befehl bestätigen, dass Cilium das Load Balancing für den Service übernimmt. In der folgenden Ausgabe sind die `10.86.2.x`-Adressen die Pod-IP-Adressen der Backend-Pods für den Service.

   ```
   kubectl -n kube-system exec ds/cilium -- cilium-dbg service list
   ```

   ```
   ID   Frontend               Service Type   Backend
   ...
   41   LB_IP_ADDRESS:80/TCP   LoadBalancer   1 => 10.86.2.76:80/TCP (active)
                                              2 => 10.86.2.130:80/TCP (active)
                                              3 => 10.86.2.141:80/TCP (active)
   ```

1. Stellen Sie sicher, dass Cilium die IP-Adresse über BGP an das On-Premises-Netzwerk bekannt gibt. Im folgenden Beispiel gibt es fünf Hybridknoten, die jeweils die `LB_IP_ADDRESS` für den `tcp-sample-service`-Service im On-Premises-Netzwerk bekannt geben.

   ```
   Node                   VRouter      Prefix             NextHop   Age     Attrs
   mi-026d6a261e355fba7   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-082f73826a163626e   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-09183e8a3d755abf6   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0d78d815980ed202d   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0daa253999fe92daa   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   ```

1. Greifen Sie über die zugewiesene IP-Adresse des Load Balancers auf den Service zu.

   ```
   curl LB_IP_ADDRESS
   ```

   Unten sehen Sie eine Beispielausgabe.

   ```
   <!DOCTYPE html>
   <html>
   <head>
   <title>Welcome to nginx!</title>
   [...]
   ```

1. Bereinigen Sie die -Ressourcen, die Sie erstellt haben.

   ```
   kubectl delete -f tcp-sample-service.yaml
   kubectl delete -f tcp-sample-app.yaml
   kubectl delete -f cilium-lb-ip-pool.yaml
   kubectl delete -f cilium-bgp-advertisement.yaml
   ```

# Konfiguration von Kubernetes-Netzwerkrichtlinien für Hybridknoten
<a name="hybrid-nodes-network-policies"></a>

 AWS unterstützt Kubernetes-Netzwerkrichtlinien (Layer 3/Layer 4) für Pod-Ein- und -Ausgangs-Datenverkehr bei Verwendung von Cilium als CNI mit EKS-Hybridknoten. Wenn Sie EKS-Cluster mit Knoten in der AWS Cloud ausführen, unterstützt AWS das [Amazon VPC CNI für Kubernetes-Netzwerkrichtlinien](cni-network-policy.md).

Dieses Thema beschreibt die Konfiguration von Cilium- und Kubernetes-Netzwerkrichtlinien mit EKS-Hybridknoten. Ausführliche Informationen zu Kubernetes-Netzwerkrichtlinien finden Sie unter [Kubernetes-Netzwerkrichtlinien](https://kubernetes.io/docs/concepts/services-networking/network-policies/) in der Kubernetes-Dokumentation.

## Netzwerkrichtlinien konfigurieren
<a name="hybrid-nodes-configure-network-policies"></a>

### Überlegungen
<a name="_considerations"></a>
+  AWS unterstützt die vorgelagerten Kubernetes-Netzwerkrichtlinien und -Spezifikationen für Pod-Ingress und -Egress. AWS unterstützt derzeit `CiliumNetworkPolicy` oder `CiliumClusterwideNetworkPolicy` nicht.
+ Der `policyEnforcementMode`-Helm-Wert kann verwendet werden, um das Standardverhalten der Cilium-Richtliniendurchsetzung zu steuern. Das Standardverhalten lässt den gesamten ausgehenden und eingehenden Datenverkehr zu. Wenn ein Endpunkt durch eine Netzwerkrichtlinie ausgewählt wird, wechselt er in einen Standard-Verweigerungszustand, in dem nur ausdrücklich zugelassener Datenverkehr zugelassen wird. Weitere Informationen zum [Standard-Richtlinienmodus](https://docs.cilium.io/en/stable/security/policy/intro/#policy-mode-default) und zu den [Modi zur Durchsetzung von Richtlinien](https://docs.cilium.io/en/stable/security/policy/intro/#policy-enforcement-modes) finden Sie in der Cilium-Dokumentation.
+ Wenn Sie `policyEnforcementMode` für eine vorhandene Cilium-Installation ändern, müssen Sie den Cilium Agent DaemonSet neu starten, um den neuen Modus zur Durchsetzung von Richtlinien anzuwenden.
+ Verwenden Sie `namespaceSelector` und `podSelector`, um Datenverkehr zu/von Namespaces und Pods mit übereinstimmenden Labels zuzulassen oder zu verweigern. Der `namespaceSelector` und `podSelector` kann mit `matchLabels` oder `matchExpressions` verwendet werden, um Namespaces und Pods basierend auf ihren Labels auszuwählen.
+ Verwenden Sie `ingress.ports` und `egress.ports`, um Datenverkehr zu/von Ports und Protokollen zuzulassen oder zu verweigern.
+ Das `ipBlock`-Feld kann nicht verwendet werden, um Datenverkehr zu/von Pod-IP-Adressen selektiv zuzulassen oder zu verweigern ([\$19209](https://github.com/cilium/cilium/issues/9209)). Die Verwendung von `ipBlock`-Selektoren für Knoten-IPs ist ein Beta-Feature in Cilium und wird von AWS nicht unterstützt.
+ Informationen zu den verfügbaren Feldern für Kubernetes-Netzwerkrichtlinien finden Sie in der [NetworkPolicy-Ressource](https://kubernetes.io/docs/concepts/services-networking/network-policies/#networkpolicy-resource) in der Kubernetes-Dokumentation.

### Voraussetzungen
<a name="_prerequisites"></a>
+ Cilium wurde gemäß den Anweisungen in [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md) installiert.
+ Helm ist in Ihrer Befehlszeilenumgebung installiert. Weitere Informationen finden Sie unter [Anweisungen zur Einrichtung von Helm](helm.md).

### Verfahren
<a name="_procedure"></a>

Mit dem folgenden Verfahren werden Netzwerkrichtlinien für eine Beispiel-Microservices-Anwendung eingerichtet, sodass Komponenten nur mit anderen Komponenten kommunizieren können, die für die Funktion der Anwendung erforderlich sind. Das Verfahren verwendet die [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/)-Beispielanwendung für Microservices.

Die Bookinfo-Anwendung besteht aus vier separaten Microservices mit den folgenden Beziehungen:
+  **productpage**. Der Microservice „productpage“ ruft die Details auf und überprüft die Microservices, um die Seite zu füllen.
+  **details**. Der Microservice „details“ enthält Buchinformationen.
+  **reviews**. Der Microservice „reviews“ enthält Buchbewertungen. Er ruft außerdem den Microservice „ratings“ auf.
+  **ratings**. Der Microservice „ratings“ enthält Informationen zur Buchbewertung, die einer Buchrezension beigefügt sind.

  1. Erstellen Sie die Beispielanwendung.

     ```
     kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
     ```

  1. Stellen Sie sicher, dass die Anwendung erfolgreich ausgeführt wird, und notieren Sie sich die Pod-IP-Adresse für den Mikroservice „productpage“. Diese Pod-IP-Adresse werden Sie in den folgenden Schritten verwenden, um jeden Microservice abzufragen.

     ```
     kubectl get pods -o wide
     ```

     ```
     NAME                              READY   STATUS    RESTARTS   AGE   IP            NODE
     details-v1-766844796b-9wff2       1/1     Running   0          7s    10.86.3.7     mi-0daa253999fe92daa
     productpage-v1-54bb874995-lwfgg   1/1     Running   0          7s    10.86.2.193   mi-082f73826a163626e
     ratings-v1-5dc79b6bcd-59njm       1/1     Running   0          7s    10.86.2.232   mi-082f73826a163626e
     reviews-v1-598b896c9d-p2289       1/1     Running   0          7s    10.86.2.47    mi-026d6a261e355fba7
     reviews-v2-556d6457d-djktc        1/1     Running   0          7s    10.86.3.58    mi-0daa253999fe92daa
     reviews-v3-564544b4d6-g8hh4       1/1     Running   0          7s    10.86.2.69    mi-09183e8a3d755abf6
     ```

  1. Erstellen Sie einen Pod, der durchgehend zum Testen der Netzwerkrichtlinien verwendet wird. Beachten Sie, dass der Pod im `default`-Namespace mit dem Label `access: true` erstellt wird.

     ```
     kubectl run curl-pod --image=curlimages/curl -i --tty --labels=access=true --namespace=default --overrides='{"spec": { "nodeSelector": {"eks.amazonaws.com/compute-type": "hybrid"}}}' -- /bin/sh
     ```

  1. Testen Sie den Zugriff auf den Microservice „productpage“. Im nachfolgenden Beispiel verwenden wir die Pod-IP-Adresse des productpage-Pods (`10.86.2.193`), um den Microservice abzufragen. Ersetzen Sie dies durch die Pod-IP-Adresse des productpage-Pods in Ihrer Umgebung.

     ```
     curl -s http://10.86.2.193:9080/productpage | grep -o "<title>.*</title>"
     ```

     ```
     <title>Simple Bookstore App</title>
     ```

  1. Sie können den Test-Curl-Pod durch Eingabe von `exit` verlassen und sich erneut mit dem Pod verbinden, indem Sie den folgenden Befehl ausführen.

     ```
     kubectl attach curl-pod -c curl-pod -i -t
     ```

  1. Um die Auswirkungen der Netzwerkrichtlinien in den folgenden Schritten zu demonstrieren, erstellen wir zunächst eine Netzwerkrichtlinie, die den gesamten Datenverkehr für die BookInfo-Microservices verweigert. Erstellen Sie eine Datei mit dem Namen `network-policy-deny-bookinfo.yaml`, welche die Netzwerk-Verweigerungsrichtlinie definiert.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: deny-bookinfo
       namespace: default
     spec:
       podSelector:
         matchExpressions:
         - key: app
           operator: In
           values: ["productpage", "details", "reviews", "ratings"]
       policyTypes:
       - Ingress
       - Egress
     ```

  1. Wenden Sie die Netzwerk-Verweigerungsrichtlinie auf Ihren Cluster an.

     ```
     kubectl apply -f network-policy-default-deny-bookinfo.yaml
     ```

  1. Testen Sie den Zugriff auf die Anwendung BookInfo. Im nachfolgenden Beispiel verwenden wir die Pod-IP-Adresse des productpage-Pods (`10.86.2.193`), um den Microservice abzufragen. Ersetzen Sie dies durch die Pod-IP-Adresse des productpage-Pods in Ihrer Umgebung.

     ```
     curl http://10.86.2.193:9080/productpage --max-time 10
     ```

     ```
     curl: (28) Connection timed out after 10001 milliseconds
     ```

  1. Erstellen Sie eine Datei mit dem Namen `network-policy-productpage.yaml`, welche die Netzwerkrichtlinie der Produktseite definiert. Die Richtlinie enthält die folgenden Regeln:
     + erlaubt eingehenden Datenverkehr von Pods mit dem Label `access: true` (der im vorherigen Schritt erstellte Curl-Pod).
     + erlaubt ausgehenden TCP-Datenverkehr auf Port `9080` für die Microservices „details“, „reviews“ und „ratings“.
     + erlaubt ausgehenden TCP/UDP-Datenverkehr auf Port `53` für CoreDNS, das im `kube-system`-Namespace ausgeführt wird.

       ```
       apiVersion: networking.k8s.io/v1
       kind: NetworkPolicy
       metadata:
         name: productpage-policy
         namespace: default
       spec:
         podSelector:
           matchLabels:
             app: productpage
         policyTypes:
         - Ingress
         - Egress
         ingress:
         - from:
           - podSelector:
               matchLabels:
                 access: "true"
         egress:
         - to:
           - podSelector:
               matchExpressions:
               - key: app
                 operator: In
                 values: ["details", "reviews", "ratings"]
           ports:
           - port: 9080
             protocol: TCP
         - to:
           - namespaceSelector:
               matchLabels:
                 kubernetes.io/metadata.name: kube-system
             podSelector:
               matchLabels:
                 k8s-app: kube-dns
           ports:
           - port: 53
             protocol: UDP
           - port: 53
             protocol: TCP
       ```

  1. Wenden Sie die Netzwerkrichtlinie „productpage“ auf Ihren Cluster an.

     ```
     kubectl apply -f network-policy-productpage.yaml
     ```

  1. Stellen Sie eine Verbindung zum Curl-Pod her und testen Sie den Zugriff auf die Bookinfo-Anwendung. Der Zugriff auf den Microservice „productpage“ ist nun erlaubt. Die anderen Microservices werden jedoch weiterhin verweigert, da sie weiterhin der Richtlinie „Netzwerk verweigern“ unterliegen. In den folgenden Beispielen verwenden wir die Pod-IP-Adresse des Productpage-Pods (`10.86.2.193`), um den Microservice abzufragen. Ersetzen Sie dies durch die Pod-IP-Adresse des productpage-Pods in Ihrer Umgebung.

     ```
     kubectl attach curl-pod -c curl-pod -i -t
     ```

     ```
     curl -s http://10.86.2.193:9080/productpage | grep -o "<title>.*</title>"
     <title>Simple Bookstore App</title>
     ```

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1
     {"error": "Sorry, product details are currently unavailable for this book."}
     ```

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/reviews
     {"error": "Sorry, product reviews are currently unavailable for this book."}
     ```

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/ratings
     {"error": "Sorry, product ratings are currently unavailable for this book."}
     ```

  1. Erstellen Sie eine Datei mit dem Namen `network-policy-details.yaml`, welche die detaillierte Netzwerkrichtlinie definiert. Die Richtlinie lässt nur eingehenden Datenverkehr vom Microservice „productpage“ zu.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: details-policy
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: details
       policyTypes:
       - Ingress
       ingress:
       - from:
         - podSelector:
             matchLabels:
               app: productpage
     ```

  1. Erstellen Sie eine Datei mit dem Namen `network-policy-reviews.yaml`, welche die Richtlinie für das Bewertungsnetzwerk definiert. Die Richtlinie lässt nur eingehenden Datenverkehr vom Microservice „productpage“ zu und nur ausgehenden Datenverkehr zum Microservice „ratings“ und zu CoreDNS.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: reviews-policy
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: reviews
       policyTypes:
       - Ingress
       - Egress
       ingress:
       - from:
         - podSelector:
             matchLabels:
               app: productpage
       egress:
       - to:
         - podSelector:
             matchLabels:
               app: ratings
       - to:
         - namespaceSelector:
             matchLabels:
               kubernetes.io/metadata.name: kube-system
           podSelector:
             matchLabels:
               k8s-app: kube-dns
         ports:
         - port: 53
           protocol: UDP
         - port: 53
           protocol: TCP
     ```

  1. Erstellen Sie eine Datei mit dem Namen `network-policy-ratings.yaml`, welche die Richtlinie für das Bewertungsnetzwerk definiert. Die Richtlinie lässt nur eingehenden Datenverkehr von der Produktseite und den Microservices „reviews“ zu.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: ratings-policy
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: ratings
       policyTypes:
       - Ingress
       ingress:
       - from:
         - podSelector:
             matchExpressions:
             - key: app
               operator: In
               values: ["productpage", "reviews"]
     ```

  1. Wenden Sie die Netzwerkrichtlinien für Details, Rezensionen und Bewertungen auf Ihren Cluster an.

     ```
     kubectl apply -f network-policy-details.yaml
     kubectl apply -f network-policy-reviews.yaml
     kubectl apply -f network-policy-ratings.yaml
     ```

  1. Stellen Sie eine Verbindung zum Curl-Pod her und testen Sie den Zugriff auf die Bookinfo-Anwendung. In den folgenden Beispielen verwenden wir die Pod-IP-Adresse des Productpage-Pods (`10.86.2.193`), um den Microservice abzufragen. Ersetzen Sie dies durch die Pod-IP-Adresse des productpage-Pods in Ihrer Umgebung.

     ```
     kubectl attach curl-pod -c curl-pod -i -t
     ```

     Testen Sie den Microservice „details“.

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1
     ```

     ```
     {"id": 1, "author": "William Shakespeare", "year": 1595, "type": "paperback", "pages": 200, "publisher": "PublisherA", "language": "English", "ISBN-10": "1234567890", "ISBN-13": "123-1234567890"}
     ```

     Testen Sie den Microservice „reviews“.

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/reviews
     ```

     ```
     {"id": "1", "podname": "reviews-v1-598b896c9d-p2289", "clustername": "null", "reviews": [{"reviewer": "Reviewer1", "text": "An extremely entertaining play by Shakespeare. The slapstick humour is refreshing!"}, {"reviewer": "Reviewer2", "text": "Absolutely fun and entertaining. The play lacks thematic depth when compared to other plays by Shakespeare."}]}
     ```

     Testen Sie den Microservice „ratings“.

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/ratings
     ```

     ```
     {"id": 1, "ratings": {"Reviewer1": 5, "Reviewer2": 4}}
     ```

  1. Bereinigen Sie die Ressourcen, die Sie in diesem Verfahren erstellt haben.

     ```
     kubectl delete -f network-policy-deny-bookinfo.yaml
     kubectl delete -f network-policy-productpage.yaml
     kubectl delete -f network-policy-details.yaml
     kubectl delete -f network-policy-reviews.yaml
     kubectl delete -f network-policy-ratings.yaml
     kubectl delete -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
     kubectl delete pod curl-pod
     ```

# Konzepte für Hybridknoten
<a name="hybrid-nodes-concepts"></a>

Mit *Amazon EKS Hybrid Nodes* verbinden Sie physische oder virtuelle Rechner, die in On-Premises- oder Edge-Umgebungen ausgeführt werden, mit Amazon-EKS-Clustern, die in der AWS Cloud ausgeführt werden. Dieser Ansatz bietet zahlreiche Vorteile, führt jedoch auch neue Netzwerkkonzepte und -architekturen für diejenigen ein, die mit der Ausführung von Kubernetes-Clustern in einer einzigen Netzwerkumgebung vertraut sind.

Die folgenden Abschnitte befassen sich eingehend mit den Kubernetes- und Netzwerkkonzepten für EKS-Hybridknoten und erläutern detailliert, wie der Datenverkehr durch die Hybridarchitektur verläuft. Für diese Abschnitte sind grundlegende Kenntnisse über Kubernetes-Netzwerke erforderlich, beispielsweise über die Konzepte von Pods, Knoten, Services, der Kubernetes-Steuerebene, kubelet und kube-proxy.

Wir empfehlen, diese Seiten der Reihe nach zu lesen, beginnend mit [Netzwerkkonzepte für Hybridknoten](hybrid-nodes-concepts-networking.md), dann [Kubernetes-Konzepte für Hybridknoten](hybrid-nodes-concepts-kubernetes.md) und schließlich mit [Abläufe des Netzwerk-Datenverkehrs für Hybridknoten](hybrid-nodes-concepts-traffic-flows.md).

**Topics**
+ [

# Netzwerkkonzepte für Hybridknoten
](hybrid-nodes-concepts-networking.md)
+ [

# Kubernetes-Konzepte für Hybridknoten
](hybrid-nodes-concepts-kubernetes.md)
+ [

# Abläufe des Netzwerk-Datenverkehrs für Hybridknoten
](hybrid-nodes-concepts-traffic-flows.md)

# Netzwerkkonzepte für Hybridknoten
<a name="hybrid-nodes-concepts-networking"></a>

In diesem Abschnitt werden die wichtigsten Netzwerkkonzepte und die Einschränkungen erläutert, die Sie bei der Gestaltung Ihrer Netzwerk-Topologie für EKS-Hybridknoten berücksichtigen müssen.

## Netzwerkkonzepte für EKS-Hybridknoten
<a name="_networking_concepts_for_eks_hybrid_nodes"></a>

![\[Übersichtliches Netzwerkdiagramm für Hybridknoten\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-nodes-highlevel-network.png)


 **VPC als Netzwerk-Bereich** 

Der gesamte Datenverkehr, der die Cloud-Grenze überschreitet, wird über Ihre VPC geleitet. Dazu gehört der Verkehr zwischen der EKS-Steuerungsebene oder den Pods, die in AWS Hybridknoten oder Pods laufen, die auf ihnen ausgeführt werden. Sie können sich die VPC Ihres Clusters als Netzwerk-Bereich zwischen Ihren Hybridknoten und dem Rest des Clusters vorstellen. Diese Architektur ermöglicht Ihnen die vollständige Kontrolle über den Datenverkehr und dessen Weiterleitung, überträgt Ihnen jedoch auch die Verantwortung für die korrekte Konfiguration von Routen, Sicherheitsgruppen und Firewalls für die VPC.

 **EKS-Steuerebene zur VPC** 

Die EKS-Kontrollebene verbindet **Elastic Network Interfaces (ENIs)** mit Ihrer VPC. Diese ENIs verarbeiten den Verkehr zum und vom EKS-API-Server. Sie steuern die Platzierung der EKS-Steuerungsebene ENIs bei der Konfiguration Ihres Clusters, da EKS eine Verbindung ENIs zu den Subnetzen herstellt, die Sie bei der Clustererstellung übergeben.

EKS ordnet Sicherheitsgruppen den Gruppen zu ENIs , die EKS Ihren Subnetzen anhängt. Diese Sicherheitsgruppen ermöglichen den Verkehr zur und von der EKS-Steuerebene über die. ENIs Dies ist wichtig für EKS-Hybridknoten, da Sie den Datenverkehr von den Hybridknoten und den darauf laufenden Pods zur EKS-Steuerebene zulassen müssen ENIs.

 **Fern-Knoten-Netzwerke** 

Die Remote-Knoten-Netzwerke, insbesondere der Remote-Knoten CIDRs, sind die Bereiche, die den Maschinen IPs zugewiesen sind, die Sie als Hybridknoten verwenden. Wenn Sie Hybridknoten bereitstellen, befinden sich diese in Ihrem On-Premises-Rechenzentrum oder Edge-Standort, der sich in einer anderen Netzwerk-Domain als die EKS-Steuerebene und die VPC befindet. Jeder Hybridknoten verfügt über eine oder mehrere IP-Adressen aus einem Fern-Knoten-CIDR, der sich von den Subnetzen in Ihrer VPC unterscheidet.

Sie konfigurieren den EKS-Cluster mit diesen Remote-Knoten, CIDRs sodass EKS den gesamten für die Hybridknoten bestimmten Datenverkehr IPs über Ihre Cluster-VPC weiterleiten kann, z. B. Anfragen an die Kubelet-API. Die Verbindungen zur `kubelet` API werden in den Befehlen`kubectl attach`,, `kubectl cp``kubectl exec`, `kubectl logs` und verwendet. `kubectl port-forward`

 **Fern-Pod-Netzwerke** 

Die Remote-Pod-Netzwerke sind die Bereiche, die den Pods IPs zugewiesen wurden, die auf den Hybridknoten ausgeführt werden. In der Regel konfigurieren Sie Ihr CNI mit diesen Bereichen, und die IP-Adressverwaltungsfunktion (IPAM) des CNI übernimmt die Zuweisung eines Teils dieser Segmente zu jedem Hybridknoten. Wenn Sie einen Pod erstellen, weist das CNI dem Pod eine IP-Adresse aus dem Segment zu, das dem Knoten zugewiesen wurde, auf dem der Pod geplant wurde.

Sie konfigurieren den EKS-Cluster mit diesen Remote-Pods, CIDRs sodass die EKS-Steuerebene weiß, dass sie den gesamten Datenverkehr, der für die Pods bestimmt ist, die auf den Hybridknoten ausgeführt werden, über die VPC Ihres Clusters weiterleitet, z. B. die Kommunikation mit Webhooks.

![\[Fern-Pod-Netzwerke\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-nodes-remote-pod-cidrs.png)


 **On-premises zur VPC** 

Das On-Premises-Netzwerk, das Sie für Hybridknoten verwenden, muss an die VPC weiterleiten, die Sie für Ihren EKS-Cluster verwenden. Es stehen mehrere [Network-to-Amazon VPC-Konnektivitätsoptionen zur Verfügung, um Ihr lokales Netzwerk mit einer VPC](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) zu verbinden. Sie können auch Ihre eigene VPN-Lösung verwenden.

Es ist wichtig, dass Sie das Routing auf der AWS Cloud-Seite in der VPC und in Ihrem lokalen Netzwerk korrekt konfigurieren, sodass beide Netzwerke den richtigen Datenverkehr über die Verbindung für die beiden Netzwerke weiterleiten.

In der VPC muss der gesamte Datenverkehr, der an die Fern-Knoten- und Fern-Pod-Netzwerke geht, über die Verbindung zu Ihrem On-Premises-Netzwerk (als „Gateway“ bezeichnet) weitergeleitet werden. Wenn einige Ihrer Subnetze unterschiedliche Routen-Tabellen aufweisen, müssen Sie jede Routen-Tabelle mit den Routen für Ihre Hybridknoten und die darauf ausgeführten Pods konfigurieren. Dies gilt für die Subnetze, an die die EKS-Steuerebene ENIs angeschlossen ist, und für Subnetze, die EC2 Knoten oder Pods enthalten, die mit Hybridknoten kommunizieren müssen.

In Ihrem lokalen Netzwerk müssen Sie Ihr Netzwerk so konfigurieren, dass der Datenverkehr zur und von der VPC Ihres EKS-Clusters und den anderen für Hybridknoten erforderlichen AWS Diensten zugelassen wird. Der Datenverkehr für den EKS-Cluster durchläuft das Gateway in beide Richtungen.

## Netzwerkbeschränkungen
<a name="_networking_constraints"></a>

 **Vollständig weitergeleitetes Netzwerk** 

Die wichtigste Einschränkung besteht darin, dass die EKS-Steuerebene und alle Knoten, Cloud- oder Hybridknoten, ein **vollständig weitergeleitetes** Netzwerk bilden müssen. Dies bedeutet, dass alle Knoten in der Lage sein müssen, sich gegenseitig auf Layer 3 über die IP-Adresse zu erreichen.

Die EKS-Steuerebene und die Cloud-Knoten sind bereits voneinander erreichbar, da sie sich in einem flachen Netzwerk (dem VPC) befinden. Die Hybridknoten befinden sich jedoch in einer anderen Netzwerk-Domain. Aus diesem Grund müssen Sie zusätzliches Routing in der VPC und in Ihrem On-Premises-Netzwerk konfigurieren, um den Datenverkehr zwischen den Hybridknoten und dem Rest des Clusters weiterzuleiten. Wenn die Hybridknoten untereinander und von der VPC aus erreichbar sind, können sich Ihre Hybridknoten in einem einzigen flachen Netzwerk oder in mehreren segmentierten Netzwerken befinden.

 **Routbarer Remote-Pod CIDRs** 

Damit die EKS-Steuerebene mit Pods kommunizieren kann, die in Hybridknoten ausgeführt werden (z. B. Webhooks oder der Metriken-Server), oder damit Pods, die auf Cloud-Knoten ausgeführt werden, mit Pods kommunizieren können, die in Hybridknoten ausgeführt werden (Ost-West-Kommunikation der Workloads), muss Ihr Fern-Pod-CIDR vom VPC aus routingfähig sein. Das bedeutet, dass die VPC in der Lage sein muss, den Datenverkehr zum Pod CIDRs über das Gateway zu Ihrem lokalen Netzwerk weiterzuleiten, und dass Ihr lokales Netzwerk in der Lage sein muss, den Datenverkehr für einen Pod an den richtigen Knoten weiterzuleiten.

Es ist wichtig, den Unterschied zwischen den Pod-Routing-Anforderungen im VPC und On-Premises zu beachten. Die VPC muss lediglich wissen, dass der gesamte Datenverkehr, der an einen Fern-Pod gesendet wird, über das Gateway geleitet werden soll. Wenn Sie nur über eine Fern-Pod-CIDR verfügen, benötigen Sie nur eine Route.

Diese Anforderung gilt für alle Hops in Ihrem On-Premises-Netzwerk bis zum lokalen Router im selben Subnetz wie Ihre Hybridknoten. Dies ist der einzige Router, der den jedem Knoten zugewiesenen Pod-CIDR-Segment kennen muss, um sicherzustellen, dass der Datenverkehr für einen bestimmten Pod an den Knoten übermittelt wird, für den der Pod geplant wurde.

Sie können sich dafür entscheiden, diese Routen für den lokalen Pod CIDRs von Ihrem lokalen Router an die VPC-Routentabellen weiterzugeben, dies ist jedoch nicht erforderlich. Wenn sich Ihr On-Premises-Pod häufig CIDRs ändert und Ihre VPC-Routing-Tabellen aktualisiert werden müssen, um den sich ändernden Pod widerzuspiegeln CIDRs, empfehlen wir, den lokalen Pod an die VPC-Routing-Tabellen CIDRs weiterzugeben. Dies ist jedoch ungewöhnlich.

Beachten Sie, dass die Einschränkung, Ihren lokalen Pod routingfähig zu machen, optional ist. CIDRs Wenn Sie keine Webhooks auf Ihren Hybridknoten ausführen oder Pods auf Cloud-Knoten nicht mit Pods auf Hybridknoten kommunizieren lassen müssen, müssen Sie das Routing für den Pod in CIDRs Ihrem lokalen Netzwerk nicht konfigurieren.

 *Warum muss der lokale Pod mit CIDRs Hybridknoten routingfähig sein?* 

Wenn Sie EKS mit dem VPC-CNI für Ihre Cloud-Knoten verwenden, weist das VPC-CNI den Pods IPs direkt von der VPC zu. Das bedeutet, dass kein spezielles Routing erforderlich ist, da sowohl Cloud-Pods als auch die EKS-Steuerebene den Pod direkt erreichen können. IPs 

Bei der Ausführung vor Ort (und mit anderen CNIs in der Cloud) werden die Pods normalerweise in einem isolierten Overlay-Netzwerk ausgeführt, und das CNI kümmert sich um die Übertragung des Datenverkehrs zwischen den Pods. Dies erfolgt üblicherweise durch Kapselung: Das CNI wandelt den Datenverkehr in pod-to-pod Datenverkehr um und kümmert sich dabei um die Kapselung und Entkapselung an beiden Enden. node-to-node Auf diese Weise sind keine zusätzlichen Konfigurationen an den Knoten und Routern erforderlich.

Die Vernetzung mit Hybridknoten ist einzigartig, da sie eine Kombination beider Topologien darstellt – die EKS-Steuerebene und die Cloud-Knoten (mit dem VPC CNI) erwarten ein flaches Netzwerk einschließlich Knoten und Pods, während die in Hybridknoten ausgeführten Pods sich in einem Überlagerungsnetzwerk befinden, das VXLAN für die Kapselung verwendet (standardmäßig in Cilium). In Hybridknoten ausgeführte Pods können die EKS-Steuerebene erreichen, und auf Cloudknoten ausgeführte Pods können dies erreichen, vorausgesetzt, das On-Premises-Netzwerk kann zum VPC weiterleiten. Ohne Routing für den Pod CIDRs im lokalen Netzwerk wird jedoch jeglicher Datenverkehr, der zu einer lokalen Pod-IP zurückkehrt, irgendwann verworfen, wenn das Netzwerk nicht weiß, wie es das Overlay-Netzwerk erreichen und zu den richtigen Knoten weiterleiten kann.

# Kubernetes-Konzepte für Hybridknoten
<a name="hybrid-nodes-concepts-kubernetes"></a>

Auf dieser Seite werden die wichtigsten Kubernetes-Konzepte erläutert, die der Systemarchitektur von EKS-Hybridknoten zugrunde liegen.

## EKS-Steuerebene in der VPC
<a name="hybrid-nodes-concepts-k8s-api"></a>

Die IPs der ENIs der EKS-Steuerebene werden im `kubernetes` `Endpoints`-Objekt im `default`-Namespace gespeichert. Wenn EKS neue ENIs erstellt oder ältere entfernt, aktualisiert EKS dieses Objekt, sodass die Liste der IPs immer auf dem neuesten Stand ist.

Sie können diese Endpunkte über den `kubernetes`-Service auch im `default`-Namespace verwenden. Diesem Service vom Typ `ClusterIP` wird immer die erste IP des Service-CIDR des Clusters zugewiesen. Beispielsweise lautet die Service-IP für den Service CIDR `172.16.0.0/16` `172.16.0.1`.

Im Allgemeinen greifen Pods (unabhängig davon, ob sie in der Cloud oder in Hybridknoten ausgeführt werden) auf diese Weise auf den EKS-Kubernetes-API-Server zu Pods verwenden die Service-IP als Ziel-IP, die in die tatsächlichen IPs einer der EKS-Steuerebenen-ENIs übersetzt wird. Die wichtigste Ausnahme ist `kube-proxy`, da es die Übersetzung einrichtet.

## EKS-API-Server-Endpunkt
<a name="hybrid-nodes-concepts-k8s-eks-api"></a>

Die `kubernetes`-Service-IP ist nicht die einzige Möglichkeit, auf den EKS-API-Server zuzugreifen. EKS erstellt außerdem einen Route53-DNS-Namen, wenn Sie Ihren Cluster erstellen. Dies ist das Feld `endpoint` Ihres EKS-Clusters beim Aufruf der EKS-`DescribeCluster`-API-Aktion.

```
{
    "cluster": {
        "endpoint": "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.gr7.us-west-2.eks.amazonaws.com",
        "name": "my-cluster",
        "status": "ACTIVE"
    }
}
```

In einem Cluster mit öffentlichem Endpunktzugriff oder öffentlichem und privatem Endpunktzugriff lösen Ihre Hybridknoten diesen DNS-Namen standardmäßig in eine öffentliche IP-Adresse auf, die über das Internet routingfähig ist. In einem Cluster mit privatem Endpunktzugriff wird der DNS-Name in die privaten IP-Adressen der EKS-Control-Plane-ENIs aufgelöst.

Auf diese Weise greifen `kubelet` und `kube-proxy` auf den Kubernetes-API-Server zu. Wenn Sie möchten, dass der gesamte Datenverkehr Ihres Kubernetes-Clusters über die VPC läuft, müssen Sie entweder Ihren Cluster im privaten Zugriffsmodus konfigurieren oder Ihren On-Premises-DNS-Server so ändern, dass der EKS-Cluster-Endpunkt zu den privaten IP-Adressen der EKS-Steuerebenen-ENIs aufgelöst wird.

## `kubelet`-Endpunkt
<a name="hybrid-nodes-concepts-k8s-kubelet-api"></a>

Das `kubelet` stellt mehrere REST-Endpunkte bereit, sodass andere Teile des Systems mit jedem Knoten interagieren und Informationen von diesem erfassen können. In den meisten Clustern stammt der Großteil des Datenverkehrs zum `kubelet`-Server von der Steuerebene, aber auch bestimmte Überwachungsagenten können mit ihr interagieren.

Über diese Schnittstelle verarbeitet `kubelet` verschiedene Anfragen: das Abrufen von Protokollen (`kubectl logs`), das Ausführen von Befehlen in Containern (`kubectl exec`) und die Portweiterleitung des Datenverkehrs (`kubectl port-forward`). Jede dieser Anfragen interagiert über das `kubelet` mit der zugrunde liegenden Container-Laufzeitumgebung, was für Cluster-Administratoren und Entwickler nahtlos erscheint.

Der häufigste Nutzer dieser API ist der Kubernetes-API-Server. Wenn Sie einen der zuvor erwähnten `kubectl`-Befehle verwenden, sendet `kubectl` eine API-Anfrage an den API-Server, der dann die `kubelet`-API des Knotens aufruft, auf dem der Pod ausgeführt wird. Dies ist der Hauptgrund, warum die Knoten-IP von der EKS-Steuerebene aus erreichbar sein muss und warum Sie selbst bei ausgeführten Pods nicht auf deren Protokolle oder `exec` zugreifen können, wenn die Knoten-Route falsch konfiguriert ist.

 **Knoten-IPs** 

Wenn die EKS-Steuerebene mit einem Knoten kommuniziert, verwendet sie eine der im `Node`-Objektstatus (`status.addresses`) gemeldeten Adressen.

Bei EKS-Cloud-Knoten ist es üblich, dass der Kubelet die private IP-Adresse der EC2-Instance während der Knotenregistrierung als `InternalIP` meldet. Diese IP-Adresse wird dann vom Cloud Controller Manager (CCM) überprüft, um sicherzustellen, dass sie zur EC2-Instance gehört. Darüber hinaus fügt der CCM in der Regel die öffentlichen IP-Adressen (als `ExternalIP`) und DNS-Namen (`InternalDNS` und `ExternalDNS`) der Instance zum Knotenstatus hinzu.

Für Hybridknoten gibt es jedoch kein CCM. Wenn Sie einen Hybridknoten mit der EKS-Hybridknoten-CLI (`nodeadm`) registrieren, wird das kubelet so konfiguriert, dass es die IP-Adresse Ihres Rechners direkt im Status des Knotens meldet, ohne das CCM.

```
apiVersion: v1
kind: Node
metadata:
  name: my-node-1
spec:
  providerID: eks-hybrid:///us-west-2/my-cluster/my-node-1
status:
  addresses:
  - address: 10.1.1.236
    type: InternalIP
  - address: my-node-1
    type: Hostname
```

Wenn Ihr Rechner über mehrere IP-Adressen verfügt, wählt das kubelet nach seiner eigenen Logik eine davon aus. Sie können die ausgewählte IP mit dem `--node-ip`-Flag steuern, das Sie in der `nodeadm`-Konfiguration in `spec.kubelet.flags` übergeben können. Nur die im `Node`-Objekt gemeldete IP benötigt eine Route von der VPC. Ihre Rechner können über andere IP-Adressen verfügen, die von der Cloud aus nicht erreichbar sind.

## `kube-proxy`
<a name="hybrid-nodes-concepts-k8s-kube-proxy"></a>

 `kube-proxy` ist für die Implementierung der Service-Abstraktion auf der Netzwerkebene jedes Knotens verantwortlich. Es agiert als Netzwerk-Proxy und Load Balancer für den Datenverkehr, der für Kubernetes-Services bestimmt ist. Durch die kontinuierliche Überwachung des Kubernetes-API-Servers auf Änderungen in Bezug auf Services und Endpunkte aktualisiert `kube-proxy` dynamisch die Netzwerkregeln des zugrunde liegenden Hosts, um sicherzustellen, dass der Datenverkehr richtig geleitet wird.

Im `iptables`-Modus programmiert `kube-proxy` mehrere `netfilter`-Ketten zur Handhabung des Service-Datenverkehrs. Die Regeln bilden die folgende Hierarchie:

1.  **KUBE-SERVICES-Kette**: Der Einstiegspunkt für den gesamten Service-Datenverkehr. Sie verfügt über Regeln, die mit dem `ClusterIP` und dem Port jedes Services übereinstimmen.

1.  **KUBE-SVC-XXX-Ketten**: Service-spezifische Ketten verfügen über Load-Balancing-Regeln für jeden einzelnen Service.

1.  **KUBE-SEP-XXX-Ketten**: Endpunktspezifische Ketten enthalten die aktuellen `DNAT`-Regeln.

Betrachten wir, was für einen Service-`test-server` im `default`-Namespace geschieht: \$1 Service ClusterIP: `172.16.31.14` \$1 Service-Port: `80` \$1 Unterstützende Pods: `10.2.0.110`, `10.2.1.39` und `10.2.2.254` 

Bei Überprüfung der `iptables`-Regeln (mit `iptables-save 0 grep -A10 KUBE-SERVICES`):

1. In der **KUBE-SERVICES**-Kette finden wir eine Regel, die zum Service passt:

   ```
   -A KUBE-SERVICES -d 172.16.31.14/32 -p tcp -m comment --comment "default/test-server cluster IP" -m tcp --dport 80 -j KUBE-SVC-XYZABC123456
   ```
   + Diese Regel gilt für Pakete, die für 172.16.31.14:80 bestimmt sind.
   + Der Kommentar gibt an, wozu diese Regel dient: `default/test-server cluster IP` 
   + Übereinstimmende Pakete werden zur `KUBE-SVC-XYZABC123456`-Kette weitergeleitet

1. Die **KUBE-SVC-XYZABC123456**-Kette verfügt über wahrscheinlichkeitsbasierte Lastausgleichsregeln:

   ```
   -A KUBE-SVC-XYZABC123456 -m statistic --mode random --probability 0.33333333349 -j KUBE-SEP-POD1XYZABC
   -A KUBE-SVC-XYZABC123456 -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-POD2XYZABC
   -A KUBE-SVC-XYZABC123456 -j KUBE-SEP-POD3XYZABC
   ```
   + Erste Regel: 33,3 % Wahrscheinlichkeit, dass zu `KUBE-SEP-POD1XYZABC` weitergeleitet wird 
   + Zweite Regel: 50 % Wahrscheinlichkeit, dass der verbleibende Datenverkehr (33,3 % der Gesamtmenge) zu `KUBE-SEP-POD2XYZABC` weitergeleitet wird 
   + Letzte Regel: Der gesamte verbleibende Datenverkehr (33,3 % der Gesamtmenge) wird zu `KUBE-SEP-POD3XYZABC` weitergeleitet 

1. Die einzelnen **KUBE-SEP-XXX**-Ketten führen das DNAT (Destination NAT) durch:

   ```
   -A KUBE-SEP-POD1XYZABC -p tcp -m tcp -j DNAT --to-destination 10.2.0.110:80
   -A KUBE-SEP-POD2XYZABC -p tcp -m tcp -j DNAT --to-destination 10.2.1.39:80
   -A KUBE-SEP-POD3XYZABC -p tcp -m tcp -j DNAT --to-destination 10.2.2.254:80
   ```
   + Diese DNAT-Regeln schreiben die Ziel-IP und den Ziel-Port neu, um den Datenverkehr an bestimmte Pods weiterzuleiten.
   + Jede Regel verarbeitet etwa 33,3 % des Datenverkehrs und sorgt für eine gleichmäßige Lastverteilung zwischen `10.2.0.110`, `10.2.1.39` und `10.2.2.254`.

Diese mehrstufige Kettenstruktur ermöglicht `kube-proxy` die effiziente Implementierung des Service-Load-Balancings und der Umleitung durch Paketmanipulation auf Kernelebene, ohne dass ein Proxy-Prozess im Datenpfad erforderlich ist.

### Auswirkungen auf den Kubernetes-Betrieb
<a name="hybrid-nodes-concepts-k8s-operations"></a>

Ein defekter `kube-proxy` in einem Knoten verhindert, dass dieser Knoten den Service-Datenverkehr ordnungsgemäß weiterleitet. Dies führt zu Zeitüberschreitungen oder Verbindungsfehlern für Pods, die auf Cluster-Services angewiesen sind. Dies kann insbesondere bei der erstmaligen Registrierung eines Knotens zu Störungen führen. Das CNI muss mit dem Kubernetes-API-Server kommunizieren, um Informationen wie die Pod-CIDR des Knotens abzurufen, bevor es die Pod-Vernetzung konfigurieren kann. Dazu verwendet es die `kubernetes`-Service-IP. Wenn `kube-proxy` jedoch nicht gestartet werden konnte oder die richtigen `iptables`-Regeln nicht festgelegt wurden, werden die an die `kubernetes`-Service-IP gesendeten Anfragen nicht in die tatsächlichen IPs der ENIs der EKS-Steuerebene übersetzt. Infolgedessen gerät das CNI in eine Absturzsituation, und keiner der Pods kann ordnungsgemäß ausgeführt werden.

Es ist bekannt, dass Pods die `kubernetes`-Service-IP verwenden, um mit dem Kubernetes-API-Server zu kommunizieren, jedoch muss `kube-proxy` zunächst `iptables`-Regeln festlegen, damit dies funktioniert.

Wie kommuniziert `kube-proxy` mit dem API-Server?

`kube-proxy` muss so konfiguriert werden, dass es die tatsächlichen IPs des Kubernetes-API-Servers oder einen DNS-Namen verwendet, der auf diese aufgelöst wird. Im Fall von EKS konfiguriert EKS die Standard-`kube-proxy` so, dass es auf den Route53-DNS-Namen verweist, den EKS beim Erstellen des Clusters erstellt. Sie können diesen Wert in der `kube-proxy`-ConfigMap im `kube-system`-Namespace sehen. Der Inhalt dieser ConfigMap ist ein `kubeconfig`, das in den `kube-proxy`-Pod eingefügt wird. Suchen Sie also nach dem `clusters0.cluster.server`-Feld. Dieser Wert entspricht dem `endpoint`-Feld Ihres EKS-Clusters (beim Aufruf der EKS-`DescribeCluster`-API).

```
apiVersion: v1
data:
  kubeconfig: |-
    kind: Config
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        server: https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.gr7.us-west-2.eks.amazonaws.com
      name: default
    contexts:
    - context:
        cluster: default
        namespace: default
        user: default
      name: default
    current-context: default
    users:
    - name: default
      user:
        tokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
kind: ConfigMap
metadata:
  name: kube-proxy
  namespace: kube-system
```

## Routingfähige Fern-Pod-CIDRs
<a name="hybrid-nodes-concepts-k8s-pod-cidrs"></a>

Auf der Seite [Netzwerkkonzepte für Hybridknoten](hybrid-nodes-concepts-networking.md) werden die Anforderungen zum Ausführen von Webhooks in Hybridknoten oder zum Kommunizieren von Pods in Cloud-Knoten mit Pods in Hybridknoten detailliert beschrieben. Die wichtigste Voraussetzung ist, dass der On-Premises-Router weiß, welcher Knoten für eine bestimmte Pod-IP zuständig ist. Es gibt mehrere Möglichkeiten, dies zu erreichen, darunter Border Gateway Protocol (BGP), statische Routen und Address Resolution Protocol (ARP)-Proxying. Diese werden in den folgenden Abschnitten behandelt.

 **Border Gateway Protocol (BGP)** 

Wenn Ihr CNI dies unterstützt (z. B. Cilium und Calico), können Sie den BGP-Modus Ihres CNI verwenden, um Routen zu Ihren Pod-CIDRs pro Knoten von Ihren Knoten an Ihren lokalen Router weiterzuleiten. Bei Verwendung des BGP-Modus des CNI agiert Ihr CNI als virtueller Router, sodass Ihr lokaler Router davon ausgeht, dass die Pod-CIDR zu einem anderen Subnetz gehört und Ihr Knoten das Gateway zu diesem Subnetz ist.

![\[Hybridknoten-BGP-Routing\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-nodes-bgp.png)


 **Statische Routen** 

Oder Sie können statische Routen in Ihrem lokalen Router konfigurieren. Dies ist die einfachste Methode, um die CIDR des On-Premises-Pods zu Ihrer VPC weiterzuleiten. Allerdings ist sie auch die fehleranfälligste und am schwierigsten zu wartende Methode. Sie müssen sicherstellen, dass die Routen stets mit den vorhandenen Knoten und den ihnen zugewiesenen Pod-CIDRs auf dem neuesten Stand sind. Wenn die Anzahl Ihrer Knoten gering und die Infrastruktur statisch ist, ist dies eine sinnvolle Option und macht die BGP-Unterstützung in Ihrem Router überflüssig. Wenn Sie sich dafür entscheiden, empfehlen wir Ihnen, Ihr CNI mit dem Pod-CIDR-Segment zu konfigurieren, das Sie jedem Knoten zuweisen möchten, anstatt dies Ihrem IPAM zu überlassen.

![\[Statisches Routing für Hybridknoten\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-nodes-static-routes.png)


 **Address Resolution Protocol (ARP)-Proxying** 

ARP-Proxying ist ein weiterer Ansatz, um On-Premises-Pod-IPs routingfähig zu machen. Dies ist besonders nützlich, wenn sich Ihre Hybridknoten im selben Layer-2-Netzwerk wie Ihr lokaler Router befinden. Wenn ARP-Proxying aktiviert ist, antwortet ein Knoten auf ARP-Anfragen für Pod-IPs, die er hostet, auch wenn diese IPs zu einem anderen Subnetz gehören.

Wenn ein Gerät in Ihrem lokalen Netzwerk versucht, eine Pod-IP zu erreichen, sendet es zunächst eine ARP-Anfrage mit der Frage „Wer hat diese IP?“. Der Hybridknoten, der diesen Pod hostet, antwortet mit seiner eigenen MAC-Adresse und sagt: „Ich kann den Datenverkehr für diese IP verarbeiten.“ Dadurch wird eine direkte Verbindung zwischen den Geräten in Ihrem lokalen Netzwerk und den Pods hergestellt, ohne dass eine Router-Konfiguration erforderlich ist.

Damit dies funktioniert, muss Ihr CNI die Proxy-ARP-Funktionalität unterstützen. Cilium verfügt über integrierten Support für Proxy-ARP, den Sie über die Konfiguration aktivieren können. Der wichtigste Aspekt besteht darin, dass sich das Pod-CIDR nicht mit anderen Netzwerken in Ihrer Umgebung überschneiden darf, da dies zu Routing-Konflikten führen könnte.

Dieser Ansatz bietet mehrere Vorteile: \$1 Sie müssen Ihren Router nicht mit BGP konfigurieren oder statische Routen verwalten. \$1 Funktioniert gut in Umgebungen, in denen Sie keine Kontrolle über Ihre Router-Konfiguration haben.

![\[ARP-Proxying für Hybridknoten\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-nodes-arp-proxy.png)


## Pod-zu-Pod-Kapselung
<a name="hybrid-nodes-concepts-k8s-pod-encapsulation"></a>

In On-Premises-Umgebungen verwenden CNIs in der Regel Kapselungsprotokolle, um Überlagerungsnetzwerke zu erstellen, die auf dem physischen Netzwerk betrieben werden können, ohne dass dieses neu konfiguriert werden muss. In diesem Abschnitt wird erläutert, wie diese Kapselung funktioniert. Beachten Sie, dass einige Details je nach dem von Ihnen verwendeten CNI variieren können.

Bei der Kapselung werden ursprüngliche Pod-Netzwerkpakete in ein anderes Netzwerkpaket eingebunden, das durch das zugrunde liegende physische Netzwerk geleitet werden kann. Dadurch können Pods über Knoten hinweg kommunizieren, auf denen dasselbe CNI ausgeführt wird, ohne dass das physische Netzwerk wissen muss, wie diese Pod-CIDRs weitergeleitet werden sollen.

Das am häufigsten verwendete Kapselungsprotokoll mit Kubernetes ist Virtual Extensible LAN (VXLAN). Abhängig von Ihrem CNI sind jedoch auch andere Protokolle verfügbar (z. B. `Geneve`).

### VXLAN-Kapselung
<a name="_vxlan_encapsulation"></a>

VXLAN kapselt Layer-2-Ethernet-Frames in UDP-Paketen. Wenn ein Pod Datenverkehr an einen anderen Pod auf einem anderen Knoten sendet, führt das CNI Folgendes aus:

1. Das CNI fängt Pakete von Pod A ab

1. Das CNI verpackt das ursprüngliche Paket in einen VXLAN-Header

1. Dieses verpackte Paket wird dann über den regulären Netzwerk-Stack des Knotens an den Zielknoten gesendet

1. Das CNI auf dem Zielknoten entpackt das Paket und übermittelt es an Pod B

Folgendes passiert mit der Paketstruktur während der VXLAN-Kapselung:

Ursprüngliches Pod-zu-Pod-Paket:

```
+-----------------+---------------+-------------+-----------------+
| Ethernet Header | IP Header     | TCP/UDP     | Payload         |
| Src: Pod A MAC  | Src: Pod A IP | Src Port    |                 |
| Dst: Pod B MAC  | Dst: Pod B IP | Dst Port    |                 |
+-----------------+---------------+-------------+-----------------+
```

Nach der VXLAN-Kapselung:

```
+-----------------+-------------+--------------+------------+---------------------------+
| Outer Ethernet  | Outer IP    | Outer UDP    | VXLAN      | Original Pod-to-Pod       |
| Src: Node A MAC | Src: Node A | Src: Random  | VNI: xx    | Packet (unchanged         |
| Dst: Node B MAC | Dst: Node B | Dst: 4789    |            | from above)               |
+-----------------+-------------+--------------+------------+---------------------------+
```

Der VXLAN Network Identifier (VNI) unterscheidet zwischen verschiedenen Überlagerungsnetzwerken.

### Szenarien für die Pod-Kommunikation
<a name="_pod_communication_scenarios"></a>

 **Pods auf demselben Hybridknoten** 

Wenn Pods auf demselben Hybridknoten kommunizieren, ist normalerweise keine Kapselung erforderlich. Das CNI richtet lokale Routen ein, die den Datenverkehr zwischen Pods über die internen virtuellen Schnittstellen des Knotens leiten:

```
Pod A -> veth0 -> node's bridge/routing table -> veth1 -> Pod B
```

Das Paket verlässt den Knoten nie und erfordert keine Kapselung.

 **Pods auf verschiedenen Hybridknoten** 

Die Kommunikation zwischen Pods auf verschiedenen Hybridknoten erfordert eine Kapselung:

```
Pod A -> CNI -> [VXLAN encapsulation] -> Node A network -> router or gateway -> Node B network -> [VXLAN decapsulation] -> CNI -> Pod B
```

Dadurch kann der Pod-Datenverkehr die physische Netzwerkinfrastruktur durchlaufen, ohne dass das physische Netzwerk das Pod-IP-Routing verstehen muss.

# Abläufe des Netzwerk-Datenverkehrs für Hybridknoten
<a name="hybrid-nodes-concepts-traffic-flows"></a>

Auf dieser Seite werden die Netzwerkverkehrsflüsse für EKS-Hybridknoten mit Diagrammen beschrieben, die die end-to-end Netzwerkpfade für die verschiedenen Verkehrstypen zeigen.

Die folgenden Datenverkehr-Abläufe werden abgedeckt:
+  [Hybridknoten `kubelet` zur EKS-Steuerebene](#hybrid-nodes-concepts-traffic-flows-kubelet-to-cp) 
+  [EKS-Steuerebene zum Hybridknoten (`kubelet`-Server)](#hybrid-nodes-concepts-traffic-flows-cp-to-kubelet) 
+  [Pods, die in Hybridknoten zur EKS-Steuerebene ausgeführt werden](#hybrid-nodes-concepts-traffic-flows-pods-to-cp) 
+  [EKS-Steuerebene für Pods, die in einem Hybridknoten ausgeführt werden (Webhooks)](#hybrid-nodes-concepts-traffic-flows-cp-to-pod) 
+  [Pod-to-Pod läuft auf Hybridknoten](#hybrid-nodes-concepts-traffic-flows-pod-to-pod) 
+  [Pods auf Cloud-Knoten zu Pods auf Hybridknoten (Ost-West–Datenverkehr)](#hybrid-nodes-concepts-traffic-flows-east-west) 

## Hybridknoten `kubelet` zur EKS-Steuerebene
<a name="hybrid-nodes-concepts-traffic-flows-kubelet-to-cp"></a>

![\[Hybridknoten-Cubelet zur EKS-Steuerebene\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-nodes-kubelet-to-cp-public.png)


### Anforderung
<a name="_request"></a>

 **1`kubelet`. Initiiert Anforderung** 

Wenn `kubelet` auf einem Hybridknoten mit der EKS-Steuerebene kommunizieren muss (z. B. um den Knotenstatus zu melden oder Pod-Spezifikationen abzurufen), verwendet es die während der Knotenregistrierung bereitgestellte `kubeconfig`-Datei. Dieses `kubeconfig` hat die URL des API-Server-Endpunkts (den Route53-DNS-Namen) und keine direkten IP-Adressen.

Das `kubelet` führt eine DNS-Suche für den Endpunkt durch (z. B. `https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.gr7.us-west-2.eks.amazonaws.com`). In einem Cluster mit öffentlichem Zugriff wird daraus eine öffentliche IP-Adresse (z. B. `54.239.118.52`) abgeleitet, die zum in AWS ausgeführten EKS-Service gehört. `kubelet` erstellt dann eine sichere HTTPS-Anfrage an diesen Endpunkt. Das ursprüngliche Paket sieht folgendermaßen aus:

```
+--------------------+---------------------+-----------------+
| IP Header          | TCP Header          | Payload         |
| Src: 10.80.0.2     | Src: 52390 (random) |                 |
| Dst: 54.239.118.52 | Dst: 443            |                 |
+--------------------+---------------------+-----------------+
```

 **2. Lokales Router-Routing** 

Da es sich bei der Ziel-IP um eine öffentliche IP-Adresse handelt und sie nicht Teil des lokalen Netzwerks ist, sendet `kubelet` dieses Paket an sein Standard-Gateway (den On-Premises-Router vor Ort). Der Router prüft die Ziel-IP und stellt fest, dass es sich um eine öffentliche IP-Adresse handelt.

Bei öffentlichem Datenverkehr leitet der Router das Paket normalerweise an ein Internet-Gateway oder einen Border-Router weiter, der den ausgehenden Datenverkehr ins Internet abwickelt. Dies ist im Diagramm nicht dargestellt und hängt von der Konfiguration Ihres On-Premises-Netzwerks ab. Das Paket durchläuft Ihre On-Premises-Netzwerkinfrastruktur und erreicht schließlich das Netzwerk Ihres Internet-Serviceanbieters.

 **3. Übermittlung an die EKS-Steuerebene** 

Das Paket wird über das öffentliche Internet und die Transitnetzwerke übertragen, bis es AWS das Netzwerk erreicht. AWS Das Netzwerk leitet das Paket an den EKS-Dienstendpunkt in der entsprechenden Region weiter. Wenn das Paket den EKS-Service erreicht, wird es an die eigentliche EKS-Steuerebene für Ihren Cluster weitergeleitet.

Dieses Routing über das öffentliche Internet unterscheidet sich vom privaten VPC-weitergeleiteten Pfad, den wir in anderen Datenverkehrsabläufen sehen werden. Der Hauptunterschied besteht darin, dass im öffentlichen Zugriffsmodus der Datenverkehr von On-Premises-`kubelet` (jedoch nicht von Pods) zur EKS-Steuerebene nicht über Ihre VPC läuft, sondern stattdessen die globale Internetinfrastruktur verwendet.

### Antwort
<a name="_response"></a>

Nachdem die EKS-Steuerebene die `kubelet`-Anfrage verarbeitet hat, sendet sie eine Antwort zurück:

 **3. EKS-Steuerebene sendet Antwort** 

Die EKS-Steuerebene erstellt ein Antwortpaket. Dieses Paket hat die öffentliche IP als Quelle und die IP des Hybridknotens als Ziel:

```
+--------------------+---------------------+-----------------+
| IP Header          | TCP Header          | Payload         |
| Src: 54.239.118.52 | Src: 443            |                 |
| Dst: 10.80.0.2     | Dst: 52390          |                 |
+--------------------+---------------------+-----------------+
```

 **2. Internet-Routing** 

Das Antwortpaket wird über das Internet zurückgesendet und folgt dabei dem von den Internet-Serviceanbietern festgelegten Routing-Pfad, bis es Ihren On-Premises-Netzwerk-Edge-Router erreicht.

 **1. Lokale Übermittlung** 

Ihr On-Premises-Router empfängt das Paket und erkennt die Ziel-IP (`10.80.0.2`) als zu Ihrem lokalen Netzwerk gehörig. Er leitet das Paket über Ihre lokale Netzwerkinfrastruktur weiter, bis es den Ziel-Hybridknoten erreicht, wo es von `kubelet` empfangen und verarbeitet wird.

## Hybridknoten `kube-proxy` zur EKS-Steuerebene
<a name="_hybrid_node_kube_proxy_to_eks_control_plane"></a>

Wenn Sie den öffentlichen Endpunktzugriff für den Cluster aktivieren, wird für den Rück-Datenverkehr das öffentliche Internet verwendet. Dieser Datenverkehr stammt vom `kube-proxy` auf dem Hybridknoten zur EKS-Steuerebene und folgt dem gleichen Pfad wie der Datenverkehr vom `kubelet` zur EKS-Steuerebene.

## EKS-Steuerebene zum Hybridknoten (`kubelet`-Server)
<a name="hybrid-nodes-concepts-traffic-flows-cp-to-kubelet"></a>

![\[EKS-Steuerebene zum Hybridknoten\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-nodes-cp-to-kubelet.png)


### Anforderung
<a name="_request_2"></a>

 **1. EKS-Kubernetes-API-Server initiiert Anfrage** 

Der EKS-Kubernetes-API-Server ruft die IP-Adresse (`10.80.0.2`) des Knotens aus dem Status des Knotenobjekts ab. Anschließend leitet er diese Anfrage über seine ENI in der VPC weiter, da die Ziel-IP zum konfigurierten CIDR (`10.80.0.0/16`) des Knotens aus der Ferne gehört. Das ursprüngliche Paket sieht folgendermaßen aus:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 67493 (random) |                 |
| Dst: 10.80.0.2  | Dst: 10250          |                 |
+-----------------+---------------------+-----------------+
```

 **2. VPC-Netzwerkverarbeitung** 

Das Paket verlässt die ENI und gelangt in die VPC- Netzwerkebene, wo es zur weiteren Weiterleitung an das Gateway des Subnetzes weitergeleitet wird.

 **3. Abfrage der VPC-Routing-Tabelle** 

Die VPC-Routing-Tabelle für das Subnetz, das die EKS-Steuerebene ENI enthält, verfügt über eine bestimmte Route (die zweite im Diagramm) für den CIDR des Knotens aus der Ferne. Basierend auf dieser Routing-Regel wird das Paket an das VPC-to-onprem Gateway weitergeleitet.

 **4. Grenzüberschreitender Transit** 

Das Gateway überträgt das Paket über die Cloud-Grenze hinweg über Ihre vorhandene Verbindung (z. B. Direct Connect oder VPN) an Ihr On-Premises-Netzwerk.

 **5. On-Premises-Netzwerkempfang** 

Das Paket wird an Ihren On-Premises-Router vor Ort weitergeleitet, der den Datenverkehr für das Subnetz verwaltet, in dem sich Ihre Hybridknoten befinden.

 **6. Endgültige Übermittlung** 

Der lokale Router erkennt, dass die Ziel IP (`10.80.0.2`)-Adresse zu seinem direkt verbundenen Netzwerk gehört, und leitet das Paket direkt an den Ziel-Hybridknoten weiter, wo `kubelet` die Anfrage empfängt und verarbeitet.

### Antwort
<a name="_response_2"></a>

Nachdem das `kubelet` des Hybridknotens die Anfrage verarbeitet hat, sendet er eine Antwort auf dem gleichen Weg in umgekehrter Richtung zurück:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.80.0.2  | Src: 10250          |                 |
| Dst: 10.0.0.132 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

 **6. `kubelet` Sendet Antwort** 

Das `kubelet` auf dem Hybridknoten (`10.80.0.2`) erstellt ein Antwortpaket mit der ursprünglichen Quell-IP als Ziel. Das Ziel gehört nicht zum lokalen Netzwerk, daher wird es an das Standard-Gateway des Hosts gesendet, das der lokale Router ist.

 **5. Lokales Router-Routing** 

Der Router stellt fest, dass die Ziel-IP (`10.0.0.132`) zu `10.0.0.0/16` gehört, das über eine Route verfügt, die auf das Gateway zeigt, das mit AWS verbunden ist.

 **4. Grenzüberschreitende Rückgabe** 

Das Paket wird über dieselbe On-Premises-VPC-Verbindung (z. B. Direct Connect oder VPN) zurückgesendet und durchquert die Cloud-Grenze in umgekehrter Richtung.

 **3. VPC-Routing** 

Wenn das Paket in der VPC ankommt, erkennen die Routing-Tabellen, dass die Ziel-IP zu einer VPC-CIDR gehört. Das Paket wird innerhalb der VPC weitergeleitet.

 **2. VPC-Netzwerkzustellung** 

Die VPC-Netzwerkschicht leitet das Paket an das Subnetz mit der EKS-Steuerebene ENI (`10.0.0.132`) weiter.

 **1. ENI-Empfang** 

Das Paket erreicht die EKS-Steuerebene ENI, die an den Kubernetes-API-Server angefügt ist, und schließt damit den Rundlauf ab.

## Pods, die in Hybridknoten zur EKS-Steuerebene ausgeführt werden
<a name="hybrid-nodes-concepts-traffic-flows-pods-to-cp"></a>

![\[Pods, die in Hybridknoten zur EKS-Steuerebene ausgeführt werden\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-nodes-pod-to-cp.png)


### Ohne CNI NAT
<a name="_without_cni_nat"></a>

### Anforderung
<a name="_request_3"></a>

Pods kommunizieren in der Regel über den `kubernetes`-Service mit dem Kubernetes-API-Server. Die Service-IP ist die erste IP-Adresse des CIDR-Adressbereichs des Clusters. Diese Konvention ermöglicht es Pods, die vor der Verfügbarkeit von CoreDNS ausgeführt werden müssen, den API-Server zu erreichen, beispielsweise das CNI. Anfragen verlassen den Pod mit der Service-IP als Ziel. Wenn beispielsweise die CIDR des Services `172.16.0.0/16` ist, lautet die IP-Adresse des Services `172.16.0.1`.

 **1. Pod initiiert Anfrage** 

Der Pod sendet von einem zufälligen Quell-Port eine Anfrage an die `kubernetes`-Service-IP (`172.16.0.1`) auf dem API-Server-Port (443). Das Paket sieht wie folgt aus:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 67493 (random) |                 |
| Dst: 172.16.0.1 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

 **2. CNI-Verarbeitung** 

Das CNI erkennt, dass die Ziel-IP zu keinem von ihm verwalteten Pod-CIDR gehört. Da **ausgehendes NAT deaktiviert** ist, leitet das CNI das Paket unverändert an den Host-Netzwerk-Stack weiter.

 **3. Knoten-Netzwerkverarbeitung** 

Das Paket gelangt in den Netzwerk-Stack des Knotens, wo `netfilter`-Hooks die vom Kube-Proxy festgelegten `iptables`-Regeln auslösen. Es gelten mehrere Regeln in der folgenden Reihenfolge:

1. Das Paket erreicht zunächst die `KUBE-SERVICES`-Kette, die Regeln enthält, die mit der ClusterIP und dem Port jedes Services übereinstimmen.

1. Die übereinstimmende Regel springt zur `KUBE-SVC-XXX`-Kette für den `kubernetes`-Service (Pakete mit dem Ziel für `172.16.0.1:443`), die Regeln zum Load Balancing enthält.

1. Die Lastenausgleichsregel wählt zufällig eine der `KUBE-SEP-XXX` Ketten für die Steuerungsebene ENI IPs (`10.0.0.132`oder`10.0.1.23`) aus.

1. Die ausgewählte `KUBE-SEP-XXX`-Kette verfügt über die eigentliche Regel, welche die Ziel-IP von der Service-IP in die ausgewählte IP ändert. Dies wird als Destination Network Address Translation (DNAT) bezeichnet.

Nachdem diese Regeln angewendet wurden, sieht das Paket wie folgt aus, vorausgesetzt, dass die IP der ausgewählten EKS-Steuerebene ENI `10.0.0.132` ist:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 67493 (random) |                 |
| Dst: 10.0.0.132 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

Der Knoten leitet das Paket an sein Standard-Gateway weiter, da sich die Ziel-IP nicht im lokalen Netzwerk befindet.

 **4. Lokales Router-Routing** 

Der lokale Router stellt fest, dass die Ziel-IP (`10.0.0.132`) zur VPC-CIDR (`10.0.0.0/16`) gehört, und leitet sie an das Gateway weiter, das mit AWS verbunden ist.

 **5. Grenzüberschreitender Transit** 

Das Paket wird über Ihre eingerichtete Verbindung (z. B. Direct Connect oder VPN) über die Cloud-Grenze hinweg an die VPC weitergeleitet.

 **6. VPC-Netzwerkzustellung** 

Die VPC-Netzwerkebene leitet das Paket an das richtige Subnetz weiter, in dem sich die EKS-Steuerebene ENI (`10.0.0.132`) befindet.

 **7. ENI-Empfang** 

Das Paket erreicht die EKS-Steuerebene ENI, die an den Kubernetes-API-Server angefügt ist.

### Antwort
<a name="_response_3"></a>

Nachdem die EKS-Steuerebene die Anfrage verarbeitet hat, sendet sie eine Antwort zurück an den Pod:

 **7. API-Server übermittelt Antwort** 

Der EKS-Kubernetes-API-Server erstellt ein Antwortpaket mit der ursprünglichen Quell-IP als Ziel. Das Paket sieht wie folgt aus:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 443            |                 |
| Dst: 10.85.1.56 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

Da die Ziel-IP zum konfigurierten Fern-Pod-CIDR (`10.85.0.0/16`) gehört, sendet sie diese über ihre ENI in der VPC mit dem Router des Subnetzes als nächstem Hop.

 **6. VPC-Routing** 

Die VPC-Routentabelle enthält einen Eintrag für den Remote-Pod CIDR (`10.85.0.0/16`), der diesen Datenverkehr an das Gateway weiterleitet. VPC-to-onprem

 **5. Grenzüberschreitender Transit** 

Das Gateway überträgt das Paket über die Cloud-Grenze hinweg über Ihre vorhandene Verbindung (z. B. Direct Connect oder VPN) an Ihr On-Premises-Netzwerk.

 **4. On-Premises-Netzwerkempfang** 

Das Paket erreicht Ihren lokalen On-Premises-Router.

 **3. Zustellung an den Knoten** 

Die Tabelle des Routers enthält einen Eintrag für `10.85.1.0/24` mit `10.80.0.2` als nächstem Hop, wodurch das Paket an unseren Knoten übermittelt wird.

 **2. Knoten-Netzwerkverarbeitung** 

Während das Paket vom Netzwerk-Stack des Knotens verarbeitet wird, ordnet `conntrack` (ein Teil von `netfilter`) das Paket der Verbindung zu, die der Pod ursprünglich hergestellt hat. Da ursprünglich DNAT angewendet wurde, kehrt `conntrack` das DNAT um, indem die Quell-IP von der IP der ENI der EKS-Steuerebene in die `kubernetes`-Service-IP umgeschrieben wird:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 172.16.0.1 | Src: 443            |                 |
| Dst: 10.85.1.56 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

 **1. CNI-Verarbeitung** 

Das CNI erkennt, dass die Ziel-IP zu einem Pod in seinem Netzwerk gehört, und liefert das Paket an den richtigen Pod-Netzwerk-Namespace.

Dieser Ablauf zeigt, warum Remote Pod von der VPC bis zu dem spezifischen Knoten, der jeden Pod hostet, ordnungsgemäß routbar sein CIDRs muss. Der gesamte Rückpfad hängt vom ordnungsgemäßen Routing des Pods sowohl IPs in der Cloud als auch in lokalen Netzwerken ab.

### Mit CNI NAT
<a name="_with_cni_nat"></a>

Dieser Ablauf ist dem *ohne CNI NAT* sehr ähnlich, jedoch mit einem wesentlichen Unterschied: Das CNI wendet Source NAT (SNAT) auf das Paket an, bevor es an den Netzwerk-Stack des Knotens gesendet wird. Dadurch wird die Quell-IP des Pakets in die IP des Knotens geändert, sodass das Paket ohne zusätzliche Routing-Konfiguration zurück zum Knoten geleitet werden kann.

### Anforderung
<a name="_request_4"></a>

 **1. Pod initiiert Anfrage** 

Der Pod sendet von einem zufälligen Quell-Port eine Anfrage an die `kubernetes`-Service-IP (`172.16.0.1`) auf dem EKS-Kubernetes-API-Server-Port (443). Das Paket sieht wie folgt aus:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 67493 (random) |                 |
| Dst: 172.16.0.1 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

 **2. CNI-Verarbeitung** 

Das CNI erkennt, dass die Ziel-IP zu keinem von ihm verwalteten Pod-CIDR gehört. Da **ausgehendes NAT aktiviert ist**, wendet das CNI SNAT auf das Paket an und ändert die Quell-IP in die IP des Knotens, bevor es an den Netzwerk-Stack des Knotens weitergeleitet wird:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.80.0.2  | Src: 67493 (random) |                 |
| Dst: 172.16.0.1 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

Hinweis: CNI und `iptables` werden im Beispiel aus Gründen der Übersichtlichkeit als separate Blöcke dargestellt. In der Praxis ist es jedoch möglich, dass einige NAT CNIs verwenden`iptables`.

 **3. Knoten-Netzwerkverarbeitung** 

Hier `kube-proxy` verhalten sich die von festgelegten `iptables` Regeln genauso wie im vorherigen Beispiel, indem sie den Lastenausgleich zwischen dem Paket und einer der EKS-Steuerungsebenen durchführen ENIs. Das Paket sieht nun so aus:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.80.0.2  | Src: 67493 (random) |                 |
| Dst: 10.0.0.132 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

Der Knoten leitet das Paket an sein Standard-Gateway weiter, da sich die Ziel-IP nicht im lokalen Netzwerk befindet.

 **4. Lokales Router-Routing** 

Der lokale Router stellt fest, dass die Ziel-IP (`10.0.0.132`) zur VPC-CIDR (`10.0.0.0/16`) gehört, und leitet sie an das Gateway weiter, das mit AWS verbunden ist.

 **5. Grenzüberschreitender Transit** 

Das Paket wird über Ihre eingerichtete Verbindung (z. B. Direct Connect oder VPN) über die Cloud-Grenze hinweg an die VPC weitergeleitet.

 **6. VPC-Netzwerkzustellung** 

Die VPC-Netzwerkebene leitet das Paket an das richtige Subnetz weiter, in dem sich die EKS-Steuerebene ENI (`10.0.0.132`) befindet.

 **7. ENI-Empfang** 

Das Paket erreicht die EKS-Steuerebene ENI, die an den Kubernetes-API-Server angefügt ist.

### Antwort
<a name="_response_4"></a>

Nachdem die EKS-Steuerebene die Anfrage verarbeitet hat, sendet sie eine Antwort zurück an den Pod:

 **7. API-Server übermittelt Antwort** 

Der EKS-Kubernetes-API-Server erstellt ein Antwortpaket mit der ursprünglichen Quell-IP als Ziel. Das Paket sieht wie folgt aus:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 443            |                 |
| Dst: 10.80.0.2  | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

Da die Ziel-IP zum konfigurierten Fern-Knoten-CIDR (`10.80.0.0/16`) gehört, sendet sie diese über ihre ENI in der VPC mit dem Router des Subnetzes als nächstem Hop.

 **6. VPC-Routing** 

Die VPC-Routentabelle enthält einen Eintrag für den Remote-Knoten CIDR (`10.80.0.0/16`), der diesen Verkehr an das Gateway weiterleitet. VPC-to-onprem

 **5. Grenzüberschreitender Transit** 

Das Gateway überträgt das Paket über die Cloud-Grenze hinweg über Ihre vorhandene Verbindung (z. B. Direct Connect oder VPN) an Ihr On-Premises-Netzwerk.

 **4. On-Premises-Netzwerkempfang** 

Das Paket erreicht Ihren lokalen On-Premises-Router.

 **3. Zustellung an den Knoten** 

Der lokale Router erkennt, dass die Ziel-IP-Adresse (`10.80.0.2`) zu seinem direkt verbundenen Netzwerk gehört, und leitet das Paket direkt an den Ziel-Hybridknoten weiter.

 **2. Knoten-Netzwerkverarbeitung** 

Während das Paket vom Netzwerkstack des Knotens verarbeitet wird, gleicht `conntrack` (ein Teil von `netfilter`) das Paket mit der ursprünglich vom Pod hergestellten Verbindung ab. Da ursprünglich DNAT angewendet wurde, wird dies rückgängig gemacht, indem die Quell-IP von der IP der EKS-Steuerebene ENI in die `kubernetes`-Service-IP umgeschrieben wird:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 172.16.0.1 | Src: 443            |                 |
| Dst: 10.80.0.2  | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

 **1. CNI-Verarbeitung** 

Das CNI identifiziert dieses Paket als Teil einer Verbindung, für die zuvor SNAT angewendet wurde. Es kehrt das SNAT um und ändert die Ziel-IP wieder in die IP des Pods:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 172.16.0.1 | Src: 443            |                 |
| Dst: 10.85.1.56 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

Das CNI erkennt, dass die Ziel-IP zu einem Pod in seinem Netzwerk gehört, und liefert das Paket an den korrekten Pod-Netzwerk-Namespace.

Dieser Ablauf zeigt, wie CNI NAT-ing die Konfiguration vereinfachen kann, indem Pakete zurück zum Knoten geleitet werden können, ohne dass zusätzliches Routing für den Pod erforderlich ist. CIDRs

## EKS-Steuerebene für Pods, die in einem Hybridknoten ausgeführt werden (Webhooks)
<a name="hybrid-nodes-concepts-traffic-flows-cp-to-pod"></a>

![\[EKS-Steuerebene für Pods, die auf einem Hybridknoten ausgeführt werden\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-nodes-cp-to-pod.png)


Dieses Datenverkehrsmuster tritt am häufigsten bei Webhooks auf, bei denen die EKS-Steuerebene direkt Verbindungen zu Webhook-Servern herstellen muss, die in Pods auf Hybridknoten ausgeführt werden. Beispiele hierfür sind die Validierung und Mutation von Zulassungs-Webhooks, die vom API-Server während der Ressourcenvalidierung oder Mutationsprozesse aufgerufen werden.

### Anforderung
<a name="_request_5"></a>

 **1. EKS-Kubernetes-API-Server initiiert Anfrage** 

Wenn ein Webhook im Cluster konfiguriert ist und durch einen entsprechenden API-Vorgang ausgelöst wird, muss der EKS-Kubernetes-API-Server eine direkte Verbindung zum Webhook-Server-Pod herstellen. Der API-Server sucht zunächst die IP-Adresse des Pods aus der dem Webhook zugeordneten Service- oder Endpunkt-Ressource.

Vorausgesetzt, der Webhook-Pod wird in einem Hybridknoten mit IP `10.85.1.23` ausgeführt, erstellt der EKS-Kubernetes-API-Server eine HTTPS-Anfrage an den Webhook-Endpunkt. Das erste Paket wird über die EKS-Steuerebene ENI in Ihrem VPC gesendet, da die Ziel-IP `10.85.1.23` zum konfigurierten Fern-Pod-CIDR (`10.85.0.0/16`) gehört. Das Paket sieht wie folgt aus:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 41892 (random) |                 |
| Dst: 10.85.1.23 | Dst: 8443           |                 |
+-----------------+---------------------+-----------------+
```

 **2. VPC-Netzwerkverarbeitung** 

Das Paket verlässt die EKS-Steuerebene (ENI) und gelangt mit dem Router des Subnetzes als nächstem Hop in die VPC-Netzwerkebene.

 **3. Abfrage der VPC-Routing-Tabelle** 

Die VPC-Routing-Tabelle für das Subnetz, das die EKS-Steuerebene ENI enthält, enthält eine bestimmte Route für den Fern-Pod-CIDR (`10.85.0.0/16`). Diese Routing-Regel leitet das Paket an das VPC-to-onprem Gateway weiter (z. B. ein Virtual Private Gateway für Direct Connect- oder VPN-Verbindungen):

```
Destination     Target
10.0.0.0/16     local
10.85.0.0/16    vgw-id (VPC-to-onprem gateway)
```

 **4. Grenzüberschreitender Transit** 

Das Gateway überträgt das Paket über die Cloud-Grenze hinweg über Ihre vorhandene Verbindung (z. B. Direct Connect oder VPN) an Ihr On-Premises-Netzwerk. Das Paket behält seine ursprünglichen Quell- und Ziel-IP-Adressen bei, während es diese Verbindung durchläuft.

 **5. On-Premises-Netzwerkempfang** 

Das Paket erreicht Ihren lokalen On-Premises-Router. Der Router fragt seine Routing-Tabelle ab, um zu ermitteln, wie die Adresse 10.85.1.23 erreicht werden kann. Damit dies funktioniert, muss Ihr lokales Netzwerk über Routen für den Pod verfügen CIDRs , die den Datenverkehr an den entsprechenden Hybridknoten weiterleiten.

In diesem Fall enthält die Routing-Tabelle des Routers einen Eintrag, der angibt, dass das `10.85.1.0/24`-Subnetz über den Hybridknoten mit der IP `10.80.0.2` erreichbar ist:

```
Destination     Next Hop
10.85.1.0/24    10.80.0.2
```

 **6. Zustellung an den Knoten** 

Basierend auf dem Eintrag in der Routing-Tabelle leitet der Router das Paket an den Hybridknoten (`10.80.0.2`) weiter. Wenn das Paket am Knoten ankommt, sieht es genauso aus wie beim Versand durch den EKS-Kubernetes-API-Server, wobei die Ziel-IP weiterhin die IP des Pods ist.

 **7. CNI-Verarbeitung** 

Der Netzwerk-Stack des Knotens empfängt das Paket und leitet es zur Verarbeitung an das CNI weiter, da er erkennt, dass die Ziel-IP nicht die eigene IP des Knotens ist. Das CNI erkennt, dass die Ziel-IP zu einem Pod gehört, der lokal auf diesem Knoten ausgeführt wird, und leitet das Paket über die entsprechenden virtuellen Schnittstellen an den richtigen Pod weiter:

```
Original packet -> node routing -> CNI -> Pod's network namespace
```

Der Webhook-Server im Pod empfängt die Anfrage und verarbeitet sie.

### Antwort
<a name="_response_5"></a>

Nachdem der Webhook-Pod die Anfrage verarbeitet hat, sendet er eine Antwort zurück, die demselben Pfad in umgekehrter Reihenfolge folgt:

 **7. Pod sendet Antwort** 

Der Webhook-Pod erstellt ein Antwortpaket mit seiner eigenen IP-Adresse als Quelle und dem ursprünglichen Anforderer (der EKS-Steuerebenen-ENI) als Ziel:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.23 | Src: 8443           |                 |
| Dst: 10.0.0.132 | Dst: 41892          |                 |
+-----------------+---------------------+-----------------+
```

Das CNI erkennt, dass dieses Paket an ein externes Netzwerk (nicht an einen lokalen Pod) gesendet wird, und leitet das Paket unter Beibehaltung der ursprünglichen Quell-IP-Adresse an den Netzwerk-Stack des Knotens weiter.

 **6. Knoten-Netzwerkverarbeitung** 

Der Knoten stellt fest, dass sich die Ziel-IP (`10.0.0.132`) nicht im lokalen Netzwerk befindet, und leitet das Paket an sein Standard-Gateway (den lokalen Router) weiter.

 **5. Lokales Router-Routing** 

Der lokale Router fragt seine Routing-Tabelle ab und stellt fest, dass die Ziel-IP (`10.0.0.132`) zum VPC CIDR (`10.0.0.0/16`) gehört. Er leitet das Paket an das Gateway weiter, das eine Verbindung zu AWS herstellt.

 **4. Grenzüberschreitender Transit** 

Das Paket wird über dieselbe On-Premises-VPC-Verbindung zurückgesendet und durchquert die Cloud-Grenze in umgekehrter Richtung.

 **3. VPC-Routing** 

Wenn das Paket in der VPC ankommt, erkennen die Routing-Tabellen, dass die Ziel-IP zu einem Subnetz innerhalb der VPC gehört. Das Paket wird innerhalb der VPC entsprechend weitergeleitet.

 **2. und 1. ENI-Empfang der EKS-Steuerebene** 

Das Paket erreicht das ENI, das mit dem EKS-Kubernetes-API-Server verbunden ist, und schließt damit den Rundlauf ab. Der API-Server empfängt die Webhook-Antwort und setzt die Verarbeitung der ursprünglichen API-Anforderung basierend auf dieser Antwort fort.

Dieser Verkehrsfluss zeigt, warum der Remote-Pod ordnungsgemäß konfiguriert und geroutet werden CIDRs muss:
+ Die VPC muss über Routen für den Remote-Pod verfügen, die auf das lokale Gateway CIDRs verweisen
+ Ihr lokales Netzwerk muss über Routen für Pods verfügen CIDRs , die den Datenverkehr zu den spezifischen Knoten weiterleiten, auf denen diese Pods gehostet werden
+ Ohne diese Routing-Konfiguration wären Webhooks und andere ähnliche Services, die in Pods auf Hybridknoten ausgeführt werden, von der EKS-Steuerebene aus nicht erreichbar.

## Pod-to-Pod läuft auf Hybridknoten
<a name="hybrid-nodes-concepts-traffic-flows-pod-to-pod"></a>

![\[Pod-zu-Pod-Ausführung auf Hybridknoten\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-nodes-pod-to-pod.png)


In diesem Abschnitt wird erläutert, wie Pods, die in verschiedenen Hybridknoten ausgeführt werden, miteinander kommunizieren. In diesem Beispiel wird davon ausgegangen, dass Ihr CNI VXLAN für die Kapselung verwendet, was bei Cilium CNIs oder Calico üblich ist. Der Gesamtprozess ist bei anderen Kapselungsprotokollen wie Geneve oder ähnlich. IP-in-IP

### Anforderung
<a name="_request_6"></a>

 **1. Pod A initiiert die Kommunikation** 

Pod A (`10.85.1.56`) on Knoten 1 möchte Datenverkehr an Pod B (`10.85.2.67`) an Knoten 2 senden. Das ursprüngliche Paket sieht folgendermaßen aus:

```
+------------------+-----------------+-------------+-----------------+
| Ethernet Header  | IP Header       | TCP/UDP     | Payload         |
| Src: Pod A MAC   | Src: 10.85.1.56 | Src: 43721  |                 |
| Dst: Gateway MAC | Dst: 10.85.2.67 | Dst: 8080   |                 |
+------------------+-----------------+-------------+-----------------+
```

 **2. CNI fängt das Paket ab und verarbeitet es** 

Wenn das Paket von Pod A seinen Netzwerk-Namespace verlässt, wird es vom CNI abgefange Das CNI konsultiert seine Routing-Tabelle und stellt fest: – Die Ziel-IP (`10.85.2.67`) gehört zum Pod-CIDR. – Diese IP befindet sich nicht auf dem lokalen Knoten, sondern gehört zu Knoten 2 (`10.80.0.3`). – Das Paket muss mit VXLAN gekapselt werden.

Die Entscheidung für die Kapselung ist von entscheidender Bedeutung, da das zugrunde liegende physische Netzwerk nicht weiß, wie der Pod CIDRs direkt weitergeleitet wird — es weiß nur, wie der Verkehr zwischen den Knoten weitergeleitet wird. IPs

Das CNI kapselt das gesamte ursprüngliche Paket in einem VXLAN-Frame. Dadurch wird effektiv ein „Paket innerhalb eines Pakets“ mit neuen Headern erstellt:

```
+-----------------+----------------+--------------+------------+---------------------------+
| Outer Ethernet  | Outer IP       | Outer UDP    | VXLAN      | Original Pod-to-Pod       |
| Src: Node1 MAC  | Src: 10.80.0.2 | Src: Random  | VNI: 42    | Packet (unchanged         |
| Dst: Router MAC | Dst: 10.80.0.3 | Dst: 8472    |            | from above)               |
+-----------------+----------------+--------------+------------+---------------------------+
```

Wichtige Punkte zu dieser Kapselung: – Das äußere Paket ist von Knoten 1 (`10.80.0.2`) an Knoten 2 (`10.80.0.3`) adressiert. – Der UDP-Port `8472` ist der VXLAN-Port, den Cilium standardmäßig verwendet. – Die VXLAN-Netzwerk-ID (VNI) identifiziert, zu welchem Überlagerungsnetzwerk dieses Paket gehört. – Das gesamte Originalpaket (mit der IP-Adresse von Pod A als Quelle und der IP-Adresse von Pod B als Ziel) bleibt im Inneren unverändert

Das gekapselte Paket gelangt nun in den regulären Netzwerk-Stack von Knoten 1 und wird wie jedes andere Paket verarbeitet:

1.  **Knoten-Netzwerkverarbeitung**: Der Netzwerk-Stack von Knoten 1 leitet das Paket basierend auf seinem Ziel weiter (`10.80.0.3`)

1.  **Bereitstellung im lokalen Netzwerk**:
   + Wenn sich beide Knoten im selben Layer-2-Netzwerk befinden, wird das Paket direkt an Knoten 2 gesendet
   + Wenn sie sich in unterschiedlichen Subnetzen befinden, wird das Paket zuerst an den lokalen Router weitergeleitet

1.  **Router-Verarbeitung**: Der Router leitet das Paket anhand seiner Routing-Tabelle weiter und übergibt es an Knoten 2

 **3. Verarbeitung des empfangenden Knotens** 

Wenn das gekapselte Paket bei Knoten 2 (`10.80.0.3`) ankommt:

1. Der Netzwerk-Stack des Knotens empfängt es und identifiziert es als VXLAN-Paket (UDP-Port `4789`).

1. Das Paket wird zur Verarbeitung an die VXLAN-Schnittstelle des CNI weitergeleitet

 **4. VXLAN-Entkapselung** 

Das CNI auf Knoten 2 verarbeitet das VXLAN-Paket:

1. Es entfernt die äußeren Header (Ethernet, IP, UDP und VXLAN).

1. Es extrahiert das ursprüngliche innere Paket

1. Das Paket hat nun wieder seine ursprüngliche Form:

```
+------------------+-----------------+-------------+-----------------+
| Ethernet Header  | IP Header       | TCP/UDP     | Payload         |
| Src: Pod A MAC   | Src: 10.85.1.56 | Src: 43721  |                 |
| Dst: Gateway MAC | Dst: 10.85.2.67 | Dst: 8080   |                 |
+------------------+-----------------+-------------+-----------------+
```

Das CNI auf Knoten 2 untersucht die Ziel-IP (`10.85.2.67`) und:

1. Identifiziert, dass diese IP zu einem lokalen Pod gehört

1. Leitet das Paket durch die entsprechenden virtuellen Schnittstellen

1. Liefert das Paket an den Netzwerk-Namespace von Pod B

### Antwort
<a name="_response_6"></a>

Wenn Pod B auf Pod A reagiert, verläuft der gesamte Prozess in umgekehrter Reihenfolge:

1. Pod B sendet ein Paket an Pod A (`10.85.1.56`)

1. Das CNI von Knoten 2 kapselt ihn mit VXLAN und legt das Ziel auf Knoten 1 (`10.80.0.2`) fest

1. Das gekapselte Paket wird an Knoten 1 übermittelt

1. Knoten 1 entkapselt die CNI und übermittelt die ursprüngliche Antwort an Pod A

## Pods auf Cloud-Knoten zu Pods auf Hybridknoten (Ost-West–Datenverkehr)
<a name="hybrid-nodes-concepts-traffic-flows-east-west"></a>

![\[Pods auf Cloud-Knoten zu Pods auf Hybridknoten\]](http://docs.aws.amazon.com/de_de/eks/latest/userguide/images/hybrid-nodes-east-west.png)


### Anforderung
<a name="_request_7"></a>

 **1. Pod A initiiert die Kommunikation** 

Pod A (`10.0.0.56`) auf dem EC2 Node möchte Traffic an Pod B (`10.85.1.56`) auf dem Hybrid-Node senden. Das ursprüngliche Paket sieht folgendermaßen aus:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.56  | Src: 52390 (random) |                 |
| Dst: 10.85.1.56 | Dst: 8080           |                 |
+-----------------+---------------------+-----------------+
```

Mit der VPC CNI hat Pod A eine IP von der VPC CIDR und ist direkt mit einer ENI auf der Instance verbunden. EC2 Der Netzwerk-Namespace des Pods ist mit dem VPC-Netzwerk verbunden, sodass das Paket direkt in die VPC-Routing-Infrastruktur gelangt.

 **2. VPC-Routing** 

Die VPC-Routentabelle enthält eine spezifische Route für den Remote Pod CIDR (`10.85.0.0/16`), die diesen Verkehr an das Gateway weiterleitet: VPC-to-onprem

```
Destination     Target
10.0.0.0/16     local
10.85.0.0/16    vgw-id (VPC-to-onprem gateway)
```

Basierend auf dieser Routing-Regel wird das Paket an das Gateway weitergeleitet, das mit Ihrem On-Premises-Netzwerk verbunden ist.

 **3. Grenzüberschreitender Transit** 

Das Gateway überträgt das Paket über die Cloud-Grenze hinweg über Ihre vorhandene Verbindung (z. B. Direct Connect oder VPN) an Ihr On-Premises-Netzwerk. Das Paket behält während der gesamten Übertragung seine ursprünglichen Quell- und Ziel-IP-Adressen bei.

 **4. On-Premises-Netzwerkempfang** 

Das Paket erreicht Ihren lokalen On-Premises-Router. Der Router fragt seine Routing-Tabelle ab, um den nächsten Hop zum Erreichen der Adresse 10.85.1.56 zu ermitteln. Ihr lokaler Router muss über Routen für den Pod verfügen CIDRs , die den Datenverkehr zum entsprechenden Hybridknoten weiterleiten.

Die Tabelle des Routers enthält einen Eintrag, der angibt, dass das `10.85.1.0/24`-Subnetz über den Hybridknoten mit der IP `10.80.0.2` erreichbar ist:

```
Destination     Next Hop
10.85.1.0/24    10.80.0.2
```

 **5. Knoten-Netzwerkverarbeitung** 

Der Router leitet das Paket an den Hybridknoten weiter (`10.80.0.2`). Wenn das Paket am Knoten ankommt, enthält es weiterhin die IP-Adresse von Pod A als Quelle und die IP-Adresse von Pod B als Ziel.

 **6. CNI-Verarbeitung** 

Der Netzwerk-Stack des Knotens empfängt das Paket und leitet es, da die Ziel-IP-Adresse nicht seine eigene ist, zur Verarbeitung an das CNI weiter. Das CNI erkennt, dass die Ziel-IP zu einem Pod gehört, der lokal auf diesem Knoten ausgeführt wird, und leitet das Paket über die entsprechenden virtuellen Schnittstellen an den richtigen Pod weiter:

```
Original packet -> node routing -> CNI -> Pod B's network namespace
```

Pod B empfängt das Paket und verarbeitet es entsprechend den Anforderungen.

### Antwort
<a name="_response_7"></a>

 **6. Pod B sendet Antwort** 

Pod B erstellt ein Antwortpaket mit seiner eigenen IP als Quelle und der IP von Pod A als Ziel:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 8080           |                 |
| Dst: 10.0.0.56  | Dst: 52390          |                 |
+-----------------+---------------------+-----------------+
```

Das CNI erkennt, dass dieses Paket für ein externes Netzwerk bestimmt ist, und leitet es an den Netz-Stack des Knotens weiter.

 **5. Knoten-Netzwerkverarbeitung** 

Der Knoten stellt fest, dass die Ziel-IP (`10.0.0.56`) nicht zum lokalen Netzwerk gehört und leitet das Paket an sein Standard-Gateway (den lokalen Router) weiter.

 **4. Lokales Router-Routing** 

Der lokale Router fragt seine Routing-Tabelle ab und stellt fest, dass die Ziel-IP (`10.0.0.56`) zum VPC CIDR (`10.0.0.0/16`) gehört. Er leitet das Paket an das Gateway weiter, das eine Verbindung zu AWS herstellt.

 **3. Grenzüberschreitender Transit** 

Das Paket wird über dieselbe On-Premises-VPC-Verbindung zurückgesendet und durchquert die Cloud-Grenze in umgekehrter Richtung.

 **2. VPC-Routing** 

Wenn das Paket in der VPC ankommt, erkennt das Routing-System, dass die Ziel-IP zu einem Subnetz innerhalb der VPC gehört. Das Paket wird durch das VPC-Netzwerk an die EC2 Instance weitergeleitet, die Pod A hostet.

 **1. Pod A empfängt Antwort** 

Das Paket kommt bei der EC2 Instance an und wird über das angehängte ENI direkt an Pod A übermittelt. Da die VPC CNI für Pods in der VPC kein Überlagerungsnetzwerk verwendet, ist keine zusätzliche Entkapselung erforderlich – das Paket kommt mit intakten Original-Headern an.

Dieser Ost-West-Verkehrsfluss zeigt, warum der Remote-Pod ordnungsgemäß konfiguriert und aus beiden Richtungen routbar sein CIDRs muss:
+ Die VPC muss über Routen für den Remote-Pod verfügen, die auf das lokale Gateway CIDRs verweisen
+ Ihr lokales Netzwerk muss über Routen für Pods verfügen CIDRs , die den Datenverkehr zu den spezifischen Knoten weiterleiten, auf denen diese Pods gehostet werden.

# `nodeadm`-Referenz für Hybridknoten
<a name="hybrid-nodes-nodeadm"></a>

Die Amazon EKS Hybrid Nodes CLI (`nodeadm`) vereinfacht die Installation, Konfiguration, Registrierung und Deinstallation der Hybridknoten-Komponenten. Sie können `nodeadm` in Ihre Betriebssystem-Images einbinden, um das Bootstrapping von Hybridknoten zu automatisieren. Weitere Informationen finden Sie unter [Vorbereitung des Betriebssystems für Hybridknoten](hybrid-nodes-os.md).

Die `nodeadm` Version für Hybridknoten unterscheidet sich von der `nodeadm` Version, die für das Bootstrapping von EC2 Amazon-Instances als Knoten in Amazon EKS-Clustern verwendet wird. Befolgen Sie die Dokumentation und Referenzen für die entsprechende `nodeadm`-Version. Diese Dokumentationsseite bezieht sich auf die `nodeadm`-Version für Hybridknoten.

Der Quellcode für die Hybridknoten `nodeadm` ist im https://github.com/aws/ GitHub EKS-Hybrid-Repository veröffentlicht.

**Wichtig**  
Sie müssen `nodeadm` mit einem Benutzer arbeiten, der über Rechte verfügt root/sudo .

## Herunterladen von `nodeadm`
<a name="_download_nodeadm"></a>

Die Hybridknoten-Version von `nodeadm` wird in Amazon S3 gehostet, das von Amazon CloudFront bereitgestellt wird. Um die Installation auf jedem On-Premises-Host `nodeadm` durchzuführen, können Sie den folgenden Befehl von Ihren On-Premises-Hosts aus ausführen.

 **Für x86\$164-Hosts** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'
```

 **Für ARM-Hosts** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'
```

Fügen Sie der heruntergeladenen Binärdatei auf jedem Host die Berechtigung zum Ausführen von Dateien hinzu.

```
chmod +x nodeadm
```

## `nodeadm install`
<a name="_nodeadm_install"></a>

Der `nodeadm install`-Befehl wird verwendet, um die Artefakte und Abhängigkeiten zu installieren, die zum Ausführen und Verbinden von Hybridknoten mit einem Amazon-EKS-Cluster erforderlich sind. Der `nodeadm install`-Befehl kann einzeln auf jedem Hybridknoten oder während Image-Entwicklungs-Pipelines ausgeführt werden, um die Abhängigkeiten der Hybridknoten in Betriebssystem-Images vorzuinstallieren.

 **Usage** 

```
nodeadm install [KUBERNETES_VERSION] [flags]
```

 **Positionelle Argumente** 

(Erforderlich) `KUBERNETES_VERSION` Die zu installierende Haupt- und Nebenversion von EKS Kubernetes, zum Beispiel `1.32` 

 **Flags** 


| Name | Erforderlich | Description | 
| --- | --- | --- | 
|   `-p`,  `--credential-provider`   |  TRUE  |  Zu installierender Anmeldeinformationsanbieter. Unterstützte Werte sind `iam-ra` und `ssm`. Weitere Informationen finden Sie unter [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md).  | 
|   `-s`,  `--containerd-source`   |  FALSE  |  Quelle für `containerd`. `nodeadm` unterstützt die Installation von `containerd` aus der Betriebssystemverteilung, Docker-Pakete und das Überspringen der `containerd`-Installation.  **Werte**   `distro`- Dies ist der Standardwert. `nodeadm`installiert das neueste vom Node-Betriebssystem verteilte `containerd` Paket, das mit der EKS Kubernetes-Version kompatibel ist. `distro`ist kein unterstützter Wert für Red Hat Enterprise Linux (RHEL) -Betriebssysteme.  `docker`- installiert `nodeadm` das neueste von Docker erstellte und vertriebene `containerd` Paket, das mit der EKS Kubernetes-Version kompatibel ist. `docker`ist kein unterstützter Wert für Amazon Linux 2023.  `none` – `nodeadm` installiert das `containerd`-Paket nicht. Sie müssen `containerd` manuell installieren, bevor Sie `nodeadm init` ausführen.  | 
|   `-r`,  `--region`   |  FALSE  |  Gibt die AWS Region für das Herunterladen von Artefakten wie dem SSM-Agenten an. Standardeinstellung: `us-west-2`.  | 
|   `-t`,  `--timeout`   |  FALSE  |  Maximale Dauer des Installationsbefehls. Die Eingabe erfolgt im Zeitdauerformat. Zum Beispiel `1h23m`. Die Standard-Zeitüberschreitung für den Download beim Installationsbefehl beträgt 20 Minuten.  | 
|   `-h`, `--help`   |  FALSE  |  Zeigt eine Hilfemeldung mit verfügbaren Flag-, Unterbefehls- und Positionswertparametern an.  | 

 **Beispiele** 

Installieren Sie die Kubernetes-Version `1.32` mit AWS Systems Manager (SSM) als Anmeldeinformationsanbieter

```
nodeadm install 1.32 --credential-provider ssm
```

Installieren Sie die Kubernetes-Version `1.32` mit AWS Systems Manager (SSM) als Anmeldeinformationsanbieter und Docker als Container-Quelle mit einem Download-Timeout von 20 Minuten.

```
nodeadm install 1.32 --credential-provider ssm --containerd-source docker --timeout 20m
```

Installieren Sie die Kubernetes-Version mit IAM Roles Anywhere als Anmeldeinformationsanbieter `1.32` AWS 

```
nodeadm install 1.32 --credential-provider iam-ra
```

## `nodeadm config check`
<a name="_nodeadm_config_check"></a>

Der `nodeadm config check`-Befehl überprüft die angegebene Knotenkonfiguration auf Fehler. Mit diesem Befehl kann die Richtigkeit einer Hybridknoten-Konfigurationsdatei überprüft und validiert werden.

 **Usage** 

```
nodeadm config check [flags]
```

 **Flags** 


| Name | Erforderlich | Description | 
| --- | --- | --- | 
|   `-c`,  `--config-source`   |  TRUE  |  Quelle der nodeadm-Konfiguration. Bei Hybridknoten sollte die Eingabe einer URI mit Dateischema folgen.  | 
|   `-h`, `--help`   |  FALSE  |  Zeigt eine Hilfemeldung mit verfügbaren Flag-, Unterbefehls- und Positionswertparametern an.  | 

 **Beispiele** 

```
nodeadm config check -c file://nodeConfig.yaml
```

## `nodeadm init`
<a name="_nodeadm_init"></a>

Der `nodeadm init`-Befehl startet und verbindet den Hybridknoten mit dem konfigurierten Amazon-EKS-Cluster. Einzelheiten zur Konfiguration der `nodeConfig.yaml`-Datei finden Sie unter [Knotenkonfiguration für SSM-Hybridaktivierungen](#hybrid-nodes-node-config-ssm) oder [Knotenkonfiguration für IAM Roles Anywhere](#hybrid-nodes-node-config-iamra).

 **Usage** 

```
nodeadm init [flags]
```

 **Flags** 


| Name | Erforderlich | Description | 
| --- | --- | --- | 
|   `-c`,  `--config-source`   |  TRUE  |  Quelle der `nodeadm`-Konfiguration. Bei Hybridknoten sollte die Eingabe einer URI mit Dateischema folgen.  | 
|   `-s`,  `--skip`   |  FALSE  |  Zu überspringende Phasen von `init`. Es wird nicht empfohlen, eine der Phasen zu überspringen, es sei denn, dies trägt zur Behebung eines Problems bei.  **Werte**   `install-validation` überspringt die Überprüfung, ob der vorherige Installationsbefehl erfolgreich ausgeführt wurde.  `cni-validation` überspringt die Überprüfung, ob die VXLAN-Ports von Cilium oder Calico CNI geöffnet sind, wenn die Firewall auf dem Knoten aktiviert ist.  `node-ip-validation` überspringt die Überprüfung, ob die Knoten-IP innerhalb eines CIDR in den Netzwerken der Fern-Knoten liegt.  | 
|   `-h`, `--help`   |  FALSE  |  Zeigt eine Hilfemeldung mit verfügbaren Flag-, Unterbefehls- und Positionswertparametern an.  | 

 **Beispiele** 

```
nodeadm init -c file://nodeConfig.yaml
```

## `nodeadm upgrade`
<a name="_nodeadm_upgrade"></a>

Der `nodeadm upgrade`-Befehl aktualisiert alle installierten Artefakte auf die neueste Version und führt einen Bootstrapping des Knotens durch, um die aktualisierten Artefakte zu konfigurieren und dem EKS-Cluster in AWS beizutreten. Ein Upgrade ist ein Befehl zur Unterbrechung der auf dem Knoten ausgeführten Workloads. Verschieben Sie Ihre Workloads vor dem Upgrade auf einen anderen Knoten.

 **Usage** 

```
nodeadm upgrade [KUBERNETES_VERSION] [flags]
```

 **Positionelle Argumente** 

(Erforderlich) `KUBERNETES_VERSION` Die zu installierende Haupt- und Nebenversion von EKS Kubernetes, zum Beispiel `1.32` 

 **Flags** 


| Name | Erforderlich | Description | 
| --- | --- | --- | 
|   `-c`,  `--config-source`   |  TRUE  |  Quelle der `nodeadm`-Konfiguration. Bei Hybridknoten sollte die Eingabe einer URI mit Dateischema folgen.  | 
|   `-t`,  `--timeout`   |  FALSE  |  Zeitüberschreitung beim Herunterladen von Artefakten. Die Eingabe erfolgt im Zeitdauerformat. Beispielsweise 1 Stunde und 23 Minuten Die Standard-Zeitüberschreitung für den Download des Upgrade-Befehls beträgt 10 Minuten.  | 
|   `-s`,  `--skip`   |  FALSE  |  Zu überspringende Phasen des Upgrades. Es wird nicht empfohlen, eine der Phasen zu überspringen, es sei denn, dies trägt zur Behebung eines Problems bei  **Werte**   `pod-validation` überspringt die Überprüfung, ob alle Pods auf dem Knoten ausgeführt werden, mit Ausnahme von Daemon-Sets und statischen Pods.  `node-validation` überspringt die Überprüfung, ob der Knoten abgesperrt wurde.  `init-validation` überspringt die Überprüfung, ob der Knoten erfolgreich initialisiert wurde, bevor das Upgrade ausgeführt wird.  `containerd-major-version-upgrade`verhindert Container-Hauptversions-Upgrades während des Knoten-Upgrades.  | 
|   `-h`, `--help`   |  FALSE  |  Zeigt eine Hilfemeldung mit verfügbaren Flag-, Unterbefehls- und Positionswertparametern an.  | 

 **Beispiele** 

```
nodeadm upgrade 1.32 -c file://nodeConfig.yaml
```

```
nodeadm upgrade 1.32 -c file://nodeConfig.yaml --timeout 20m
```

## `nodeadm uninstall`
<a name="_nodeadm_uninstall"></a>

Der `nodeadm uninstall`-Befehl stoppt und entfernt die während `nodeadm install` installierten Artefakte `nodeadm`, einschließlich kubelet und containerd. Beachten Sie, dass der Deinstallations-Befehl Ihre Hybridknoten nicht aus Ihrem Cluster entfernt oder löscht. Sie müssen die Entleerungs- und Löschvorgänge separat ausführen. Weitere Informationen finden Sie unter [Hybridknoten entfernen](hybrid-nodes-remove.md). Standardmäßig wird `nodeadm uninstall` nicht fortgesetzt, wenn auf dem Knoten noch Pods vorhanden sind. Ebenso entfernt `nodeadm uninstall` keine CNI-Abhängigkeiten oder Abhängigkeiten anderer Kubernetes-Add-Ons, die Sie in Ihrem Cluster ausführen. Informationen zum vollständigen Entfernen der CNI-Installation von Ihrem Host finden Sie in den Anweisungen unter [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md). Wenn Sie AWS SSM-Hybrid-Aktivierungen als Anbieter für lokale Anmeldeinformationen verwenden, werden Ihre Hosts mit dem `nodeadm uninstall` Befehl als SSM-verwaltete Instanzen deregistriert. AWS 

 **Usage** 

```
nodeadm uninstall [flags]
```

 **Flags** 


| Name | Erforderlich | Description | 
| --- | --- | --- | 
|   `-s`,  `--skip`   |  FALSE  |  Zu überspringende Phasen der Deinstallation. Es wird nicht empfohlen, eine der Phasen zu überspringen, es sei denn, dies trägt zur Behebung eines Problems bei.  **Werte**   `pod-validation` überspringt die Überprüfung, ob alle Pods auf dem Knoten ausgeführt werden, mit Ausnahme von Daemon-Sets und statischen Pods.  `node-validation` überspringt die Überprüfung, ob der Knoten abgesperrt wurde.  `init-validation` überspringt die Überprüfung, ob der Knoten erfolgreich initialisiert wurde, bevor die Deinstallation ausgeführt wird.  | 
|   `-h`,  `--help`   |  FALSE  |  Zeigt eine Hilfemeldung mit verfügbaren Flag-, Unterbefehls- und Positionswertparametern an.  | 
|   `-f`,  `--force`   |  FALSE  |  Erzwingen Sie das Löschen zusätzlicher Verzeichnisse, die möglicherweise verbleibende Dateien von Kubernetes- und CNI-Komponenten enthalten.  **WARNUNG**  Dadurch werden alle Inhalte in den Standardverzeichnissen von Kubernetes und CNI (`/var/lib/cni`, `/etc/cni/net.d` usw.) gelöscht. Verwenden Sie dieses Flag nicht, wenn Sie Ihre eigenen Daten an diesen Speicherorten speichern. Ab nodeadm `v1.0.9` löscht der `./nodeadm uninstall --skip node-validation,pod-validation --force`-Befehl das `/var/lib/kubelet`-Verzeichnis nicht mehr. Dies liegt daran, dass es Pod-Volumes und Volume- Unterpfad-Verzeichnisse enthalten kann, die manchmal das eingebundene Knoten-Dateisystem enthalten.  **Tipps zur sicheren Handhabung**  - Das Löschen von eingebundenen Pfaden kann zum versehentlichen Löschen des tatsächlich eingebundenen Dateisystems des Knotens führen. Bevor Sie das `/var/lib/kubelet`-Verzeichnis manuell löschen, überprüfen Sie sorgfältig alle aktiven Einbindungen und binden Sie alle Volumes sicher aus, um Datenverlust zu vermeiden.  | 

 **Beispiele** 

```
nodeadm uninstall
```

```
nodeadm uninstall --skip node-validation,pod-validation
```

## `nodeadm debug`
<a name="_nodeadm_debug"></a>

Der `nodeadm debug`-Befehl kann zur Fehlerbehebung bei fehlerhaften oder falsch konfigurierten Hybridknoten verwendet werden. Es bestätigt, dass die folgenden Anforderungen erfüllt sind.
+ Der Knoten hat Netzwerkzugriff auf die zum Abrufen der Anmeldeinformationen erforderlichen AWS APIs 
+ Der Knoten ist in der Lage, AWS Anmeldeinformationen für die konfigurierte IAM-Rolle für Hybridknoten abzurufen.
+ Der Knoten verfügt über Netzwerkzugriff auf den EKS-Kubernetes-API-Endpunkt und die Gültigkeit des EKS-Kubernetes-API-Endpunktzertifikats,
+ Der Knoten kann sich beim EKS-Cluster authentifizieren, seine Identität im Cluster ist gültig und der Knoten hat Zugriff auf den EKS-Cluster über die für den EKS-Cluster konfigurierte VPC.

Wenn Fehler gefunden werden, werden in der Ausgabe des Befehls Schritte zur Fehlerbehebung vorgeschlagen. Bestimmte Validierungsschritte zeigen untergeordnete Prozesse an. Wenn diese fehlschlagen, wird die Ausgabe in einem stderr-Abschnitt unter dem Validierungsfehler angezeigt.

 **Usage** 

```
nodeadm debug [flags]
```

 **Flags** 


| Name | Erforderlich | Description | 
| --- | --- | --- | 
|   `-c`, `--config-source`   |  TRUE  |  Quelle der `nodeadm`-Konfiguration. Bei Hybridknoten sollte die Eingabe einer URI mit Dateischema folgen.  | 
|   `--no-color`   |  FALSE  |  Deaktiviert die Farbausgabe. Nützlich für die Automatisierung.  | 
|   `-h`, `--help`   |  FALSE  |  Zeigt eine Hilfemeldung mit verfügbaren Flag-, Unterbefehls- und Positionswertparametern an.  | 

 **Beispiele** 

```
nodeadm debug -c file://nodeConfig.yaml
```

## Speicherorte für Nodeadm-Dateien
<a name="_nodeadm_file_locations"></a>

### nodeadm-Installation
<a name="_nodeadm_install_2"></a>

Bei der Ausführung von `nodeadm install` werden die folgenden Dateien und Dateispeicherorte konfiguriert.


| Artefakt | Pfad | 
| --- | --- | 
|  CLI für IAM Roles Anywhere  |  /\$1signing\$1helper usr/local/bin/aws  | 
|  Kubelet-Binärdateien  |  /usr/bin/kubelet  | 
|  Kubectl-Binärdatei  |  usr/local/bin/kubectl  | 
|  ECR-Anmeldeinformationsanbieter  |  /etc/eks/image-credential-provider/ecr-Anmeldeinformationsanbieter  | 
|   AWS IAM-Authentifikator  |  /-iam-Authentifikator usr/local/bin/aws  | 
|  CLI für SSM-Einrichtung  |  /opt/ssm/ssm-setup-cli  | 
|  SSM-Agent  |  Auf Ubuntu -/-ssm-agent snap/amazon-ssm-agent/current/amazon Auf RHEL & AL2 023 -/-ssm-agent usr/bin/amazon  | 
|  Containerd  |  Auf Ubuntu & 023 -/ AL2usr/bin/containerd Auf RHEL – /bin/containerd  | 
|  Iptables  |  Auf Ubuntu & AL2 023 -/usr/sbin/iptables Auf RHEL – /sbin/iptables  | 
|  CNI-Plugins  |  /opt/cni/bin  | 
|  Nachverfolgung installierter Artefakte  |  /opt/nodeadm/tracker  | 

### nodeadm init
<a name="_nodeadm_init_2"></a>

Bei der Ausführung von `nodeadm init` werden die folgenden Dateien und Dateispeicherorte konfiguriert.


| Name | Pfad | 
| --- | --- | 
|  Kubelet kubeconfig  |  /var/lib/kubelet/kubeconfig  | 
|  Kubelet-Konfiguration  |  /.json etc/kubernetes/kubelet/config  | 
|  Kubelet-systemd-Einheit  |  /.dienst etc/systemd/system/kubelet  | 
|  Konfiguration des Image-Anmeldeinformationsanbieters  |  /.json etc/eks/image-credential-provider/config  | 
|  Kubelet-env-Datei  |  /etc/eks/kubelet/environment  | 
|  Kubelet Certs  |  /.crt etc/kubernetes/pki/ca  | 
|  Containerd-Konfiguration  |  /.toml etc/containerd/config  | 
|  Konfiguration der Containerd-Kernelmodule  |  /.conf etc/modules-load.d/contianerd  | 
|   AWS Konfigurationsdatei  |  /etc/aws/hybrid/config  | 
|   AWS Anmeldeinformationsdatei (wenn Anmeldeinformationsdatei aktiviert ist)  |  /eks-hybrid/.aws/credentials  | 
|   AWS Helper-Systemeinheit signieren  |  /etc/systemd/system/aws\$1signing\$1helper\$1update.service  | 
|  Sysctl-Konfigurationsdatei  |  /etc/sysctl.d/99-nodeadm.conf  | 
|  Ca-certificates  |  /etc/ssl/certs/ca-zertifikate.crt  | 
|  GPG-Schlüsseldatei  |  /etc/apt/keyrings/docker.asc  | 
|  Docker-Repo-Quelldatei  |  /.liste etc/apt/sources.list.d/docker  | 

## Knotenkonfiguration für SSM-Hybridaktivierungen
<a name="hybrid-nodes-node-config-ssm"></a>

Im Folgenden finden Sie ein Beispiel für die `nodeConfig.yaml` Verwendung von AWS SSM-Hybrid-Aktivierungen für Anmeldeinformationen für Hybridknoten.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

## Knotenkonfiguration für IAM Roles Anywhere
<a name="hybrid-nodes-node-config-iamra"></a>

Im Folgenden finden Sie ein Beispiel `nodeConfig.yaml` für AWS IAM Roles Anywhere für Anmeldeinformationen für Hybridknoten.

Wenn `nodeName` Sie AWS IAM Roles Anywhere als Ihren lokalen Anbieter für Anmeldeinformationen verwenden, müssen die in Ihrer `nodeadm` Konfiguration verwendeten Berechtigungen mit den Berechtigungen übereinstimmen, die Sie für Ihre IAM-Rolle für Hybrid Nodes festgelegt haben. Wenn Ihre Berechtigungen für die IAM-Rolle Hybrid Nodes beispielsweise nur zulassen, dass AWS IAM Roles Anywhere die Rolle übernimmt, wenn der Name der Rollensitzung dem CN des Host-Zertifikats entspricht, muss der `nodeName` in Ihrer `nodeadm` Konfiguration dem CN Ihrer Zertifikate entsprechen. Der von Ihnen verwendete `nodeName` kann nicht länger als 64 Zeichen sein. Weitere Informationen finden Sie unter [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md).

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:              # Name of the EKS cluster
    region:            # AWS Region where the EKS cluster resides
  hybrid:
    iamRolesAnywhere:
      nodeName:        # Name of the node
      trustAnchorArn:  # ARN of the IAM Roles Anywhere trust anchor
      profileArn:      # ARN of the IAM Roles Anywhere profile
      roleArn:         # ARN of the Hybrid Nodes IAM role
      certificatePath: # Path to the certificate file to authenticate with the IAM Roles Anywhere trust anchor
      privateKeyPath:  # Path to the private key file for the certificate
```

## Knotenkonfiguration zur Anpassung von kubelet (optional)
<a name="hybrid-nodes-nodeadm-kubelet"></a>

Sie können die kubelet-Konfiguration und Flags in Ihrer `nodeadm`-Konfiguration übergeben. Im folgenden Beispiel erfahren Sie, wie Sie eine zusätzliche Knotenbezeichnung `abc.amazonaws.com/test-label` und Konfiguration hinzufügen, um `shutdownGracePeriod` auf 30 Sekunden festzulegen.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  kubelet:
    config:           # Map of kubelet config and values
       shutdownGracePeriod: 30s
    flags:            # List of kubelet flags
       - --node-labels=abc.company.com/test-label=true
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

## Knotenkonfiguration zur Anpassung von containerd (optional)
<a name="_node_config_for_customizing_containerd_optional"></a>

Sie können eine benutzerdefinierte containerd-Konfiguration in Ihrer `nodeadm`-Konfiguration übergeben. Die containerd-Konfiguration für `nodeadm` akzeptiert Inline-TOML. Im folgenden Beispiel erfahren Sie, wie Sie containerd konfigurieren, um das Löschen entpackter Image-Ebenen im containerd-Inhaltsspeicher zu deaktivieren.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  containerd:
    config: |         # Inline TOML containerd additional configuration
       [plugins."io.containerd.grpc.v1.cri".containerd]
       discard_unpacked_layers = false
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

**Anmerkung**  
Die Containerversionen 1.x und 2.x verwenden unterschiedliche Konfigurationsformate. containerd 1.x verwendet die Konfigurationsversion 2, während Containerd 2.x die Konfigurationsversion 3 verwendet. Obwohl containerd 2.x weiterhin abwärtskompatibel mit Config Version 2 ist, wird Config Version 3 für eine optimale Leistung empfohlen. Überprüfen Sie Ihre Container-Version mit `containerd --version` oder überprüfen `nodeadm` Sie die Installationsprotokolle. Weitere Informationen zur Versionierung von Konfigurationen finden Sie unter https://containerd.io/releases/

Sie können auch die Containerd-Konfiguration verwenden, um die SELinux Unterstützung zu aktivieren. SELinux Wenn diese Option auf containerd aktiviert ist, stellen Sie sicher, dass Pods, die auf dem Knoten geplant sind, den richtigen SecurityContext haben und seLinuxOptions aktiviert sind. Weitere Informationen für die Konfiguration eines Sicherheitskontexts finden Sie in der [Kubernetes-Dokumentation](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).

**Anmerkung**  
Red Hat Enterprise Linux (RHEL) 8 und RHEL 9 sind standardmäßig SELinux aktiviert und auf dem Host auf Strict gesetzt. Amazon Linux 2023 ist standardmäßig SELinux aktiviert und auf den permissiven Modus eingestellt. Wenn auf dem Host auf den permissiven Modus gesetzt SELinux ist, blockiert die Aktivierung auf containerd keine Anfragen, sondern protokolliert sie entsprechend der SELinux Konfiguration auf dem Host.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  containerd:
    config: |         # Inline TOML containerd additional configuration
       [plugins."io.containerd.grpc.v1.cri"]
       enable_selinux = true
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

# Fehlerbehebung bei Hybridknoten
<a name="hybrid-nodes-troubleshooting"></a>

In diesem Thema werden einige gängige Fehler behandelt, die bei der Verwendung von Amazon EKS Hybrid Nodes auftreten können, sowie deren Behebung. Weitere Informationen zur Fehlerbehebung finden Sie unter [Beheben von Problemen mit Amazon-EKS-Clustern und -Knoten](troubleshooting.md) und dem [Knowledge Center-Tag für Amazon EKS](https://repost.aws/tags/knowledge-center/TA4IvCeWI1TE66q4jEj4Z9zg/amazon-elastic-kubernetes-service) auf * AWS re:POST*. Wenn Sie das Problem nicht lösen können, wenden Sie sich an den AWS Support.

 **Knoten-Fehlerbehebung mit `nodeadm debug`** Sie können den `nodeadm debug`-Befehl von Ihren Hybridknoten aus ausführen, um zu überprüfen, ob die Netzwerk- und Anforderungen an den Anmeldeinformationen erfüllt sind. Weitere Informationen zum `nodeadm debug`-Befehl finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md).

 **Probleme mit Ihren Hybridknoten mithilfe von Cluster-Erkenntnissen erkennen** Amazon EKS Cluster Insights umfasst *Erkenntnisprüfungen*, die gängige Probleme mit der Konfiguration von EKS-Hybridknoten in Ihrem Cluster erkennen. Sie können die Ergebnisse aller Insight-Checks über die AWS-Managementkonsole, AWS CLI und die anzeigen AWS SDKs. Weitere Informationen über Cluster-Erkenntnisse finden Sie unter [Vorbereitung auf Kubernetes-Versionsupgrades und Beheben von Fehlkonfigurationen mit Cluster-Einblicken](cluster-insights.md).

## Fehlerbehebung bei der Installation von Hybridknoten
<a name="hybrid-nodes-troubleshooting-install"></a>

Die folgenden Themen zur Fehlerbehebung beziehen sich auf die Installation der Abhängigkeiten der Hybridknoten auf Hosts mit dem `nodeadm install`-Befehl.

 ** `nodeadm`-Befehl fehlgeschlagen `must run as root` ** 

Der `nodeadm install`-Befehl muss mit einem Benutzer ausgeführt werden, der über Root- oder `sudo`-Berechtigungen auf Ihrem Host verfügt. Wenn Sie `nodeadm install` mit einem Benutzer ausführen, der nicht über Root- oder `sudo`-Berechtigungen verfügt, wird in der `nodeadm`-Ausgabe der folgende Fehler angezeigt.

```
"msg":"Command failed","error":"must run as root"
```

 **Verbindung zu Abhängigkeiten nicht möglich** 

Der Befehl `nodeadm install` installiert die für Hybridknoten erforderlichen Abhängigkeiten. Zu den Abhängigkeiten der Hybridknoten gehören`containerd`, `kubelet``kubectl`, und AWS SSM- oder AWS IAM Roles Anywhere-Komponenten. Sie müssen von Ihrem Ausführungsstandort von `nodeadm install` aus Zugriff haben, um diese Abhängigkeiten herunterzuladen. Weitere Informationen zur Liste der Speicherorte, auf die Sie zugreifen können müssen, finden Sie unter [Vorbereitung der Vernetzung für Hybridknoten](hybrid-nodes-networking.md). Wenn Sie keinen Zugriff haben, werden in der `nodeadm install`-Ausgabe Fehlermeldungen ähnlich den folgenden angezeigt.

```
"msg":"Command failed","error":"failed reading file from url: ...: max retries achieved for http request"
```

 **Paket-Manager konnte nicht aktualisiert werden** 

Der Befehl `nodeadm install` führt `apt update` oder `yum update` oder `dnf update` aus, bevor die Abhängigkeiten der Hybridknoten installiert werden. Wenn dieser Schritt nicht erfolgreich ist, werden möglicherweise Fehler ähnlich den folgenden angezeigt. Zur Behebung können Sie `apt update` oder `yum update` oder `dnf update` ausführen, bevor Sie `nodeadm install` ausführen, oder Sie können versuchen, `nodeadm install` erneut auszuführen.

```
failed to run update using package manager
```

 **Zeitüberschreitung oder Kontext-Frist überschritten** 

Wenn beim Ausführen von `nodeadm install` in verschiedenen Phasen des Installationsprozesses Probleme mit Fehlern auftreten, die auf eine Zeitüberschreitung oder eine überschrittene Kontextfrist hinweisen, liegt dies möglicherweise an einer langsamen Verbindung, welche die Installation der Abhängigkeiten der Hybridknoten vor Ablauf der Zeitüberschreitungen verhindert. Um diese Probleme zu umgehen, können Sie versuchen, das `--timeout`-Flag in `nodeadm` zu verwenden, um die Dauer der Zeitüberschreitungen für das Herunterladen der Abhängigkeiten zu verlängern.

```
nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER --timeout 20m0s
```

## Fehlerbehebung beim Verbinden von Hybridknoten
<a name="hybrid-nodes-troubleshooting-connect"></a>

Die Themen zur Fehlerbehebung in diesem Abschnitt beziehen sich auf den Prozess der Verbindung von Hybridknoten mit EKS-Clustern mithilfe des `nodeadm init`-Befehls.

 **Betriebsfehler oder nicht unterstütztes Schema** 

Wenn Sie bei der Ausführung von `nodeadm init` Fehler im Zusammenhang mit `operation error` oder `unsupported scheme` entdecken, überprüfen Sie Ihr `nodeConfig.yaml`, um sicherzustellen, dass es richtig formatiert und an `nodeadm` übergeben wird. Weitere Informationen zum Format und den Optionen für `nodeConfig.yaml` finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md).

```
"msg":"Command failed","error":"operation error ec2imds: GetRegion, request canceled, context deadline exceeded"
```

 **Für die IAM-Rolle für Hybridknoten fehlen Berechtigungen für die `eks:DescribeCluster`-Aktion** 

`nodeadm`Versucht bei der Ausführung`nodeadm init`, Informationen über Ihren EKS-Cluster zu sammeln, indem die `DescribeCluster` EKS-Aktion aufgerufen wird. Wenn Ihre IAM-Rolle Hybrid Nodes nicht über die Berechtigung für die `eks:DescribeCluster` Aktion verfügt, müssen Sie Ihren Kubernetes-API-Endpunkt, das Cluster-CA-Bundle und den IPv4 Service-CIDR in der Knotenkonfiguration übergeben, an die Sie bei der Ausführung übergeben`nodeadm`. `nodeadm init` Weitere Informationen zu den erforderlichen Berechtigungen für die IAM-Rolle für Hybridknoten finden Sie unter [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md).

```
"msg":"Command failed","error":"operation error EKS: DescribeCluster, https response error StatusCode: 403 ... AccessDeniedException"
```

 **Für die IAM-Rolle für Hybridknoten fehlen Berechtigungen für die `eks:ListAccessEntries`-Aktion** 

`nodeadm`Versucht bei der Ausführung zu überprüfen`nodeadm init`, ob Ihr EKS-Cluster über einen Zugriffseintrag des Typs verfügt, der mit der IAM-Rolle Hybrid Nodes `HYBRID_LINUX` verknüpft ist, indem die EKS-Aktion aufgerufen wird. `ListAccessEntries` Wenn Ihre Hybrid Nodes IAM-Rolle nicht über die Berechtigung für die `eks:ListAccessEntries` Aktion verfügt, müssen Sie das `--skip cluster-access-validation` Flag übergeben, wenn Sie den Befehl ausführen. `nodeadm init` Weitere Informationen zu den erforderlichen Berechtigungen für die IAM-Rolle für Hybridknoten finden Sie unter [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md).

```
"msg":"Command failed","error":"operation error EKS: ListAccessEntries, https response error StatusCode: 403 ... AccessDeniedException"
```

 **Knoten-IP nicht im CIDR des Fern-Knotennetzwerks** 

Bei der Ausführung kann ein Fehler auftreten`nodeadm init`, wenn sich die IP-Adresse des Knotens nicht im angegebenen Remote-Knoten-Netzwerk CIDRs befindet. Der Fehler sieht in etwa wie im folgenden Beispiel aus:

```
node IP 10.18.0.1 is not in any of the remote network CIDR blocks [10.0.0.0/16 192.168.0.0/16]
```

Dieses Beispiel zeigt einen Knoten mit IP 10.18.0.1, der versucht, einem Cluster mit dem Remote-Netzwerk CIDRs 10.0.0.0/16 und 192.168.0.0/16 beizutreten. Der Fehler tritt auf, weil 10.18.0.1 nicht in einem der Bereiche liegt.

Bestätigen Sie, dass Sie Ihr `RemoteNodeNetworks` richtig konfiguriert haben, um alle Knoten-IP-Adressen einzuschließen. Weitere Informationen zur Netzwerkkonfiguration finden Sie unter [Vorbereitung der Vernetzung für Hybridknoten](hybrid-nodes-networking.md).
+ Führen Sie den folgenden Befehl in der Region aus, in der sich Ihr Cluster befindet, um Ihre `RemoteNodeNetwork`-Konfigurationen zu überprüfen. Überprüfen Sie, ob die in der Ausgabe aufgeführten CIDR-Blöcke den IP-Bereich Ihres Knotens enthalten und mit den in der Fehlermeldung aufgeführten CIDR-Blöcken übereinstimmen. Wenn sie nicht übereinstimmen, stellen Sie sicher, dass der Cluster-Name und die Region in Ihrem `nodeConfig.yaml` mit dem gewünschten Cluster übereinstimmen.

```
aws eks describe-cluster --name CLUSTER_NAME --region REGION_NAME --query cluster.remoteNetworkConfig.remoteNodeNetworks
```
+ Überprüfen Sie, ob Sie mit dem gewünschten Knoten arbeiten:
  + Bestätigen Sie, dass Sie sich auf dem richtigen Knoten befinden, indem Sie prüfen, ob dessen Hostname und IP-Adresse mit denen übereinstimmen, die Sie beim Cluster registrieren möchten.
  + Bestätigen Sie, dass sich dieser Knoten im korrekten On-Premises-Netzwerk befindet (das Netzwerk, dessen CIDR-Bereich während der Cluster-Einrichtung als `RemoteNodeNetwork` registriert wurde).

Wenn Ihre Knoten-IP immer noch nicht Ihren Erwartungen entspricht, überprüfen Sie Folgendes:
+ Wenn Sie IAM Roles Anywhere verwenden, führt `kubelet` eine DNS-Abfrage für IAM Roles Anywhere `nodeName` durch und verwenden Sie eine mit dem Knotennamen verknüpfte IP-Adresse, sofern verfügbar. Wenn Sie DNS-Einträge für Ihre Knoten verwalten, stellen Sie sicher, dass diese Einträge auf Ihr Remote-Knotennetzwerk verweisen. IPs CIDRs
+ Wenn Ihr Knoten über mehrere Netzwerkschnittstellen verfügt, wählen Sie `kubelet` möglicherweise standardmäßig eine Schnittstelle mit einer IP-Adresse außerhalb Ihres Remote-Knoten-Netzwerks CIDRs aus. Um eine andere Schnittstelle zu verwenden, geben Sie deren IP-Adresse mithilfe des Flags `--node-ip` `kubelet` in Ihrem `nodeConfig.yaml` an. Weitere Informationen finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md). Sie können die Netzwerkschnittstellen und IP-Adressen Ihres Knotens anzeigen, indem Sie den folgenden Befehl auf Ihrem Knoten ausführen:

```
ip addr show
```

 **Hybridknoten werden im EKS-Cluster nicht angezeigt** 

Wenn Sie `nodeadm init` ausgeführt haben und es abgeschlossen wurde, Ihre Hybridknoten jedoch nicht in Ihrem Cluster angezeigt werden, liegen möglicherweise Probleme mit der Netzwerkverbindung zwischen Ihren Hybridknoten und der EKS-Steuerebene vor. Möglicherweise haben Sie die erforderlichen Sicherheitsgruppenberechtigungen nicht konfiguriert oder Sie verfügen möglicherweise nicht über die erforderliche Zuordnung Ihrer IAM-Rolle für Hybridknoten zur rollenbasierten Zugriffskontrolle (RBAC) von Kubernetes. Sie können den Debugging-Prozess starten, indem Sie den Status von `kubelet` und die `kubelet`-Protokolle mit den folgenden Befehlen überprüfen. Führen Sie die folgenden Befehle von den Hybridknoten aus, die Ihrem Cluster nicht beitreten konnten.

```
systemctl status kubelet
```

```
journalctl -u kubelet -f
```

 **Kommunikation mit Cluster nicht möglich** 

Wenn Ihr Hybridknoten nicht mit der Cluster-Steuerebene kommunizieren konnte, werden möglicherweise Protokolle ähnlich den folgenden angezeigt.

```
"Failed to ensure lease exists, will retry" err="Get ..."
```

```
"Unable to register node with API server" err="Post ..."
```

```
Failed to contact API server when waiting for CSINode publishing ... dial tcp <ip address>: i/o timeout
```

Wenn diese Meldungen angezeigt werden, überprüfen Sie Folgendes, um sicherzustellen, dass die in [Vorbereitung der Vernetzung für Hybridknoten](hybrid-nodes-networking.md) aufgeführten Anforderungen für Hybridknoten erfüllt werden.
+ Vergewissern Sie sich, dass die an den EKS-Cluster übergebene VPC Routen zu Ihrem Transit Gateway (TGW) oder Virtual Private Gateway (VGW) für Ihren lokalen Knoten und optional Ihren Pod hat. CIDRs
+ Vergewissern Sie sich, dass Sie über eine zusätzliche Sicherheitsgruppe für Ihren EKS-Cluster verfügen, die Regeln für eingehenden Datenverkehr für Ihren lokalen Knoten und optional für den Pod enthält. CIDRs CIDRs
+ Bestätigen Sie, dass Ihr On-Premises-Router so konfiguriert ist, dass er den Datenverkehr zur und von der EKS-Steuerebene zulässt.

 **Nicht autorisiert** 

Wenn Ihr Hybridknoten mit der EKS-Steuersebene kommunizieren konnte, sich jedoch nicht registrieren konnte, werden möglicherweise Protokolle angezeigt, die den folgenden ähneln. Beachten Sie, dass der wesentliche Unterschied in den folgenden Protokollmeldungen der `Unauthorized`-Fehler ist. Dies weist darauf hin, dass der Knoten seine Aufgaben nicht ausführen konnte, da er nicht über die erforderlichen Berechtigungen verfügt.

```
"Failed to ensure lease exists, will retry" err="Unauthorized"
```

```
"Unable to register node with API server" err="Unauthorized"
```

```
Failed to contact API server when waiting for CSINode publishing: Unauthorized
```

Wenn Sie diese Meldungen sehen, überprüfen Sie Folgendes, um sicherzustellen, dass die Anforderungen für Hybridknoten in [Vorbereitung der Anmeldeinformationen für Hybridknoten](hybrid-nodes-creds.md) und [Vorbereitung des Cluster-Zugriffs für Hybridknoten](hybrid-nodes-cluster-prep.md) erfüllt werden.
+ Bestätigen Sie, dass die Identität der Hybridknoten mit Ihrer erwarteten IAM-Rolle für Hybridknoten übereinstimmt. Dies kann durch Ausführen von `sudo aws sts get-caller-identity` von Ihren Hybridknoten aus erfolgen.
+ Bestätigen Sie, dass Ihre IAM-Rolle für Hybridknoten über die erforderlichen Berechtigungen verfügt.
+ Vergewissern Sie sich, dass Sie in Ihrem Cluster einen EKS-Zugriffseintrag für Ihre Hybrid Nodes IAM-Rolle haben, oder vergewissern Sie sich, dass Sie `aws-auth` ConfigMap einen Eintrag für Ihre Hybrid Nodes IAM-Rolle haben. Wenn Sie EKS-Zugriffseinträge verwenden, bestätigen Sie, dass Ihr `HYBRID_LINUX`-Zugriffseintrag für Ihre IAM-Rolle für Hybridknoten den Zugriffstyp hat. Wenn Sie die verwenden, stellen Sie sicher `aws-auth` ConfigMap, dass Ihr Eintrag für die IAM-Rolle Hybrid Nodes die unter beschriebenen Anforderungen und Formatierungen erfüllt. [Vorbereitung des Cluster-Zugriffs für Hybridknoten](hybrid-nodes-cluster-prep.md)

### Hybridknoten sind beim EKS-Cluster registriert, zeigen aber den Status `Not Ready` an
<a name="hybrid-nodes-troubleshooting-not-ready"></a>

Wenn Ihre Hybridknoten erfolgreich bei Ihrem EKS-Cluster registriert wurden, die Hybridknoten jedoch den Status `Not Ready` anzeigen, müssen Sie zunächst den Status Ihrer Container Networking Interface (CNI) überprüfen. Wenn Sie kein CNI installiert haben, wird erwartet, dass Ihre Hybridknoten den Status `Not Ready` haben. Sobald ein CNI installiert ist und erfolgreich ausgeführt wird, werden die Knoten auf den Status `Ready` aktualisiert. Wenn Sie versucht haben, ein CNI zu installieren, es aber nicht erfolgreich ausgeführt wird, finden Sie weitere Informationen unter [CNI-Fehlerbehebung bei Hybridknoten](#hybrid-nodes-troubleshooting-cni) auf dieser Seite.

 **Anfragen zum Signieren von Zertifikaten (CSRs) bleiben hängen. Ausstehend** 

Wenn Sie nach dem Verbinden der Hybridknoten mit Ihrem EKS-Cluster feststellen, dass noch ausstehende Knoten CSRs für Ihre Hybridknoten vorliegen, erfüllen Ihre Hybridknoten nicht die Anforderungen für die automatische Genehmigung. CSRs für Hybridknoten werden automatisch genehmigt und ausgestellt, wenn die CSRs vier Hybridknoten von einem Knoten mit `eks.amazonaws.com/compute-type: hybrid` Bezeichnung erstellt wurden und der CSR die folgenden alternativen Subject Names (SANs) hat: mindestens ein DNS-SAN, das dem Knotennamen und der IP entspricht, SANs gehört zum Netzwerk CIDRs des Remote-Knotens.

 **Hybridprofil ist bereits vorhanden** 

Wenn Sie Ihre `nodeadm`-Konfiguration geändert haben und versuchen, den Knoten mit der neuen Konfiguration erneut zu registrieren, wird möglicherweise ein Fehler angezeigt, der besagt, dass das Hybrid-Profil bereits vorhanden ist, sich sein Inhalt jedoch geändert hat. Anstatt zwischen Konfigurationsänderungen `nodeadm init` auszuführen, führen Sie `nodeadm uninstall` gefolgt von `nodeadm install` und `nodeadm init` aus. Dadurch wird eine ordnungsgemäße Bereinigung der Konfigurationsänderungen sichergestellt.

```
"msg":"Command failed","error":"hybrid profile already exists at /etc/aws/hybrid/config but its contents do not align with the expected configuration"
```

 **Hybridknoten konnte die private API nicht auflösen** 

Wenn nach dem Ausführen von `nodeadm init` in den `kubelet`-Protokollen ein Fehler angezeigt wird, der auf Fehler beim Kontaktieren des EKS Kubernetes-API-Servers aufgrund von `no such host` hinweist, müssen Sie möglicherweise Ihren DNS-Eintrag für den EKS Kubernetes-API-Endpunkt in Ihrem On-Premises-Netzwerk oder auf Host-Ebene ändern. Weitere Informationen finden Sie [in der * AWS Route53-Dokumentation* unter Weiterleiten eingehender DNS-Abfragen an Ihre VPC](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-inbound-queries.html).

```
Failed to contact API server when waiting for CSINode publishing: Get ... no such host
```

 **Hybridknoten können in der EKS-Konsole nicht angezeigt werden** 

Wenn Sie Ihre Hybridknoten registriert haben, diese aber nicht in der EKS-Konsole anzeigen können, überprüfen Sie die Berechtigungen des IAM-Prinzipals, das Sie zum Anzeigen der Konsole verwenden. Der von Ihnen verwendete IAM-Prinzipal muss über bestimmte Mindestberechtigungen für IAM und Kubernetes verfügen, um Ressourcen in der Konsole anzuzeigen. Weitere Informationen finden Sie unter [Kubernetes-Ressourcen anzeigen in der AWS-Managementkonsole](view-kubernetes-resources.md).

## Fehlerbehebung beim Ausführen von Hybridknoten
<a name="_running_hybrid_nodes_troubleshooting"></a>

Wenn Ihre Hybridknoten bei Ihrem EKS-Cluster registriert waren, den Status `Ready` hatten und dann in den Status `Not Ready` übergingen, gibt es eine Vielzahl von Problemen, die zu diesem fehlerhaften Status geführt haben könnten, z. B. der Mangel an ausreichenden Ressourcen für CPU, Arbeitsspeicher oder verfügbaren Speicherplatz auf dem Knoten oder die Trennung des Knotens von der EKS-Steuerebene. Sie können die folgenden Schritte verwenden, um Probleme mit Ihren Knoten zu beheben. Wenn Sie das Problem nicht lösen können, wenden Sie sich an den AWS Support.

Führen Sie `nodeadm debug` von Ihren Hybridknoten aus, um zu überprüfen, ob die Netzwerk- und Anmeldeinformationen erfüllt sind. Weitere Informationen zum `nodeadm debug`-Befehl finden Sie unter [`nodeadm`-Referenz für Hybridknoten](hybrid-nodes-nodeadm.md).

 **Knotenstatus abrufen** 

```
kubectl get nodes -o wide
```

 **Knoten-Bedingungen und -ereignisse prüfen** 

```
kubectl describe node NODE_NAME
```

 **Pod-Status abrufen** 

```
kubectl get pods -A -o wide
```

 **Pod-Bedingungen und -ereignisse prüfen** 

```
kubectl describe pod POD_NAME
```

 **Pod-Protokolle prüfen** 

```
kubectl logs POD_NAME
```

 **`kubectl`-Protokolle überprüfen** 

```
systemctl status kubelet
```

```
journalctl -u kubelet -f
```

 **Pod-Aktivitätsprüfungen schlagen fehl oder Webhooks funktionieren nicht** 

Wenn Anwendungen, Add-Ons oder Webhooks, die in Ihren Hybridknoten ausgeführt werden, nicht ordnungsgemäß starten, liegen möglicherweise Netzwerkprobleme vor, welche die Kommunikation mit den Pods blockieren. Damit die EKS-Steuerebene auf Hybridknoten ausgeführten Webhooks kontaktieren kann, müssen Sie Ihren EKS-Cluster mit einem Fern-Pod-Netzwerk konfigurieren und Routen für Ihr On-Premises-Pod-CIDR in Ihrer VPC-Routing-Tabelle haben, mit dem Ziel als Ihr Transit Gateway (TGW), Virtual Private Gateway (VPW) oder anderes Gateway, das Sie zum Verbinden Ihres VPC mit Ihrem On-Premises-Netzwerk verwenden. Weitere Informationen zu den Netzwerkanforderungen für Hybridknoten finden Sie unter [Vorbereitung der Vernetzung für Hybridknoten](hybrid-nodes-networking.md). Sie müssen diesen Datenverkehr zusätzlich in Ihrer On-Premises-Firewall zulassen und sicherstellen, dass Ihr Router ordnungsgemäß an Ihre Pods weiterleiten kann. Weitere Informationen zu den Anforderungen für die Ausführung von Webhooks auf Hybridknoten finden Sie unter [Konfiguration von Webhooks für Hybridknoten](hybrid-nodes-webhooks.md).

Eine allgemeine Pod-Protokollnachricht für dieses Szenario wird unten angezeigt, wobei „ip-address“ die Cluster-IP für den Kubernetes-Service ist.

```
dial tcp <ip-address>:443: connect: no route to host
```

 **`kubectl logs`oder `kubectl exec` Befehle, die nicht funktionieren (`kubelet`API-Befehle)** 

Wenn bei Befehlen `kubectl attach` `kubectl cp``kubectl exec`,`kubectl logs`, und ein `kubectl port-forward` Timeout auftritt, während andere `kubectl` Befehle erfolgreich sind, hängt das Problem wahrscheinlich mit der Remote-Netzwerkkonfiguration zusammen. Diese Befehle stellen über den Cluster eine Verbindung zum `kubelet`-Endpunkt auf dem Knoten her. Weitere Informationen finden Sie unter [`kubelet`-Endpunkt](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-kubelet-api).

Stellen Sie sicher, dass Ihr Node IPs und Ihr Pod in das für Ihren Cluster CIDRs konfigurierte Remote-Knoten-Netzwerk und das Remote-Pod-Netzwerk IPs fallen. Verwenden Sie die folgenden Befehle, um die IP-Zuweisungen zu überprüfen.

```
kubectl get nodes -o wide
```

```
kubectl get pods -A -o wide
```

Vergleichen Sie diese IPs mit Ihrem konfigurierten Remote-Netzwerk CIDRs , um sicherzustellen, dass das Routing korrekt ist. Die Anforderungen für die Netzwerkkonfiguration finden Sie unter [Vorbereitung der Vernetzung für Hybridknoten](hybrid-nodes-networking.md).

## CNI-Fehlerbehebung bei Hybridknoten
<a name="hybrid-nodes-troubleshooting-cni"></a>

Wenn beim ersten Starten von Cilium oder Calico mit Hybridknoten Probleme auftreten, liegt dies meistens an Netzwerkproblemen zwischen Hybridknoten oder den auf Hybridknoten ausgeführten CNI-Pods und der EKS-Steuerebene. Stellen Sie sicher, dass Ihre Umgebung die Anforderungen unter „Netzwerk für Hybridknoten vorbereiten“ erfüllt. Es ist sinnvoll, das Problem in Teilbereiche zu unterteilen.

EKS-Cluster-Konfiguration  
Sind die RemotePodNetwork Konfigurationen RemoteNodeNetwork und korrekt?

VPC-Konfiguration  
Gibt es Routen für das RemoteNodeNetwork und RemotePodNetwork in der VPC-Routingtabelle mit dem Ziel des Transit Gateway oder Virtual Private Gateways?

Sicherheitsgruppenkonfiguration  
Gibt es Regeln für eingehenden und ausgehenden Datenverkehr? RemoteNodeNetwork RemotePodNetwork 

On-Premises-Netzwerk  
Gibt es Routen und Zugriff von und zur EKS-Steuerebene sowie von und zu den Hybridknoten und den in Hybridknoten ausgeführten Pods?

CNI-Konfiguration  
Wenn Sie ein Overlay-Netzwerk verwenden, stimmt die IP-Pool-Konfiguration für das CNI mit der für den EKS-Cluster RemotePodNetwork konfigurierten überein, wenn Webhooks verwendet werden?

 **Der Hybridknoten hat den Status `Ready` ohne installiertes CNI** 

Wenn Ihre Hybridknoten den Status `Ready` anzeigen, Sie aber kein CNI auf Ihrem Cluster installiert haben, ist es möglich, dass sich auf Ihren Hybridknoten alte CNI-Artefakte befinden. Wenn Sie Cilium und Calico mit Tools wie Helm deinstallieren, werden die Ressourcen auf der Festplatte standardmäßig nicht von Ihren physischen oder virtuellen Rechnern entfernt. Darüber hinaus sind die benutzerdefinierten Ressourcendefinitionen (CRDs) für diese CNIs möglicherweise noch aus einer alten Installation auf Ihrem Cluster vorhanden. Weitere Informationen finden Sie in den Abschnitten „Cilium löschen“ und „Calico löschen“ unter [CNI für Hybridknoten konfigurieren](hybrid-nodes-cni.md).

 **Fehlerbehebung bei Cilium** 

Wenn Sie Probleme bei der Ausführung von Cilium in Hybridknoten haben, lesen Sie [die Schritte zur Fehlerbehebung](https://docs.cilium.io/en/stable/operations/troubleshooting/) in der Cilium-Dokumentation. Die folgenden Abschnitte behandeln Probleme, die speziell bei der Bereitstellung von Cilium in Hybridknoten auftreten können.

 **Cilium startet nicht** 

Wenn die auf jedem Hybridknoten ausgeführten Cilium-Agenten nicht starten, überprüfen Sie die Protokolle der Cilium-Agent-Pods auf Fehler. Der Cilium-Agent benötigt eine Verbindung zum EKS-Kubernetes-API-Endpunkt, um zu starten. Der Startup des Cilium-Agenten schlägt fehl, wenn diese Konnektivität nicht richtig konfiguriert ist. In diesem Fall werden in den Pod-Protokollen des Cilium-Agenten Protokollmeldungen ähnlich den folgenden angezeigt.

```
msg="Unable to contact k8s api-server"
level=fatal msg="failed to start: Get \"https://<k8s-cluster-ip>:443/api/v1/namespaces/kube-system\": dial tcp <k8s-cluster-ip>:443: i/o timeout"
```

Der Cilium-Agent wird im Host-Netzwerk ausgeführt. Ihr EKS-Cluster muss für die Cilium-Konnektivität mit `RemoteNodeNetwork` konfiguriert sein. Bestätigen Sie, dass Sie über eine zusätzliche Sicherheitsgruppe für Ihren EKS-Cluster mit einer eingehenden Regel für Ihr `RemoteNodeNetwork` verfügen, dass Sie Routen in Ihrem VPC für Ihr `RemoteNodeNetwork` haben und dass Ihr On-Premises-Netzwerk richtig konfiguriert ist, um die Verbindung zur EKS-Steuerebene zu ermöglichen.

Wenn der Cilium-Operator läuft und einige Ihrer Cilium-Agenten laufen, aber nicht alle, stellen Sie sicher, dass Sie über einen verfügbaren Pod verfügen, IPs den Sie allen Knoten in Ihrem Cluster zuweisen können. Sie konfigurieren die Größe Ihres zuweisbaren Pods, CIDRs wenn Sie den Clusterpool IPAM mit in Ihrer Cilium-Konfiguration verwenden. `clusterPoolIPv4PodCIDRList` Die CIDR-Größe pro Knoten wird mit der Einstellung `clusterPoolIPv4MaskSize` in Ihrer Cilium-Konfiguration konfiguriert. Weitere Informationen finden Sie unter [Erweiterung des Cluster-Pools](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/#expanding-the-cluster-pool) in der Cilium-Dokumentation.

 **Cilium BGP funktioniert nicht** 

Wenn Sie die Cilium BGP-Steuerebene verwenden, um Ihre Pod- oder Service-Adressen in Ihrem On-Premises-Netzwerk bekannt zu geben, können Sie die folgenden Cilium-CLI-Befehle verwenden, um zu überprüfen, ob BGP die Routen zu Ihren Ressourcen bekannt gibt. Die Schritte zur Installation der Cilium-CLI finden Sie unter [Installation der Cilium-CLI](https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/#install-the-cilium-cli) in der Cilium-Dokumentation.

Wenn BGP ordnungsgemäß funktioniert, sollten Ihre Hybridknoten den Sitzungsstatus `established` in der Ausgabe haben. Möglicherweise müssen Sie mit Ihrem Netzwerk-Team zusammenarbeiten, um die korrekten Werte für die lokalen AS, Peer-AS und Peer-Adressen Ihrer Umgebung zu ermitteln.

```
cilium bgp peers
```

```
cilium bgp routes
```

Wenn Sie Cilium BGP verwenden, um die IPs Dienste mit Typ zu bewerben`LoadBalancer`, müssen Sie sowohl auf Ihrem Dienst als auch auf Ihrem Dienst dieselbe Bezeichnung haben, die in Ihrem `CiliumLoadBalancerIPPool` Selektor verwendet werden sollte. `CiliumBGPAdvertisement` Es folgt ein Beispiel. Beachten Sie, dass, wenn Sie Cilium BGP verwenden, um die Dienste mit Typ zu bewerben LoadBalancer, die BGP-Routen während IPs des Neustarts des Cilium-Agenten unterbrochen werden können. Weitere Informationen finden Sie unter [Fehlerszenarien](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane-operation/#failure-scenarios) in der Cilium-Dokumentation.

 **Service** 

```
kind: Service
apiVersion: v1
metadata:
  name: guestbook
  labels:
    app: guestbook
spec:
  ports:
  - port: 3000
    targetPort: http-server
  selector:
    app: guestbook
  type: LoadBalancer
```

 **CiliumLoadBalancerIPPool** 

```
apiVersion: cilium.io/v2alpha1
kind: CiliumLoadBalancerIPPool
metadata:
  name: guestbook-pool
  labels:
    app: guestbook
spec:
  blocks:
  - cidr: <CIDR to advertise>
  serviceSelector:
    matchExpressions:
      - { key: app, operator: In, values: [ guestbook ] }
```

 **CiliumBGPAdvertisement** 

```
apiVersion: cilium.io/v2alpha1
kind: CiliumBGPAdvertisement
metadata:
  name: bgp-advertisements-guestbook
  labels:
    advertise: bgp
spec:
  advertisements:
    - advertisementType: "Service"
      service:
        addresses:
          - ExternalIP
          - LoadBalancerIP
      selector:
        matchExpressions:
          - { key: app, operator: In, values: [ guestbook ] }
```

 **Calico-Fehlerbehebung** 

Wenn Sie Probleme bei der Ausführung von Calico in Hybridknoten haben, lesen Sie die [Schritte zur Fehlerbehebung](https://docs.tigera.io/calico/latest/operations/troubleshoot/) in der Calico-Dokumentation. Die nachfolgenden Abschnitte behandeln Probleme, die speziell bei der Bereitstellung von Calico in Hybridknoten auftreten können.

Die nachfolgende Tabelle fasst die Calico-Komponenten zusammen und gibt an, ob sie standardmäßig im Knoten- oder Pod-Netzwerk ausgeführt werden. Wenn Sie Calico für die Verwendung von NAT für ausgehenden Pod-Datenverkehr konfiguriert haben, muss Ihr On-Premises-Netzwerk so konfiguriert sein, dass der Datenverkehr an die CIDR Ihres On-Premises-Knotens weitergeleitet wird. Außerdem müssen Ihre VPC-Routing-Tabellen mit einer Route für die CIDR Ihres On-Premises-Knotens konfiguriert sein, wobei Ihr Transit-Gateway (TGW) oder Ihr Virtual Private Gateway (VGW) als Ziel angegeben ist. Wenn Sie Calico nicht für die Verwendung von NAT für ausgehenden Pod-Datenverkehr konfigurieren, muss Ihr On-Premises-Netzwerk so konfiguriert sein, dass der Datenverkehr an Ihre On-Premises-Pod-CIDR weitergeleitet wird. Außerdem müssen Ihre VPC-Routing-Tabellen mit einer Route für Ihre On-Premises-Pod-CIDR konfiguriert sein, wobei Ihr Transit-Gateway (TGW) oder Ihr Virtual Private Gateway (VGW) als Ziel angegeben ist.


| Komponente | Netzwerk | 
| --- | --- | 
|  Calico-API-Server  |  Knoten  | 
|  Calico-Controller für Kubernetes  |  Pod  | 
|  Calico-Knoten-Agent  |  Knoten  | 
|  Calico `typha`   |  Knoten  | 
|  Calico-CSI-Knoten-Treiber  |  Schote  | 
|  Calico-Operator  |  Knoten  | 

 **Calico-Ressourcen sind geplant oder werden in abgesperrten Knoten ausgeführt** 

Die Calico-Ressourcen, die nicht als A ausgeführt werden, DaemonSet verfügen standardmäßig über flexible Toleranzen, sodass sie auf gesperrten Knoten geplant werden können, die noch nicht für die Planung oder Ausführung von Pods bereit sind. Sie können die Toleranzen für Ressourcen, die nicht zu DaemonSet Calico gehören, verschärfen, indem Sie Ihre Betreiberinstallation dahingehend ändern, dass sie Folgendes beinhaltet.

```
installation:
  ...
  controlPlaneTolerations:
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  calicoKubeControllersDeployment:
    spec:
      template:
        spec:
          tolerations:
          - effect: NoExecute
            key: node.kubernetes.io/unreachable
            operator: Exists
            tolerationSeconds: 300
          - effect: NoExecute
            key: node.kubernetes.io/not-ready
            operator: Exists
            tolerationSeconds: 300
  typhaDeployment:
    spec:
      template:
        spec:
          tolerations:
          - effect: NoExecute
            key: node.kubernetes.io/unreachable
            operator: Exists
            tolerationSeconds: 300
          - effect: NoExecute
            key: node.kubernetes.io/not-ready
            operator: Exists
            tolerationSeconds: 300
```

## Fehlerbehebung bei Anmeldeinformationen
<a name="hybrid-nodes-troubleshooting-creds"></a>

Sowohl bei AWS SSM-Hybrid-Aktivierungen als auch bei AWS IAM Roles Anywhere können Sie überprüfen, ob die Anmeldeinformationen für die IAM-Rolle Hybrid Nodes auf Ihren Hybridknoten korrekt konfiguriert sind, indem Sie den folgenden Befehl von Ihren Hybridknoten aus ausführen. Überprüfen Sie, ob der Knotenname und der Name der IAM-Rolle für Hybridknoten Ihren Erwartungen entsprechen.

```
sudo aws sts get-caller-identity
```

```
{
    "UserId": "ABCDEFGHIJKLM12345678910:<node-name>",
    "Account": "<aws-account-id>",
    "Arn": "arn:aws: sts::<aws-account-id>:assumed-role/<hybrid-nodes-iam-role/<node-name>"
}
```

 ** Fehlerbehebung für AWS Systems Manager (SSM)** 

Wenn Sie AWS SSM-Hybrid-Aktivierungen für Ihre Anmeldeinformationen für Hybridknoten verwenden, beachten Sie die folgenden SSM-Verzeichnisse und -Artefakte, die von auf Ihren Hybridknoten installiert werden. `nodeadm` Weitere Informationen zum SSM-Agenten finden Sie unter [Arbeiten mit dem SSM-Agenten](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) im * AWS Systems Manager Manager-Benutzerhandbuch*.


| Description | Speicherort | 
| --- | --- | 
|  SSM-Agent  |  Ubuntu — `/snap/amazon-ssm-agent/current/amazon-ssm-agent` RHEL & 023 — AL2 `/usr/bin/amazon-ssm-agent`   | 
|  SSM-Agent-Protokolle  |   `/var/log/amazon/ssm`   | 
|   AWS Referenzen  |   `/root/.aws/credentials`   | 
|  CLI für SSM-Einrichtung  |   `/opt/ssm/ssm-setup-cli`   | 

 **Neustart des SSM-Agenten** 

Einige Probleme können durch einen Neustart des SSM-Agenten behoben werden. Verwenden Sie die folgenden Befehle, um das System neu zu starten.

 **AL2023 und andere Betriebssysteme** 

```
systemctl restart amazon-ssm-agent
```

 **Ubuntu ** 

```
systemctl restart snap.amazon-ssm-agent.amazon-ssm-agent
```

 **Konnektivität zu SSM-Endpunkten überprüfen** 

Bestätigen Sie, dass Sie von Ihren Hybridknoten aus eine Verbindung zu den SSM-Endpunkten herstellen können. Eine Liste der SSM-Endpunkte finden Sie unter [AWS -Systems-Manager-Endpunkte und -Kontingente](https://docs.aws.amazon.com/general/latest/gr/ssm.html). Ersetzen Sie `us-west-2` den folgenden Befehl durch die AWS Region für Ihre AWS SSM-Hybrid-Aktivierung.

```
ping ssm.us-west-2.amazonaws.com
```

 **Verbindungsstatus registrierter SSM-Instances anzeigen** 

Sie können den Verbindungsstatus der Instances, die mit SSM-Hybrid-Aktivierungen registriert sind, mit dem folgenden AWS CLI-Befehl überprüfen. Ersetzen Sie die Rechner-ID durch die Rechner-ID Ihrer Instance.

```
aws ssm get-connection-status --target mi-012345678abcdefgh
```

 **CLI-Prüfsummen-Fehlanpassung bei SSM-Einrichtung** 

Wenn Sie beim Ausführen von `nodeadm install` ein Problem mit einer nicht übereinstimmenden `ssm-setup-cli`-Prüfsumme feststellen, sollten Sie sicherstellen, dass auf Ihrem Host keine älteren SSM-Installationen vorhanden sind. Wenn auf Ihrem Host ältere SSM-Installationen vorhanden sind, entfernen Sie diese und führen Sie `nodeadm install` erneut aus, um das Problem zu beheben.

```
Failed to perform agent-installation/on-prem registration: error while verifying installed ssm-setup-cli checksum: checksum mismatch with latest ssm-setup-cli.
```

 **SSM `InvalidActivation` ** 

Wenn bei der Registrierung Ihrer Instance bei AWS SSM ein Fehler auftritt, überprüfen Sie, ob die Werte `region``activationCode`, und `activationId` in Ihrem `nodeConfig.yaml` richtig sind. Die AWS Region für Ihren EKS-Cluster muss mit der Region Ihrer SSM-Hybrid-Aktivierung übereinstimmen. Wenn diese Werte falsch konfiguriert sind, wird möglicherweise ein Fehler ähnlich dem folgenden angezeigt.

```
ERROR Registration failed due to error registering the instance with AWS SSM. InvalidActivation
```

 **SSM `ExpiredTokenException`: Das in der Anfrage enthaltene Sicherheits-Token ist abgelaufen** 

Wenn der SSM-Agent die Anmeldeinformationen nicht aktualisieren kann, wird möglicherweise ein `ExpiredTokenException` angezeigt. Wenn Sie in diesem Szenario von Ihren Hybridknoten aus eine Verbindung zu den SSM-Endpunkten herstellen können, müssen Sie den SSM-Agenten möglicherweise neu starten, um eine Aktualisierung der Anmeldeinformationen zu erzwingen.

```
"msg":"Command failed","error":"operation error SSM: DescribeInstanceInformation, https response error StatusCode: 400, RequestID: eee03a9e-f7cc-470a-9647-73d47e4cf0be, api error ExpiredTokenException: The security token included in the request is expired"
```

 **SSM-Fehler beim Ausführen des Befehls „Rechner registrieren“** 

Wenn beim Registrieren des Rechners bei SSM ein Fehler auftritt, müssen Sie `nodeadm install` möglicherweise erneut ausführen, um sicherzustellen, dass alle SSM-Abhängigkeiten ordnungsgemäß installiert sind.

```
"error":"running register machine command: , error: fork/exec /opt/aws/ssm-setup-cli: no such file or directory"
```

 **SSM `ActivationExpired` ** 

Wenn bei der Ausführung von `nodeadm init` ein Fehler bei der Registrierung der Instance bei SSM aufgrund einer abgelaufenen Aktivierung auftritt, müssen Sie eine neue SSM-Hybridaktivierung erstellen, `nodeConfig.yaml` mit `activationCode` und `activationId` Ihrer neuen SSM-Hybridaktivierung aktualisieren und `nodeadm init` erneut ausführen.

```
"msg":"Command failed","error":"SSM activation expired. Please use a valid activation"
```

```
ERROR Registration failed due to error registering the instance with AWS SSM. ActivationExpired
```

 **SSM konnte zwischengespeicherte Anmeldeinformationen nicht aktualisieren** 

Wenn beim Aktualisieren der zwischengespeicherten Anmeldeinformationen ein Fehler auftritt, wurde die `/root/.aws/credentials`-Datei möglicherweise auf Ihrem Host gelöscht. Überprüfen Sie zunächst Ihre SSM-Hybridaktivierung und stellen Sie sicher, dass sie aktiv ist und Ihre Hybridknoten für die Verwendung der Aktivierung korrekt konfiguriert sind. Überprüfen Sie die SSM-Agent-Protokolle unter `/var/log/amazon/ssm` und führen Sie den `nodeadm init`-Befehl erneut aus, sobald Sie das Problem auf der SSM-Seite behoben haben.

```
"Command failed","error":"operation error SSM: DescribeInstanceInformation, get identity: get credentials: failed to refresh cached credentials"
```

 **SSM bereinigen** 

Um den SSM-Agenten von Ihrem Host zu entfernen, können Sie die folgenden Befehle ausführen.

```
dnf remove -y amazon-ssm-agent
sudo apt remove --purge amazon-ssm-agent
snap remove amazon-ssm-agent
rm -rf /var/lib/amazon/ssm/Vault/Store/RegistrationKey
```

 ** Fehlerbehebung für AWS IAM Roles Anywhere** 

Wenn Sie AWS IAM Roles Anywhere für Ihre Anmeldeinformationen für Hybridknoten verwenden, beachten Sie die folgenden Verzeichnisse und Artefakte, die auf Ihren Hybridknoten von installiert werden. `nodeadm` Weitere Informationen zur Problembehandlung bei IAM Roles Anywhere finden Sie unter [Problembehandlung bei Identität und Zugriff auf AWS IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/security_iam_troubleshoot.html) im * AWS IAM Roles* Anywhere-Benutzerhandbuch.


| Description | Speicherort | 
| --- | --- | 
|  CLI für IAM Roles Anywhere  |   `/usr/local/bin/aws_signing_helper`   | 
|  Standard-Speicherort und -Name des Zertifikats  |   `/etc/iam/pki/server.pem`   | 
|  Standard-Speicherort und -Name der Schlüssel  |   `/etc/iam/pki/server.key`   | 

 **IAM Roles Anywhere konnte die zwischengespeicherten Anmeldeinformationen nicht aktualisieren** 

Wenn beim Aktualisieren der zwischengespeicherten Anmeldeinformationen ein Fehler auftritt, überprüfen Sie den Inhalt von `/etc/aws/hybrid/config` und bestätigen Sie, dass IAM Roles Anywhere in Ihrer `nodeadm`-Konfiguration richtig konfiguriert wurde. Bestätigen Sie, dass `/etc/iam/pki` ​​vorhanden ist. Jeder Knoten muss über ein eindeutiges Zertifikat und einen eindeutigen Schlüssel verfügen. Wenn Sie IAM Roles Anywhere als Anmeldeinformationsanbieter verwenden, verwendet `nodeadm` standardmäßig `/etc/iam/pki/server.pem` für den Speicherort und Namen des Zertifikats und `/etc/iam/pki/server.key` für den privaten Schlüssel. Möglicherweise müssen Sie die Verzeichnisse erstellen, bevor Sie die Zertifikate und Schlüssel in den Verzeichnissen mit `sudo mkdir -p /etc/iam/pki` platzieren. Sie können den Inhalt Ihres Zertifikats mit dem folgenden Befehl überprüfen.

```
openssl x509 -text -noout -in server.pem
```

```
open /etc/iam/pki/server.pem: no such file or directory
could not parse PEM data
Command failed {"error": "... get identity: get credentials: failed to refresh cached credentials, process provider error: error in credential_process: exit status 1"}
```

 **IAM Roles Anywhere ist nicht autorisiert, `sts:AssumeRole` auszuführen ** 

Wenn Sie in den `kubelet`-Protokollen ein Problem mit einer Zugriffsverweigerung für die `sts:AssumeRole`-Operation bei Verwendung von IAM Roles Anywhere feststellen, überprüfen Sie die Vertrauensrichtlinie Ihrer IAM-Rolle für Hybridknoten, um sicherzustellen, dass der Service-Prinzipal von IAM Roles Anywhere die IAM-Rolle für Hybridknoten übernehmen darf. Bestätigen Sie außerdem, dass der Trust-Anchor-ARN in Ihrer Vertrauensrichtlinie für die IAM-Rolle für Hybridknoten ordnungsgemäß konfiguriert ist und dass Ihre IAM-Rolle für Hybridknoten zu Ihrem IAM–Roles-Anywhere-Profil hinzugefügt wurde.

```
could not get token: AccessDenied: User: ... is not authorized to perform: sts:AssumeRole on resource: ...
```

 **IAM Roles Anywhere ist nicht autorisiert, `roleSessionName` festzulegen ** 

Wenn Sie in den `kubelet`-Protokollen ein Problem mit einer Zugriffsverweigerung für die Einstellung von `roleSessionName` feststellen, überprüfen Sie, ob Sie `acceptRoleSessionName` für Ihr IAM-Roles-Anywhere-Profil auf „true“ gesetzt haben.

```
AccessDeniedException: Not authorized to set roleSessionName
```

## Fehlerbehebung beim Betriebssystem
<a name="hybrid-nodes-troubleshooting-os"></a>

### RHEL
<a name="_rhel"></a>

 **Fehler bei der Registrierung des Berechtigungs- oder Abonnement-Managers** 

Wenn Sie `nodeadm install` ausführen und die Installation der Hybridknoten-Abhängigkeiten aufgrund von Problemen bei der Berechtigungsregistrierung fehlschlägt, stellen Sie sicher, dass Sie Ihren Red-Hat-Benutzernamen und Ihr Kennwort auf Ihrem Host richtig eingerichtet haben.

```
This system is not registered with an entitlement server
```

### Ubuntu
<a name="_ubuntu"></a>

 **GLIBC nicht gefunden** 

Wenn Sie Ubuntu als Betriebssystem und IAM Roles Anywhere als Anmeldeinformationsanbieter mit Hybridknoten verwenden und ein Problem mit „GLIBC nicht gefunden“ feststellen, können Sie diese Abhängigkeit manuell installieren, um das Problem zu beheben.

```
GLIBC_2.32 not found (required by /usr/local/bin/aws_signing_helper)
```

Führen Sie die folgenden Befehle aus, um die Abhängigkeit zu installieren:

```
ldd --version
sudo apt update && apt install libc6
sudo apt install glibc-source
```

### Bottlerocket
<a name="_bottlerocket"></a>

Wenn Sie den Bottlerocket-Admin-Container aktiviert haben, können Sie mit SSH darauf zugreifen, um erweitertes Debugging und Fehlerbehebung mit erhöhten Berechtigungen durchzuführen Die folgenden Abschnitte enthalten Befehle, die im Kontext des Bottlerocket-Hosts ausgeführt werden müssen. Sobald Sie sich im Admin-Container befinden, können Sie `sheltie` ausführen, um eine vollständige Root-Shell im Bottlerocket-Host zu erhalten.

```
sheltie
```

Sie können die Befehle in den folgenden Abschnitten auch von der Admin-Container-Shell aus ausführen, indem Sie jedem Befehl ein `sudo chroot /.bottlerocket/rootfs` voranstellen.

```
sudo chroot /.bottlerocket/rootfs <command>
```

 **Verwendung von logdog zur Protokoll-Erfassung** 

Bottlerocket bietet ein Service-Programm `logdog` zur effizienten Erfassung von Protokollen und Systeminformationen für die Fehlerbehebung.

```
logdog
```

Das Service-Programm `logdog` erfasst Protokolle von verschiedenen Speicherorten auf einem Bottlerocket-Host und fasst sie in einem Tarball zusammen. Standardmäßig wird das Tarball-Archiv unter `/var/log/support/bottlerocket-logs.tar.gz` erstellt und ist von Host-Containern unter `/.bottlerocket/support/bottlerocket-logs.tar.gz` zugänglich.

 **Zugriff auf Systemprotokolle mit journalctl** 

Sie können den Status der verschiedenen System-Services wie `kubelet`, `containerd`, usw. überprüfen und ihre Protokolle mit den folgenden Befehlen anzeigen. Das `-f`-Flag wird die Protokolle in Echtzeit verfolgen.

Um den Status des `kubelet`-Services zu überprüfen und `kubelet`-Protokolle abzurufen, können Sie folgenden Befehl ausführen:

```
systemctl status kubelet
journalctl -u kubelet -f
```

Um den Status des `containerd`-Services zu überprüfen und die Protokolle für die orchestrierte `containerd`-Instance abzurufen, können Sie folgenden Befehl ausführen:

```
systemctl status containerd
journalctl -u containerd -f
```

Um den Status des `host-containerd`-Services zu überprüfen und die Protokolle für die `containerd`-Host-Instance abzurufen, können Sie folgenden Befehl ausführen:

```
systemctl status host-containerd
journalctl -u host-containerd -f
```

Um die Protokolle für die Bootstrap-Container und Host-Container abzurufen, können Sie folgenden Befehl ausführen:

```
journalctl _COMM=host-ctr -f
```