Auswahl eines optimalen Amazon-EC2-Knoten-Instance-Typs - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.

Auswahl eines optimalen Amazon-EC2-Knoten-Instance-Typs

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 im Amazon-EC2-Benutzerhandbuch. Amazon EKS veröffentlicht mehrere Varianten von Amazon-EC2-AMIs, um Support zu ermöglichen. Berücksichtigen Sie die folgenden Kriterien, um sicherzustellen, dass der ausgewählte Instance-Typ mit Amazon EKS kompatibel ist.

  • Nicht alle Amazon-EKS-AMIs unterstützen derzeit die mac-Familie.

  • Arm und nicht beschleunigte Amazon-EKS-AMIs unterstützen die Familien g3, g4, inf und p nicht.

  • Beschleunigte Amazon-EKS-AMIs unterstützen die Familien a, c, hpc, m und t.

  • Für Arm-basierte Instances unterstützt Amazon Linux 2023 (AL2023) ausschließlich Instance-Typen, die Graviton2-Prozessoren oder neuere Prozessoren verwenden. AL2023 unterstützt keine A1-Instances.

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, Windows und Bottlerocket. Lesen Sie vor dem Erstellen von Windows-Instances den Abschnitt Bereitstellen von Windows-Knoten in EKS-Clustern.

Hardware-Architektur

Benötigen Sie x86 oder Arm? Bevor Sie Arm-Instances bereitstellen, überprüfen Sie die für Amazon-EKS-optimierten Arm-Amazon-Linux-AMIs. Benötigen Sie Instances, die auf dem Nitro-System (Linux oder Windows) basieren oder über Beschleunigte 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 Von Amazon EKS empfohlene maximale Pods für jeden Amazon-EC2-Instance-Typ.

Anmerkung

Wenn Sie ein Amazon-EKS-optimiertes Amazon-Linux-2-AMI der Version v20220406 oder neuer verwenden, können Sie einen neuen Instance-Typ verwenden, ohne auf das neueste AMI zu aktualisieren. Für diese AMIs berechnet das AMI automatisch den erforderlichen max-pods-Wert, wenn dieser nicht in der Datei eni-max-pods.txt aufgeführt ist. Instance-Typen, die sich derzeit in der Vorschau befinden, werden möglicherweise von Amazon EKS standardmäßig nicht unterstützt. Werte für max-pods für solche Typen müssen noch zu eni-max-pods.txt in unserem AMI hinzugefügt werden.

AWS-Nitro-System-Instance-Typen unterstützen optional deutlich mehr IP-Adressen als Nicht-Nitro-System-Instance-Typen. 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. 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-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 Informationen zu IPv6-Adressen für Cluster, Pods und Services.

Version des Amazon-VPC-CNI-Add-Ons, das Sie ausführen

Die aktuelle Version des Amazon-CNI-Plugins für Kubernetes unterstützt diese Instance-Typen. 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 Zuweisung von IPs zu Pods mit Amazon VPC CNI. 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 Funktionen im Änderungsverlauf auf GitHub anzeigen.

AWS-Region, in der Sie Ihre Knoten erstellen

Nicht alle Instance-Typen stehen in allen AWS-Regionen zur Verfügung.

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.

Von Amazon EKS empfohlene maximale Pods für jeden Amazon-EC2-Instance-Typ

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. Amazon EKS stellt ein Skript bereit, das Sie herunterladen und ausführen können, um die von Amazon EKS empfohlene maximale Anzahl von Pods zur Ausführung auf jedem Instance-Typ zu bestimmen. Das Skript verwendet Hardwareattribute jeder Instance und Konfigurationsoptionen, um die maximale Pod-Anzahl zu bestimmen. Sie können die in diesen Schritten zurückgegebene Zahl verwenden, um Funktionen wie das Zuweisen von IP-Adressen zu Pods aus einem anderen Subnetz als dem der Instance zu aktivieren und die Anzahl der IP-Adressen für Ihre Instance erheblich zu erhöhen. Wenn Sie eine verwaltete Knotengruppe mit mehreren Instance-Typen verwenden, verwenden Sie einen Wert, der für alle Instance-Typen funktioniert.

  1. Laden Sie ein Skript herunter, mit dem Sie die maximale Anzahl von Pods für jeden Instance-Typ berechnen können.

    curl -O https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/templates/al2/runtime/max-pods-calculator.sh
  2. Markieren Sie das Skript auf Ihrem Computer als ausführbar.

    chmod +x max-pods-calculator.sh
  3. Führen Sie das Skript aus und ersetzen Sie m5.large durch den Instance-Typ, den Sie bereitstellen möchten, und 1.9.0-eksbuild.1 durch Ihre Amazon-VPC-CNI-Add-On-Version. Informationen zum Ermitteln Ihrer Add-On-Version finden Sie in den Aktualisierungsverfahren unter Zuweisen von IPs zu Pods mit dem Amazon VPC CNI.

    ./max-pods-calculator.sh --instance-type m5.large --cni-version 1.9.0-eksbuild.1

    Eine Beispielausgabe sieht wie folgt aus.

    29

    Sie können dem Skript die folgenden Optionen hinzufügen, um die maximal unterstützten Pods anzuzeigen, wenn optionale Funktionen verwendet werden.

    • --cni-custom-networking-enabled – Verwenden Sie diese Option, wenn Sie IP-Adressen aus einem anderen Subnetz als der Ihrer Instance zuweisen möchten. Weitere Informationen finden Sie unter Bereitstellung von Pods in alternativen Subnetzen mit benutzerdefiniertem Netzwerk. Das Hinzufügen dieser Option zum vorherigen Skript mit denselben Beispielwerten ergibt 20.

    • --cni-prefix-delegation-enabled – Verwenden Sie diese Option, wenn Sie jeder Elastic-Network-Schnittstelle deutlich mehr IP-Adressen zuweisen möchten. Diese Funktion erfordert eine Amazon Linux-Instance, die auf dem Nitro System und der Version 1.9.0 oder höher des Amazon VPC CNI-Add-ons ausgeführt wird. Weitere Informationen finden Sie unter Zuweisung weiterer IP-Adressen mit Präfixen zu Amazon-EKS-Knoten. Das Hinzufügen dieser Option zum vorherigen Skript mit denselben Beispielwerten ergibt 110.

Sie können das Skript auch mit der Option --help ausführen, um alle verfügbaren Optionen anzuzeigen.

Anmerkung

Das Berechnungsskript für maximale Pods begrenzt den Rückgabewert basierend auf den Skalierbarkeitsschwellenwerten und empfohlenen Einstellungen von Kubernetes auf 110. Wenn Ihr Instance-Typ mehr als 30 vCPUs hat, steigt dieser Grenzwert auf 250, eine Zahl, die auf internen Tests des Amazon-EKS-Skalierbarkeitsteams basiert. Weitere Informationen finden Sie im Blogbeitrag Amazon VPC CNI plugin increases pods per node limits (VPC-CNI-Plugin von Amazon erhöht Grenzwerte für Pods pro Knoten).

Überlegungen zu EKS Auto Mode

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.