Anfügen mehrerer Netzwerkschnittstellen an Pods - 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.

Anfügen mehrerer Netzwerkschnittstellen an Pods

Standardmäßig weist das Amazon-VPC-CNI-Plugin jedem Pod eine IP-Adresse zu. Diese IP-Adresse ist an eine elastische Netzwerkschnittstelle angefügt, die den gesamten ein- und ausgehenden Datenverkehr für den Pod verarbeitet. Um die Bandbreite und die Leistung pro Sekunde zu erhöhen, können Sie das Multi-NIC-Feature des VPC CNI verwenden, um einen Multi-Homed-Pod zu konfigurieren. Ein Multi-Homed-Pod ist ein einzelner Kubernetes-Pod, der mehrere Netzwerkschnittstellen (und mehrere IP-Adressen) verwendet. Durch den Betrieb eines Multi-Homed-Pods können Sie den Anwendungsdatenverkehr mithilfe gleichzeitiger Verbindungen auf mehrere Netzwerkschnittstellen verteilen. Dies ist besonders nützlich für Anwendungsfälle in den Bereichen Künstliche Intelligenz (KI), Machine Learning (ML) und High Performance Computing (HPC).

Das folgende Diagramm zeigt einen Multi-Homed-Pod, der auf einem Worker-Knoten mit mehreren Netzwerkkarten (NICs) ausgeführt wird.

Ein Multi-Homed-Pod mit zwei Netzwerkschnittstellen, wobei eine Netzwerkschnittstelle an ENA und eine Netzwerkschnittstelle an ENA und EFA angefügt ist.

Hintergrund

In Amazon EC2 ist eine elastische Netzwerkschnittstelle eine logische Netzwerkkomponente in einer VPC, die eine virtuelle Netzwerkkarte darstellt. Bei vielen EC2- Instance-Typen teilen sich die Netzwerkschnittstellen eine einzige Netzwerkkarte (NIC) in der Hardware. Diese einzelne Netzwerkkarte verfügt über eine maximale Bandbreite und eine maximale Paketrate pro Sekunde.

Wenn das Multi-NIC-Feature aktiviert ist, weist die VPC CNI IP-Adressen nicht wie standardmäßig vorgesehen in großen Mengen zu. Stattdessen weist das VPC CNI bei Bedarf einer Netzwerkschnittstelle auf jeder Netzwerkkarte eine IP-Adresse zu, wenn ein neuer Pod gestartet wird. Dieses Verhalten verringert die Geschwindigkeit, mit der IP-Adressen erschöpft werden, was durch die Verwendung von Multi-Homed-Pods erhöht wird. Da die VPC CNI IP-Adressen bei Bedarf zuweist, kann der Start von Pods auf Instances mit aktiviertem Multi-NIC-Feature länger dauern.

Überlegungen

  • Stellen Sie sicher, dass in Ihrem Kubernetes-Cluster die VPC-CNI-Version 1.20.0 oder höher ausgeführt wird. Das Multi-NIC-Feature ist nur in der Version 1.20.0 VPC CNI oder höher verfügbar.

  • Aktivieren Sie die ENABLE_MULTI_NIC-Umgebungsvariable im VPC-CNI-Plugin. Sie können den folgenden Befehl ausführen, um die Variable festzulegen und eine Bereitstellung des DaemonSet zu starten.

    • kubectl set env daemonset aws-node -n kube-system ENABLE_MULTI_NIC=true

  • Stellen Sie sicher, dass Sie Worker-Knoten mit mehreren Netzwerkschnittstellenkarten (NICs) erstellen. Eine Liste der EC2-Instances mit mehreren Netzwerkschnittstellenkarten finden Sie unter Netzwerkkarten im Amazon-EC2-Benutzerhandbuch.

  • Wenn das Multi-NIC-Feature aktiviert ist, weist die VPC CNI IP-Adressen nicht wie standardmäßig vorgesehen in großen Mengen zu. Da die VPC CNI IP-Adressen bei Bedarf zuweist, kann der Start von Pods auf Instances mit aktiviertem Multi-NIC-Feature länger dauern. Weitere Informationen finden Sie im vorhergehenden Abschnitt Hintergrund.

  • Bei aktiviertem Multi-NIC-Feature verfügen Pods standardmäßig nicht über mehrere Netzwerkschnittstellen. Sie müssen jede Workload so konfigurieren, dass sie Multi-NIC verwendet. Fügen Sie die k8s.amazonaws.com/nicConfig: multi-nic-attachment-Annotationen zu den Workloads hinzu, die über mehrere Netzwerkschnittstellen verfügen sollen.

