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 unter, 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.
EFA-Geräte auf Amazon EKS verwalten
Elastic Fabric Adapter (EFA) ist ein Netzwerkgerät für Amazon EC2-Instances, das leistungsstarke Kommunikation zwischen Knoten und RDMA (Remote Direct Memory Access) für Workloads in den Bereichen künstliche Intelligenz, maschinelles Lernen und High Performance Computing (HPC) ermöglicht. Amazon EKS unterstützt zwei Mechanismen für die Verwaltung von EFA-Geräten in EKS-Clustern: den EFA Dynamic Resource Allocation (DRA) -Treiber (DRANET) und das EFA-Geräte-Plug-In.
Wir empfehlen, DRA-Treiber für neue Bereitstellungen mit Kubernetes-Versionen 1.34 und höher zu verwenden, wenn die statische Kapazitätsbereitstellung
EFA-DRA-Treiber im Vergleich zum EFA-Geräte-Plugin
| Feature | EFA-DRA-Treiber | EFA-Geräte-Plugin |
|---|---|---|
|
Mindestversion von Kubernetes |
1.34 |
Alle EKS-supported Kubernetes-Versionen |
|
EKS Compute |
Karpenter (nur statische Kapazität), verwaltete Knotengruppen, selbstverwaltete Knoten |
EKS Auto Mode, Karpenter, verwaltete Knotengruppen, selbstverwaltete Knoten |
|
EKS-optimized AMIs |
AL 2023, Flaschenrakete |
AL2023, Flaschenrakete |
|
Werbung für Geräte |
Umfangreiche Attribute anhand von |
Ganzzahlige Anzahl erweiterter Ressourcen |
|
GPU-EFA Affinität |
DRA-native Bewusstsein für Topologie |
Automatische Topologieerkennung (nur AL2023 AMIs) EKS-optimized |
|
Neuron-EFA Affinität |
DRA-native Bewusstsein für Topologie |
Automatische Topologieerkennung (nur AL2023 AMIs) EKS-optimized |
|
Gemeinsame Nutzung von Geräten |
Mehrere Pods können dasselbe EFA-Gerät über gemeinsame |
Nicht unterstützt Jedes EFA-Gerät ist ausschließlich einem Pod zugeordnet. |
EKS-Knoten mit EFA-Schnittstellen erstellen
Wenn Sie EKS-Knoten mit EFA-Schnittstellen erstellen, werden die EFA-Schnittstellen während der Instanzbereitstellung an die Instanz angehängt. Sie können die EFA-Konfiguration pro Gerät anpassen und Platzierungsgruppen mit EKS Auto Mode, Karpenter, EKS-verwalteten Knotengruppen oder selbstverwalteten EKS-Knotengruppen verwenden. Im EKS-Automatikmodus leiten Sie die Konfiguration für jede Netzwerkschnittstelle durch das Unterfenster weiter. NodeClass advancedNetworking.networkInterfaces Mit Karpenter übergeben Sie die Konfiguration für jede Netzwerkschnittstelle über den. EC2NodeClass Bei EKS-verwalteten Knotengruppen oder selbstverwalteten Knoten übergeben Sie die Konfiguration für jede Netzwerkschnittstelle mit Startvorlagen.
Wenn Sie die efaEnabled Einstellung eksctl für die Bereitstellung von EKS-Knoten verwenden, werden alle Schnittstellen mit dem Schnittstellentyp konfiguriertEFA, eine EFA-specific Sicherheitsgruppe wird erstellt und das EFA-Geräte-Plug-In wird auf dem Cluster installiert. Wenn Sie die EFA-Konfiguration pro Gerät bei der Verwendung anpassen müssen, wird empfohleneksctl, die Unterstützung von `eksctl für Startvorlagen zu verwenden. https://docs.aws.amazon.com/eks/latest/eksctl/launch-template-support.html
Die folgenden Beispiele zeigen, wie Vorlagen mit EFA-Schnittstellen konfiguriert NodeClass und gestartet werden. Dies ist nützlich, um die Schnittstellen anzupassen, die für EFA-Verkehr im Vergleich zu IP-based Standardverkehr verwendet werden. Informationen zur Anzahl der von den einzelnen Instance-Typen unterstützten EFA-Schnittstellen und zur Konfiguration dieser Schnittstellen für maximale Netzwerkbandbreite finden Sie unter Maximieren der Netzwerkbandbreite für EFA-enabled Instance-Typen im Amazon EC2-Benutzerhandbuch.
EKS Auto Mode
Im EKS-Automatikmodus konfigurieren Sie die EFA-Netzwerkschnittstellen mithilfe des advancedNetworking.networkInterfaces Felds im NodeClass (). eks.amazonaws.com/v1 Jeder Eintrag gibt ein networkCardIndexdeviceIndex, und interfaceType an. Dies interfaceType kann interface für Standard-Netzwerkschnittstellen oder efa-only für EFA-Schnittstellen verwendet werden, die für RDMA-Verkehr ohne zugewiesene IP-Adressen vorgesehen sind.
Wenn konfiguriert networkInterfaces ist, NodeClass verwenden Instances, die vom NodePool referenzierenden Server gestartet werden, diese Konfiguration, unabhängig davon, ob Pods Ressourcen anfordern. vpc.amazonaws.com/efa EKS Auto Mode fügt nach dem Start der Instance für Knoten mit statischer Netzwerkschnittstellenkonfiguration keine zusätzlichen IPs, Präfixe oder ENIs hinzu — nur die beim Start konfigurierten Schnittstellen und IPs sind für Pods verfügbar.
Diese Funktion kann mit Node-Pools mit statischer Kapazität verwendet werden, um vorgewärmte EFA-ready Knoten für verteilte Trainings- und Inferenz-Workloads aufrechtzuerhalten.
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: efa-node-class spec: role: MyNodeRole subnetSelectorTerms: - tags: Name: "private-subnet" securityGroupSelectorTerms: - tags: Name: "efa-security-group" placementGroupSelector: name: "ml-training-pg" advancedNetworking: networkInterfaces: - deviceIndex: 0 interfaceType: interface networkCardIndex: 0 secondaryIPv4PrefixCount: 1 - networkCardIndex: 0 deviceIndex: 1 interfaceType: efa-only - networkCardIndex: 1 deviceIndex: 0 interfaceType: efa-only - networkCardIndex: 2 deviceIndex: 0 interfaceType: efa-only - networkCardIndex: 3 deviceIndex: 0 interfaceType: efa-only
Eine vollständige Liste der Einschränkungen bei der Konfiguration statischer Netzwerkschnittstellen finden Sie Konfiguration der statischen Netzwerkschnittstelle in der NodeClass Dokumentation.
Karpenter
Jeder Eintrag in networkInterfaces gibt ein networkCardIndexdeviceIndex, und aninterfaceType. Das interfaceType kann interface für Standard-Netzwerkschnittstellen oder efa-only für EFA-Schnittstellen verwendet werden, die für RDMA-Verkehr vorgesehen sind und denen keine IP-Adressen zugewiesen sind. Wenn konfiguriert networkInterfaces ist, NodeClass verwenden Instances, die vom NodePool referenzierenden Host gestartet werden, diese Konfiguration, unabhängig davon, ob Pods Ressourcen anfordern. vpc.amazonaws.com/efa
Wenn Sie Karpenter verwenden, ohne networkInterfaces in Ihrem angegeben zu vpc.amazonaws.com/efa haben, sind bei InstanzenNodeClass, die für Pods erstellt wurden, alle Schnittstellen mit dem Schnittstellentyp konfiguriert. EFA
Die networkInterfaces Konfiguration für EC2NodeClass wurde in Karpenter v1.11 hinzugefügt. Das folgende Beispiel zeigt eine EC2NodeClass Konfiguration für eine P6-B200 Instanz mit 1 ENA-Schnittstelle und 8 Schnittstellen. EFA-only
apiVersion: karpenter.k8s.aws/v1 kind: EC2NodeClass metadata: name: efa-node-class spec: networkInterfaces: - networkCardIndex: 0 deviceIndex: 0 interfaceType: interface - networkCardIndex: 0 deviceIndex: 1 interfaceType: efa-only - networkCardIndex: 1 deviceIndex: 0 interfaceType: efa-only - networkCardIndex: 2 deviceIndex: 0 interfaceType: efa-only - networkCardIndex: 3 deviceIndex: 0 interfaceType: efa-only - networkCardIndex: 4 deviceIndex: 0 interfaceType: efa-only - networkCardIndex: 5 deviceIndex: 0 interfaceType: efa-only - networkCardIndex: 6 deviceIndex: 0 interfaceType: efa-only - networkCardIndex: 7 deviceIndex: 0 interfaceType: efa-only
EKS-verwaltete Knotengruppen und selbstverwaltete Knoten
Bei EKS-verwalteten Knotengruppen oder selbstverwalteten Knoten übergeben Sie die Konfiguration für jede Netzwerkschnittstelle mit Startvorlagen.
Das folgende Beispiel zeigt eine Startvorlage, die für eine P6-B200 Instance mit 1 ENA-Schnittstelle und 8 EFA-only Schnittstellen konfiguriert ist. Die primäre Netzwerkschnittstelle (Netzwerkkarte 0, Geräteindex 0) verwendet einen interface Standardtyp für den IP-Verkehr, während zusätzliche Schnittstellen den dedizierten RDMA-Verkehr verwendenefa-only. Passen Sie die Anzahl der efa-only Schnittstellen an Ihren Instance-Typ an. Die Anzahl der EFA-Schnittstellen, die von jedem Instance-Typ unterstützt werden, finden Sie im Amazon EC2-Benutzerhandbuch unter Maximieren der Netzwerkbandbreite für EFA-enabled Instance-Typen.
security-group-id
Ersetzen Sie durch Ihre Werte. Die Sicherheitsgruppe muss den gesamten eingehenden und ausgehenden Verkehr zu und von sich selbst zulassen, um die OS-bypass EFA-Funktionalität zu aktivieren. Weitere Informationen finden Sie unter Schritt 1: Vorbereitung einer EFA-enabled Sicherheitsgruppe im Amazon EC2-Benutzerhandbuch.
Wichtig
Geben Sie dies nicht SubnetId in der Startvorlage an, wenn Sie von EKS verwaltete Knotengruppen verwenden. EKS verlangt, dass alle Subnetze über die CreateNodegroup API angegeben werden, und lehnt Startvorlagen ab, die eine Subnetzkonfiguration enthalten.
{ "LaunchTemplateName": "efa-launch-template", "LaunchTemplateData": { "InstanceType": "p6-b200.48xlarge", "NetworkInterfaces": [ { "NetworkCardIndex": 0, "DeviceIndex": 0, "InterfaceType": "interface", "Groups": ["security-group-id"] }, { "NetworkCardIndex": 0, "DeviceIndex": 1, "InterfaceType": "efa-only", "Groups": ["security-group-id"] }, { "NetworkCardIndex": 1, "DeviceIndex": 0, "InterfaceType": "efa-only", "Groups": ["security-group-id"] }, { "NetworkCardIndex": 2, "DeviceIndex": 0, "InterfaceType": "efa-only", "Groups": ["security-group-id"] }, { "NetworkCardIndex": 3, "DeviceIndex": 0, "InterfaceType": "efa-only", "Groups": ["security-group-id"] }, { "NetworkCardIndex": 4, "DeviceIndex": 0, "InterfaceType": "efa-only", "Groups": ["security-group-id"] }, { "NetworkCardIndex": 5, "DeviceIndex": 0, "InterfaceType": "efa-only", "Groups": ["security-group-id"] }, { "NetworkCardIndex": 6, "DeviceIndex": 0, "InterfaceType": "efa-only", "Groups": ["security-group-id"] }, { "NetworkCardIndex": 7, "DeviceIndex": 0, "InterfaceType": "efa-only", "Groups": ["security-group-id"] } ] } }
Verwenden von AMIs mit EFA EKS-optimized
Die EKS-optimized AL2023-AMIs und alle Bottlerocket-AMIs enthalten die Komponenten auf Host-Ebene, die für die Verwendung von EFA erforderlich sind, insbesondere die Komponenten, die vom aws-efa-installer installiert werden. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-enable Die EKS-AL2023- und Bottlerocket-AMIs enthalten weder den EFA-DRA-Treiber noch das EFA-Geräte-Plug-In, und diese müssen separat auf Ihrem Cluster installiert werden, bevor Sie Workloads bereitstellen.
Beibehaltung der IP-Adresszuweisung
EFA-enabled Instanzen wie p5.48xlarge und p6-b200.48xlarge unterstützen viele Netzwerkschnittstellen. Standardmäßig weist das Amazon VPC CNI allen IP-enabled angeschlossenen ENIs IP-Adressen zu, wodurch eine große Anzahl von IP-Adressen aus Ihrem Subnetz abgerufen werden kann, auch wenn diese Adressen nicht aktiv von Pods verwendet werden. Bei Instances mit Dutzenden von Netzwerkschnittstellen kann dies den verfügbaren IP-Speicherplatz Ihres Subnetzes schnell erschöpfen.
Um den Verbrauch von IP-Adressen auf EFA-enabled Knoten zu reduzieren, konfigurieren Sie Ihre Netzwerkschnittstellen so, dass sie efa-only für alle Schnittstellen außer der primären verwendet werden. EFA-only Schnittstellen sind für den RDMA-Verkehr vorgesehen und ihnen sind keine IP-Adressen zugewiesen, sodass sie keine Adressen aus Ihrem Subnetz verwenden. Beispiele für Konfigurationen finden Sie unter Karpenter und. EKS-verwaltete Knotengruppen und selbstverwaltete Knoten Das empfohlene Schnittstellenlayout für jeden Instance-Typ finden Sie unter Maximieren der Netzwerkbandbreite für EFA-enabled Instance-Typen im Amazon EC2-Benutzerhandbuch.
Zusätzlich zur Verwendung von efa-only Schnittstellen können Sie Amazon VPC CNI so konfigurieren, dass die Anzahl der warmen (vorab zugewiesenen) IP-Adressen und ENIs begrenzt wird. Standardmäßig weist das VPC-CNI vorab einen warmen Pool von ENIs und IP-Adressen zu, um den Pod-Start zu beschleunigen. Bei großen Instances können dadurch jedoch Hunderte von ungenutzten IP-Adressen reserviert werden. Legen Sie die Umgebungsvariablen WARM_IP_TARGET und die WARM_ENI_TARGET Umgebungsvariablen auf dem fest aws-node DaemonSet , um zu steuern, wie viele Ersatz-IP-Adressen und ENIs das CNI verwaltet. Weitere Informationen zu diesen Einstellungen finden Sie unter Best Practices für Amazon VPC CNI.
Anmerkung
Die WARM_IP_TARGET Einstellungen WARM_ENI_TARGET und gelten für den gesamten Cluster und gelten für alle Knoten, die vom VPC CNI verwaltet werden. Derzeit gibt es keine Möglichkeit, für jede Knotengruppe oder jeden Instanztyp unterschiedliche Werte festzulegen. Wenn Sie eine detailliertere Kontrolle über diese Einstellungen benötigen, geben Sie uns Feedback zum Thema Container-Roadmap #1834 unter.
Installieren Sie den EFA-DRA-Treiber (DRANET)
Der EFA-DRA-Treiber ist im https://github.com/kubernetes-sigs/dranet
Der EFA-DRA-Treiber kündigt EFA-Geräte als ResourceSlice Objekte mit dem Treibernamen und dem Namen an. dra.net DeviceClass efa.networking.k8s.aws Der EFA-DRA-Treiber läuft DaemonSet auf jedem Knoten als und erkennt automatisch EFA-Geräte.
Voraussetzungen
-
Ein Amazon EKS-Cluster mit Kubernetes-Version 1.34 oder höher mit statischer Kapazität, die von Karpenter bereitgestellt wird, von EKS verwalteten Knotengruppen oder selbstverwalteten Knotengruppen.
-
Knoten mit Amazon EC2-Instanztypen. EFA-enabled Eine Liste der unterstützten Instance-Typen finden Sie unter Unterstützte Instance-Typen im Amazon EC2-Benutzerhandbuch.
-
Knoten, auf denen Komponenten auf Host-Ebene für EFA installiert sind, finden Sie unter Installieren der EFA-Software für weitere Informationen. Die NVIDIA- und Neuron-AMIs EKS-optimized AL2023 sowie die Bottlerocket-AMIs enthalten die EFA-Komponenten auf Host-Ebene.
-
Weitere Informationen finden Sie in den Anweisungen zur Einrichtung von Helm.
-
kubectlkonfiguriert für die Kommunikation mit Ihrem Cluster, weitere Informationen finden Sie unter. Installieren oder aktualisieren Sie kubectl
Verfahren
Wichtig
Installieren Sie den EFA-DRA-Treiber nicht auf Knoten, auf denen das EFA-Geräte-Plug-In ausgeführt wird. Die beiden Mechanismen können nicht auf demselben Knoten koexistieren. Dies kann zu einer unbemerkten Überbelegung der zugrunde liegenden Geräte für mehrere Pods auf demselben Knoten führen.
-
Fügen Sie das EKS Helm-Diagramm-Repository hinzu.
helm repo add eks https://aws.github.io/eks-charts -
Aktualisieren Sie Ihr lokales Helm-Repository.
helm repo update -
Installieren Sie den EFA-DRA-Treiber mit Helm auf Ihrem Cluster. Der EFA-DRA-Treiber erkennt über den Instance Metadata Service (IMDS) automatisch, dass er auf EC2-Instances läuft, und ermöglicht die EFA-Geräteerkennung. Der EFA-DRA-Treiber wird standardmäßig als DaemonSet im Namespace bereitgestellt.
kube-systemDie konfigurierbaren Parameter finden Sie unter Helm values.yaml im EKS-Helm-Chart-Repositoryauf GitHub . helm install aws-dranet eks/aws-dranet --namespace kube-system -
Stellen Sie sicher, dass das DRANET läuft DaemonSet .
kubectl get daemonset -n kube-system aws-dranetNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE aws-dranet 2 2 2 2 2 <none> 60s -
Stellen Sie sicher, dass das erstellt
DeviceClasswurde.kubectl get deviceclassNAME AGE efa.networking.k8s.aws 60s -
Stellen Sie sicher, dass
ResourceSliceObjekte für Ihre Knoten angekündigt werden.kubectl get resourceslices --field-selector spec.driver=dra.netWenn bei den obigen Schritten Fehler auftreten, können Sie die Protokolle für DRANET mit dem folgenden Befehl überprüfen.
kubectl logs -n kube-system -l app=aws-dranet -
Um EFA-Geräte mithilfe des DRA-Treibers anzufordern, erstellen Sie ein
ResourceClaimoder,ResourceClaimTemplatedas auf die EFA verweist,DeviceClassund verweisen Sie in Ihrer Pod-Spezifikation darauf. Im folgenden Beispiel wird ein einzelnes EFA-Gerät angefordert.apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: single-efa-claim spec: spec: devices: requests: - name: efa exactly: deviceClassName: efa.networking.k8s.aws count: 1 --- apiVersion: v1 kind: Pod metadata: name: efa-workload spec: containers: - name: app ... resources: claims: - name: efa-device resourceClaims: - name: efa-device resourceClaimTemplateName: single-efa-claim
Topology-aware EFA und Gerätezuweisung GPU/Neuron
Der EFA-DRA-Treiber unterstützt die topologiebewusste Zuweisung, bei der EFA-Schnittstellen mit GPUs oder Neuron-Geräten auf demselben PCIe-Root gekoppelt werden. Verwenden Sie die matchAttribute Einschränkung, um die Zuweisungen von EFA- und GPU- oder Neuron-Geräten aufeinander abzustimmen. Um diese Funktion nutzen zu können, müssen Sie auch die NVIDIA- oder Neuron-DRA-Treiber verwenden. Weitere Informationen erhalten Sie unter NVIDIA-GPUs auf Amazon EKS verwalten und Neuron-Geräte auf Amazon EKS verwalten.
Im folgenden Beispiel wird eine EFA-Schnittstelle angefordert, die einer NVIDIA-GPU zugeordnet ist:
apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: aligned-efa-nvidia spec: spec: devices: requests: - name: 1-efa exactly: deviceClassName: efa.networking.k8s.aws count: 1 - name: 1-gpu exactly: deviceClassName: gpu.nvidia.com count: 1 constraints: - requests: ["1-gpu", "1-efa"] matchAttribute: "resource.kubernetes.io/pcieRoot"
Das folgende Beispiel fordert 4 EFA-Schnittstellen an, die auf 4 Neuron-Geräte abgestimmt sind:
apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: aligned-efa-neuron spec: spec: devices: requests: - name: 4-neurons exactly: deviceClassName: neuron.aws.com count: 4 - name: 4-efas exactly: deviceClassName: efa.networking.k8s.aws count: 4 constraints: - requests: ["4-neurons", "4-efas"] matchAttribute: "resource.aws.com/devicegroup4_id"
Die Zahl im devicegroup Attributnamen entspricht der Anzahl der Neuron-Geräte in der verbundenen Topologiegruppe. resource.aws.com/devicegroup1_idIdentifiziert beispielsweise ein einzelnes Neuron-Gerät, resource.aws.com/devicegroup4_id identifiziert eine Gruppe von 4 verbundenen Geräten resource.aws.com/devicegroup8_id und resource.aws.com/devicegroup16_id identifiziert Gruppen von 8 bzw. 16 verbundenen Geräten. Wählen Sie matchAttribute das, das dem Gerät count in Ihrer Anfrage entspricht, sodass die zugewiesenen Neuron-Geräte und EFA-Schnittstellen derselben verbundenen Topologiegruppe angehören. Weitere Informationen zu diesen Attributen finden Sie in der Neuron-DRA-Treiberdokumentation.
Sie können allocationMode es verwenden, um zu vereinfachen, wie EFA-Geräte ausgerichteten GPU- oder Neuron-Beschleunigern zugewiesen werden. Das allocationMode Feld unterstützt zwei Werte: ExactCount (Standardeinstellung) fordert eine bestimmte Anzahl von Geräten an, die von angegeben wirdcount, und All fordert alle passenden Geräte in einem Pool an. Auf p5.48xlarge Instances gibt es beispielsweise vier EFA-Geräte, die denselben PCIe-Root mit einer GPU teilen. Um diesen Gruppen von EFA-Geräten abgestimmte GPUs zuzuweisen, können Sie Ihre ResourceClaimTemplate Konfiguration für die EFA-Geräte konfigurieren, auch wenn Sie die genaue EFA-GPU Gerätezuordnung und die Anzahl der abgeglichenen EFA-Geräte nicht kennen. allocationMode: All
apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: aligned-all-efa-one-nvidia spec: spec: devices: requests: - name: all-efas exactly: deviceClassName: efa.networking.k8s.aws allocationMode: All - name: one-gpu exactly: deviceClassName: gpu.nvidia.com allocationMode: ExactCount count: 1 constraints: - requests: ["all-efas", "one-gpu"] matchAttribute: "resource.kubernetes.io/pcieRoot"
Teilen Sie EFA-Geräte mit mehreren Pods
Der EFA-DRA-Treiber unterstützt die gemeinsame Nutzung von EFA-Geräten zwischen mehreren Pods mithilfe eines. ResourceClaim Im Gegensatz zu aResourceClaimTemplate, das für jeden Pod einen eigenen Anspruch generiert, ResourceClaim ist a ein benanntes Objekt, das Sie unabhängig erstellen und von mehreren Pods aus referenzieren. Alle Pods, die auf denselben Pods verweisen, haben ResourceClaim gemeinsam Zugriff auf dieselben zugewiesenen EFA-Geräte und sind für denselben Knoten geplant, auf dem diese Geräte verfügbar sind.
Um EFA-Geräte von mehreren Pods gemeinsam zu nutzen, erstellen Sie einenResourceClaim, der die EFA-Geräte anfordert, und verweisen Sie dann namentlich in den Feldern der einzelnen Pods resourceClaims auf diesen Anspruch. resourceClaimName Das ResourceClaim muss im Cluster existieren, bevor die Pods, die es referenzieren, erstellt werden. ResourceClaimExistiert kein Objekt, auf das verwiesen wird, verbleiben die Pods im Status „Ausstehend“, bis der Anspruch geltend gemacht wird.
Das folgende Beispiel erstellt einenResourceClaim, der 4 EFA-Geräte anfordert, und zwei Pods, die den Zugriff auf diese Geräte gemeinsam nutzen.
-
Erstellen Sie den
ResourceClaim.apiVersion: resource.k8s.io/v1 kind: ResourceClaim metadata: name: shared-efa spec: devices: requests: - name: efa exactly: deviceClassName: efa.networking.k8s.aws count: 4 -
Verweisen Sie
ResourceClaimin jedem Pod, der Zugriff auf die EFA-Geräte benötigt, namentlich auf diese. Jeder Pod verwendetresourceClaimName, um auf den vorhandenen Anspruch zu verweisen, anstatt aufresourceClaimTemplateName.apiVersion: v1 kind: Pod metadata: name: training-worker spec: containers: - name: worker image: my-training-image resources: claims: - name: efa-devices resourceClaims: - name: efa-devices resourceClaimName: shared-efa --- apiVersion: v1 kind: Pod metadata: name: training-monitor spec: containers: - name: monitor image: my-monitor-image resources: claims: - name: efa-devices resourceClaims: - name: efa-devices resourceClaimName: shared-efa
Beide Pods verweisen auf dasselbe shared-efa ResourceClaim und sind für den Knoten vorgesehen, dem diese EFA-Geräte zugewiesen sind. Der ResourceClaim Lebenszyklus ist unabhängig von den Pods — er bleibt bestehen, bis Sie ihn löschen, auch wenn alle Pods, die auf ihn verweisen, entfernt werden.
Installieren Sie das EFA Kubernetes-Geräte-Plugin
Das EFA Kubernetes-Geräte-Plugin bewirbt EFA-Geräte als erweiterte Ressourcen. vpc.amazonaws.com/efa Sie fordern EFA-Geräte in Container-Ressourcenanforderungen und -limits an. Eine vollständige Anleitung zur Einrichtung von EFA mit Trainings-Workloads finden Sie unter. Ausführung von Machine-Learning-Trainings in Amazon EKS mit Elastic Fabric Adapter
Wichtig
Topology-aligned Die Zuweisung von NVIDIA-GPUs oder Neuron-Geräten mit EFA-Schnittstellen erfolgt automatisch, wenn die AL2023-beschleunigten AMIs verwendet werden. EKS-optimized Diese automatische Ausrichtung erfolgt nicht, wenn Bottlerocket-AMIs oder benutzerdefinierte AMIs EKS-optimized verwendet werden. Wenn Sie einen an der Topologie ausgerichteten Beschleuniger und die EFA-Gerätezuweisung mit Bottlerocket oder benutzerdefinierten AMIs benötigen, verwenden Sie den EFA-DRA-Treiber und den entsprechenden Neuron-DRA-Treiber. Um den NVIDIA DRA-Treiber auf Bottlerocket verwenden zu können, müssen Sie zuerst das NVIDIA-Geräte-Plugin deaktivieren, das im Paket mit den Bottlerocket-NVIDIA-Varianten enthalten ist. Dafür ist Bottlerocket Version 1.63.0 oder höher erforderlich. Weitere Informationen erhalten Sie unter Topology-aware EFA und Gerätezuweisung GPU/Neuron und Installieren Sie den NVIDIA DRA-Treiber.
Wichtig
Ab NVIDIA k8s-device-plugin v0.19.0 ist das --mofed-enabled Flag standardmäßig auf gesetzt, wodurch das NVIDIA-Geräte-Plugin alle Geräte in Container einhängttrue, die GPUs anfordern. /dev/infiniband/uverbs* Dies steht in Konflikt mit dem EFA-Geräte-Plugin, das die Komponente sein sollte, die die EFA-Gerätezuweisung unter verwaltet. /dev/infiniband Wenn Sie EKS-verwaltete Knotengruppen oder selbstverwaltete Knoten mit dem NVIDIA-Geräte-Plugin verwenden, müssen Sie MOFED explizit deaktivieren. Detaillierte Anweisungen finden Sie unter Installieren Sie das NVIDIA Kubernetes-Geräte-Plugin.
Der EKS-Automatikmodus aktiviert MOFED standardmäßig nicht und ist von diesem Problem nicht betroffen.
Voraussetzungen
-
Ein Amazon EKS-Cluster.
-
Knoten mit EFA-enabled Amazon EC2-Instance-Typen. Eine Liste der unterstützten Instance-Typen finden Sie unter Unterstützte Instance-Typen im Amazon EC2-Benutzerhandbuch.
-
Knoten, auf denen Komponenten auf Host-Ebene für EFA installiert sind, finden Sie unter Installieren der EFA-Software für weitere Informationen. Die EKS-optimized AL2023 AMIs und die Bottlerocket AMIs enthalten die EFA-Komponenten auf Host-Ebene.
-
Weitere Informationen finden Sie in den Anweisungen zur Einrichtung von Helm.
-
kubectlkonfiguriert für die Kommunikation mit Ihrem Cluster, weitere Informationen finden Sie unter. Installieren oder aktualisieren Sie kubectl
Verfahren
-
Fügen Sie das EKS Helm-Diagramm-Repository hinzu.
helm repo add eks https://aws.github.io/eks-charts -
Aktualisieren Sie Ihr lokales Helm-Repository.
helm repo update -
Installieren Sie das EFA-Geräte-Plugin.
helm install efa eks/aws-efa-k8s-device-plugin -n kube-system -
Stellen Sie sicher, dass das EFA-Geräte-Plugin DaemonSet läuft.
kubectl get daemonset -n kube-system efa-aws-efa-k8s-device-pluginNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE efa-aws-efa-k8s-device-plugin 2 2 2 2 2 <none> 60s -
Stellen Sie sicher, dass Ihre Knoten über zuweisbare EFA-Ressourcen verfügen.
kubectl get nodes "-o=custom-columns=NAME:.metadata.name,EFA:.status.allocatable.vpc\.amazonaws\.com/efa"NAME EFA ip-192-168-11-225.us-west-2.compute.internal 4 ip-192-168-24-96.us-west-2.compute.internal 4 -
Um EFA-Geräte mithilfe des Geräte-Plug-ins anzufordern, geben Sie die
vpc.amazonaws.com/efaRessource in Ihren Container-Ressourcenanforderungen und -limits an.apiVersion: v1 kind: Pod metadata: name: efa-workload spec: containers: - name: app ... resources: limits: vpc.amazonaws.com/efa: 4 hugepages-2Mi: ... requests: vpc.amazonaws.com/efa: 4 hugepages-2Mi: ...