Überlegungen zu IPv6

  • Benutzerdefinierte IAM-Richtlinie – Erstellen und verwenden Sie für IPv6-Cluster die folgende benutzerdefinierte IAM-Richtlinie für das VPC CNI. Diese Richtlinie gilt speziell für Multi-NICs. Weitere allgemeine Informationen zur Verwendung des VPC CNI mit IPv6-Clustern finden Sie unter Informationen zu IPv6-Adressen für Cluster, Pods und Services.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AmazonEKSCNIPolicyIPv6MultiNIC", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeInstances", "ec2:AssignIpv6Addresses", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeTags", "ec2:ModifyNetworkInterfaceAttribute", "ec2:DeleteNetworkInterface", "ec2:DescribeInstanceTypes", "ec2:UnassignIpv6Addresses", "ec2:AttachNetworkInterface", "ec2:DescribeSubnets" ], "Resource": "*" }, { "Sid": "AmazonEKSCNIPolicyENITagIPv6MultiNIC", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:network-interface/*" } ] }
  • IPv6 Übergangsmechanismus nicht verfügbar – Bei Verwendung des Multi-NIC-Feature weist die VPC CNI den Pods in einem IPv6-Cluster keine IPv4-Adresse zu. Andernfalls weist die VPC CNI jedem Pod eine hostlokale IPv4-Adresse zu, damit ein Pod mit externen IPv4-Ressourcen in einer anderen Amazon VPC oder im Internet kommunizieren kann.

Verwendung

Nachdem das Multi-NIC-Feature in der VPC CNI aktiviert wurde und die aws-node-Pods neu gestartet wurden, können Sie jede Workload so konfigurieren, dass sie Multi-Homed ist. Nachfolgend finden Sie ein Beispiel für eine YAML-Konfiguration mit der erforderlichen Annotation:

apiVersion: apps/v1 kind: Deployment metadata: name: orders-deployment namespace: ecommerce labels: app: orders spec: replicas: 3 selector: matchLabels: app: orders template: metadata: annotations: k8s.amazonaws.com/nicConfig: multi-nic-attachment labels: app: orders spec: ...

Häufig gestellte Fragen

1. Was ist eine Netzwerkkarte (NIC)?

Eine Netzwerkschnittstellenkarte (NIC), auch einfach Netzwerkkarte genannt, ist ein physisches Gerät, das die Netzwerkkonnektivität für die zugrunde liegende Cloud-Computing-Hardware ermöglicht. Bei modernen EC2-Servern bezieht sich dies auf die Nitro-Netzwerkkarte. Eine Elastic Network Interface (ENI) ist eine virtuelle Darstellung dieser zugrunde liegenden Netzwerkkarte.

Einige EC2-Instance-Typen verfügen über mehrere NICs für eine höhere Bandbreite und Paketratenleistung. Für solche Instances können Sie den zusätzlichen Netzwerkkarten sekundäre ENIs zuweisen. Beispielsweise kann ENI Nr. 1 als Schnittstelle für die an den Netzwerkkartenindex 0 angefügten Netzwerkkarte dienen, während ENI Nr. 2 als Schnittstelle für die an einen separaten Netzwerkkartenindex angefügten Netzwerkkarte dienen kann.

2. Was ist ein Multi-Homed-Pod?

Ein Multi-Homed-Pod ist ein einzelner Kubernetes-Pod mit mehreren Netzwerkschnittstellen (und damit mehreren IP-Adressen). Jede Pod-Netzwerkschnittstelle ist einer Elastic Network Interface (ENI) zugeordnet. Diese ENIs sind logische Darstellungen separater Netzwerkkarten auf dem zugrunde liegenden Worker-Knoten. Durch mehrere Netzwerkschnittstellen verfügt ein Multi-Homed-Pod über zusätzliche Datenübertragungskapazität, was wiederum die Datenübertragungsrate erhöht.

Wichtig

Die VPC CNI kann Multi-Homed-Pods nur auf Instance-Typen konfigurieren, die über mehrere Netzwerkkarten verfügen.

3. Warum sollte ich dieses Feature nutzen?

Wenn Sie die Netzwerkleistung Ihrer Kubernetes-basierten Workloads skalieren müssen, können Sie mit dem Multi-NIC-Feature Multi-Homed-Pods ausführen, die mit allen zugrunde liegenden NICs kommunizieren, an die ein ENA-Gerät angefügt ist. Durch die Nutzung zusätzlicher Netzwerkkarten erhöhen Sie die Bandbreitenkapazität und die Paketratenleistung Ihrer Anwendungen, indem Sie den Anwendungsdatenverkehr auf mehrere gleichzeitige Verbindungen verteilen. Dies ist besonders nützlich für Anwendungsfälle in den Bereichen Künstliche Intelligenz (KI), Machine Learning (ML) und High Performance Computing (HPC).

4. Wie verwende ich dieses Feature?

  1. Zunächst müssen Sie sicherstellen, dass Ihr Kubernetes-Cluster VPC CNI Version 1.20 oder höher verwendet. Die Schritte zum Aktualisieren der VPC CNI als EKS-Add-On finden Sie unter Aktualisieren der Amazon VPC CNI (Amazon-EKS-Add-On).

  2. Anschließend müssen Sie den Multi-NIC-Support in der VPC CNI mithilfe der ENABLE_MULTI_NIC-Umgebungsvariablen aktivieren.

  3. Danach müssen Sie sicherstellen, dass Sie Knoten mit mehreren Netzwerkkarten erstellen und verbinden. Eine Liste der EC2-Instance-Typen mit mehreren Netzwerkkarten finden Sie unter Netzwerkkarten im Amazon-EC2-Benutzerhandbuch.

  4. Abschließend konfigurieren Sie jede Workload so, dass sie entweder mehrere Netzwerkschnittstellen (Multi-Homed-Pods) oder eine einzelne Netzwerkschnittstelle verwendet.

5. Wie konfiguriere ich meine Workloads, um mehrere Netzwerkkarten auf einem unterstützten Worker-Knoten zu verwenden?

Um Multi-Homed-Pods zu verwenden, müssen Sie die folgende Annotation hinzufügen: k8s.amazonaws.com/nicConfig: multi-nic-attachment. Dadurch wird eine ENI von jeder Netzwerkkarte in der zugrunde liegenden Instance an den Pod angefügt (eine zu vielen Zuordnungen zwischen einem Pod und den Netzwerkkarten).

Wenn diese Annotation fehlt, geht das VPC CNI davon aus, dass Ihr Pod nur eine Netzwerkschnittstelle benötigt, und weist ihm eine IP von einem ENI auf einer beliebigen verfügbaren Netzwerkkarte zu.

6. Welche Netzwerkschnittstellen-Adapter werden von diesem Feature unterstützt?

Sie können jeden Netzwerkschnittstellen-Adapter verwenden, wenn Sie mindestens einen ENA für den IP-Datenverkehr an die zugrunde liegende Netzwerkkarte angefügt haben. Weitere Informationen zu ENA finden Sie unter Elastic Network Adapter (ENA) im Amazon-EC2-Benutzerhandbuch.

Unterstützte Netzwerkgeräte-Konfigurationen:

  • ENA-Schnittstellen bieten alle herkömmlichen IP-Netzwerk- und Routing-Funktionen, die zur Unterstützung von IP-Netzwerken für eine VPC erforderlich sind. Weitere Informationen finden Sie unter Aktivierung der erweiterten Vernetzung mit ENA auf Ihren EC2-Instances.

  • EFA (EFA mit ENA)-Schnittstellen bieten sowohl das ENA-Gerät für IP-Netzwerke als auch das EFA-Gerät für die Kommunikation mit niedriger Latenz und hohem Durchsatz.

Wichtig

Wenn an eine Netzwerkkarte nur-EFA-Adapter angeschlossen ist, wird diese vom VPC CNI bei der Bereitstellung der Netzwerkkonnektivität für einen Multi-Homed-Pod übersprungen. Wenn Sie jedoch nur-EFA-Adapter mit einem ENA-Adapter auf einer Netzwerkkarte kombinieren, verwaltet der VPC CNI auch die ENIs auf diesem Gerät. Informationen zur Verwendung von Nur-EFA-Schnittstellen mit EKS-Clustern finden Sie unter Ausführung von Machine-Learning-Trainings in Amazon EKS mit Elastic Fabric Adapter.

7. Kann ich überprüfen, ob ein Knoten in meinem Cluster ENA-Support bietet?

Ja, Sie können die AWS CLI oder die EC2-API verwenden, um Netzwerkinformationen zu einer EC2-Instance in Ihrem Cluster abzurufen. Dadurch erhalten Sie detaillierte Informationen darüber, ob die Instance ENA-Support bietet. Ersetzen Sie im folgenden Beispiel <your-instance-id> durch die EC2-Instance-ID eines Knotens.

AWS-CLI-Beispiel:

aws ec2 describe-instances --instance-ids <your-instance-id> --query "Reservations[].Instances[].EnaSupport"

Beispielausgabe:

[ true ]

8. Kann ich die verschiedenen IP-Adressen sehen, die einem Pod zugeordnet sind?

Nein, nicht so einfach. Sie können jedoch nsenter vom Knoten aus verwenden, um gängige Netzwerk-Tools wie ip route show auszuführen und die zusätzlichen IP-Adressen und Schnittstellen anzuzeigen.

9. Kann ich die Anzahl der Netzwerkschnittstellen für meine Pods steuern?

Nein. Wenn Ihre Workload für die Verwendung mehrerer Netzwerkkarten auf einer unterstützten Instance konfiguriert ist, verfügt ein einzelner Pod automatisch über eine IP-Adresse von jeder Netzwerkkarte auf der Instance. Alternativ verfügen Single-Homed-Pods über eine Netzwerkschnittstelle, die an eine Netzwerkkarte der Instance angefügt ist.

Wichtig

Netzwerkkarten, an die ausschließlich ein nur-EFA-Gerät angeschlossen ist, werden vom VPC CNI übersprungen.

10. Kann ich meine Pods so konfigurieren, dass sie eine bestimmte Netzwerkkarte verwenden?

Nein, dies wird nicht unterstützt. Wenn ein Pod über die entsprechende Annotation verfügt, konfiguriert die VPC CNI ihn automatisch so, dass er jede Netzwerkkarte mit einem ENA-Adapter auf dem Worker-Knoten verwendet.

11. Ist dieses Feature mit den anderen VPC CNI-Netzwerk-Features kompatibel?

Ja, das Multi-NIC-Feature in VPC CNI ist sowohl mit benutzerdefinierten Netzwerken als auch mit der erweiterten Subnetzermittlung kompatibel. Allerdings verwenden die Multi-Homed-Pods keine benutzerdefinierten Subnetze oder Sicherheitsgruppen. Stattdessen weist die VPC CNI den Multi-Homed-Pods IP-Adressen und Netzwerkschnittstellen zu, die dieselbe Subnetz- und Sicherheitsgruppen-Konfiguration wie der Knoten aufweisen. Weitere Informationen zu benutzerdefinierten Netzwerken finden Sie unter Bereitstellung von Pods in alternativen Subnetzen mit benutzerdefiniertem Netzwerk.

Das Multi-NIC-Feature in VPC CNI ist nicht mit Sicherheitsgruppen für Pods kompatibel und kann nicht mit diesen kombiniert werden.

12. Kann ich mit diesem Feature Netzwerkrichtlinien verwenden?

Ja, Sie können Kubernetes-Netzwerkrichtlinien mit mehreren Netzwerkkarten verwenden. Kubernetes-Netzwerkrichtlinien beschränken den Netzwerk-Datenverkehr zu und von Ihren Pods. Weitere Informationen zur Anwendung von Netzwerkrichtlinien mit dem VPC CNI finden Sie unter Begrenzen Sie den Pod-Datenverkehr mit Kubernetes-Netzwerkrichtlinien..

13. Ist der Support für mehrere Netzwerkkarten in EKS Auto Mode aktiviert?

Multi-NIC wird für Cluster im EKS Auto Mode nicht unterstützt.