In diesem Dokument wird beschrieben, wie Sie das automatisierte Netzwerk für Beschleuniger-VMs wie GPUs und TPUs verwenden, um die Netzwerkkonfiguration für GKE-Beschleuniger-Arbeitslasten (Google Kubernetes Engine) zu vereinfachen. Dies ist für die Ausführung von künstlicher Intelligenz (KI), maschinellem Lernen (ML) und Hochleistungs-Computing (HPC) auf beschleunigungsoptimierten Maschinen unerlässlich.
In diesem Dokument wird davon ausgegangen, dass Sie mit den grundlegenden GKE-Konzepten, GPU- und TPU-Arbeitslasten sowie VPC-Netzwerken vertraut sind. Sie sollten insbesondere mit Folgendem vertraut sein:
Diese Seite richtet sich an Cloud-Architekten und Netzwerkspezialisten, die das Netzwerk ihrer Organisation entwerfen und erstellen. Eine Übersicht über alle GKE-Dokumentationen finden Sie unter GKE-Dokumentation. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir inGoogle Cloud -Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.
Die GKE vereinfacht die Ausführung von leistungsstarker KI und ML auf speziellen Beschleunigern. Mit der automatischen Vernetzung für Beschleuniger-VMs können Sie mit einem einzigen Konfigurations-Flag eine Hochgeschwindigkeits-Multi-Netzwerk-Verbindung aktivieren, die für Protokolle wie RDMA unerlässlich ist. Durch diese Automatisierung entfällt der komplexe, manuelle Prozess zum Einrichten mehrerer VPC-Netzwerke, Verwalten von IP-Adressbereichen und Konfigurieren von Netzwerkschnittstellen für jeden Knotenpool und Pod. Wenn Sie beim Erstellen eines Knotenpools einen einzelnen Parameter verwenden, stellt GKE alle erforderlichen Cloud- und Kubernetes-Netzwerkressourcen bereit.
Terminologie
Die folgenden Begriffe sind wichtig, um die Netzwerkarchitektur für Beschleuniger-VMs zu verstehen.
- Virtual Private Cloud (VPC): Eine VPC ist eine virtuelle Version eines physischen Netzwerks, die innerhalb des Produktionsnetzwerks von Google implementiert wurde. Sie ermöglicht eine Verbindung für Ihre Compute Engine-VM-Instanzen, GKE-Cluster und andere Ressourcen.
- Titanium-NIC: Eine intelligente NIC, die Netzwerkverarbeitungsaufgaben von der CPU auslagert, damit sich die CPU auf Ihre Arbeitslasten konzentrieren kann. Auf GPU-Maschinen verarbeiten sie den gesamten Traffic, der nicht direkte GPU-zu-GPU-Kommunikation ist. Auf TPU-Maschinen sind alle NICs Titanium-NICs.
- Subnetzwerk: Ein Subnetzwerk ist ein segmentierter Teil einer größeren VPC. Jedes Subnetzwerk ist einer Region zugeordnet und hat einen definierten IP-Adressbereich.
- Netzwerkschnittstellen-Controller (NIC): Ein NIC ist eine virtuelle Netzwerkschnittstelle, die eine VM-Instanz mit einem Netzwerk verbindet. Jede Netzwerkkarte ist mit einer bestimmten VPC und einem bestimmten Subnetzwerk verbunden.
- Hostnetzwerk: Das primäre Netzwerk, das von den Hauptnetzwerkschnittstellen (NICs) des Knotens für die allgemeine Clusterkommunikation verwendet wird, z. B. für den Traffic der Steuerungsebene und das reguläre Pod-Netzwerk.
- Datennetzwerk: Ein dediziertes Netzwerk für die leistungsstarke Datenübertragung zwischen Beschleuniger-VMs. Für GPUs ist dies oft eine GPUDirect-VPC mit RDMA. Bei TPUs kann dies ein zweites Hostnetzwerk sein.
- Remote Direct Memory Access(RDMA): RDMA ist eine Technologie, die es Netzwerkgeräten ermöglicht, Daten direkt mit dem Hauptspeicher eines Computers auszutauschen, ohne das Betriebssystem oder die CPU einzubeziehen. Dadurch werden die Latenz erheblich reduziert und der Durchsatz verbessert, was für HPC- und ML-Arbeitslasten entscheidend ist.
- NVLink: NVLink ist eine von NVIDIA entwickelte Hochgeschwindigkeits-Interconnect-Technologie, mit der mehrere GPUs innerhalb eines einzelnen Knotens verbunden werden können. So können sie Arbeitsspeicher gemeinsam nutzen und zusammen an großen Datasets arbeiten.
- Dynamische Ressourcenzuweisung (DRA) von Kubernetes: DRA ist ein Kubernetes-Feature, das Pods eine flexiblere Möglichkeit bietet, Ressourcen wie GPUs und andere spezialisierte Hardware anzufordern und zu nutzen. Sie ermöglicht eine detaillierte Kontrolle über die Ressourcenzuweisung.
Funktionsweise des automatisierten Netzwerks
Beschleunigungsoptimierte Maschinen haben eine spezielle Netzwerkarchitektur, die eine Kommunikation mit hohem Durchsatz und niedriger Latenz zwischen GPUs und TPUs unterstützt. Jede physische Maschine enthält mehrere GPUs oder TPUs, die häufig über Hochgeschwindigkeitsverbindungen wie NVLink verbunden sind. Die Maschinen haben außerdem eine oder mehrere NICs für allgemeine Netzwerke und mehrere GPU-NICs für Hochgeschwindigkeits-Interconnect-Verbindungen.
Wenn Sie einen GKE-Knoten erstellen, der einen beschleunigungsoptimierten Maschinentyp verwendet, konfiguriert GKE mehrere NICs auf der zugrunde liegenden VM. Host-NICs stellen eine Verbindung zu Host-VPC-Netzwerken her, um die allgemeine Clusterkommunikation und -verwaltung für die Kommunikation mit der Steuerungsebene zu ermöglichen. GPU-NICs stellen eine Verbindung zu einem dedizierten Hochleistungs-VPC-Netzwerk her, häufig mit aktiviertem RDMA und einer hohen MTU-Einstellung (8896), um die GPUDirect-Kommunikation zu ermöglichen.
Wenn ein Pod GPUs oder TPUs anfordert, können Sie ihn so konfigurieren, dass er auf die Hochleistungs-Netzwerkschnittstellen auf dem Knoten zugreift. Sie können alle verfügbaren NICs oder eine bestimmte Teilmenge anfordern. Jede beanspruchte Netzwerkschnittstelle ist einem einzelnen Pod zugeordnet und wird nicht freigegeben. Diese Netzwerkkonfiguration sorgt dafür, dass der Pod alleinigen Zugriff auf die gesamte Bandbreite und die Ressourcen dieser Schnittstelle hat. Das ist ein wichtiger Vorteil für leistungssensitive Arbeitslasten.
Beschränkungen
- Für das automatisierte Netzwerk muss der Cluster GKE Dataplane V2 verwenden.
- Automatisierte Netzwerke werden für die beschleunigungsoptimierten Maschinenfamilien A3, A4 und TPU Trillium (v6e) sowie für die speicheroptimierte Maschinenserie Z4M unterstützt.
- Sie müssen einen Knotenpool mit einer einzelnen Zone verwenden.
- Sie können die automatisierte Netzwerkerstellung nicht in einem Cluster verwenden, der eine gemeinsam genutzte VPC verwendet.
- Wenn Sie von GKE verwaltete DRANET zum Konfigurieren von Arbeitslasten verwenden, beachten Sie die wichtigen Überlegungen und Einschränkungen für von GKE verwaltete DRANET.
- Sie können die Multi-Netzwerk-API und DRANET nicht im selben Knotenpool verwenden. Sie müssen eine Methode für den Netzwerkanhang für Ihre Pods auswählen.
- Bei regionalen Clustern müssen Sie die Zielzone angeben, wenn Sie Netzwerkprofile für Beschleuniger aktivieren. Wenn sich Ihre Arbeitslast über mehrere Zonen erstreckt, müssen Sie das Netzwerkprofil für jede Zone einzeln aktivieren.
Maschinennetzwerkkonfigurationen
Beschleunigungsoptimierte und speicheroptimierte Maschinen haben je nach Typ unterschiedliche Netzwerkkonfigurationen. In den folgenden Tabellen sind die Netzwerkspezifikationen für verschiedene Maschinentypen zusammengefasst.
GPU-Beschleuniger-VMs
| Maschinentyp | Anzahl der GPUs | Anzahl der Titanium-Netzwerkkarten | Anzahl der GPU-NICs | GPUDirect-Technologie | Zusätzliche VPCs |
|---|---|---|---|---|---|
| A3 | 8 (H100) | 1 | 4 | TCPX | 4 für GPU-NICs |
| A3 Mega | 8 (H100) | 1 | 8 | TCPXO | 8 für GPU-NICs |
| A3 Ultra | 8 (H200) | 2 | 8 | RDMA | 2 (1 für die zweite Netzwerkkarte, 1 für die GPU-Netzwerkkarten) |
| A4 | 8 (B200) | 2 | 8 | RDMA | 2 (1 für die zweite Netzwerkkarte, 1 für die GPU-Netzwerkkarten) |
| A4X | 4 (GB200) | 2 | 4 | RDMA | 2 (1 für die zweite Netzwerkkarte, 1 für die GPU-Netzwerkkarten) |
| A4X BM | 8 | 2 | 8 | BM-RDMA | 2 (1 für die zweite Netzwerkkarte, 1 für die GPU-Netzwerkkarten) |
TPU-Beschleuniger-VMs
| Maschinentyp | Anzahl der TPU-Chips | Anzahl der NICs | Zusätzliche VPCs |
|---|---|---|---|
| TPU Trillium (v6e) (ct6e-standard-1t) | 1 | 0,25 | 1 |
| TPU Trillium (v6e) (ct6e-standard-4t) | 4 | 2 | 2 (1 für die 2. NIC, 1 für die zusätzliche VNIC auf der 1. NIC) |
| TPU Trillium (v6e) (ct6e-standard-8t) | 8 | 4 | 4 |
| tpu7x-standard-4t | 4 | 2 | 2 |
Speicheroptimierte VMs
Auf Z4M-Instanzen unterstützen die beiden physischen Titanium-NICs sowohl allgemeinen Netzwerkverkehr (gVNIC) als auch bis zu zwei virtuelle IRDMA-Netzwerkschnittstellen (vNICs) für die Cloud RDMA-Kommunikation.
| Maschinentyp | Anzahl der physischen Titanium-Netzwerkkarten | Anzahl der RDMA-vNICs | Netzwerktechnologie | Zusätzliche VPCs |
|---|---|---|---|---|
Z4M (z4m-highmem-192) |
2 | Bis zu 2 (auf physischen NICs freigegeben) | RDMA | 2 für RDMA-vNICs |
Hinweis
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API aktivieren
- Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem Befehl
gcloud components updateab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
- Ihr Cluster muss die GKE-Version 1.34.1-gke.2037000 oder höher verwenden.
Wenn Sie die automatische Knotenbereitstellung und benutzerdefinierte ComputeClasses aktivieren möchten, muss Ihr Cluster die GKE-Version 1.35.2-gke.1302000 oder höher verwenden.
Prüfen Sie, ob das GKE-Dienstkonto in Ihrem Projekt die Rolle
compute.networkAdminhat.Prüfen Sie, ob GKE Dataplane V2 für Ihren Cluster aktiviert ist. Sie können GKE Dataplane V2 nur aktivieren, wenn Sie einen neuen Cluster mit GKE-Version 1.34.1-gke.2037000 oder höher erstellen. Sie können GKE Dataplane V2 nicht für Cluster vor dieser Version aktivieren.
gcloud container clusters create CLUSTER_NAME \ --cluster-version=CLUSTER_VERSION \ --enable-dataplane-v2Wenn Sie GPU- oder Z4M-Arbeitslasten bereitstellen möchten, die RDMA verwenden, prüfen Sie, ob die
DeviceClass-Ressourcen vorhanden sind (mrdma.google.comfür GPUs oderirdma.google.comfür Z4M):kubectl get deviceclass mrdma.google.com
Automatische Netzwerke konfigurieren
Sie können automatisierte Netzwerke aktivieren, indem Sie beim Erstellen eines Knotenpools ein Netzwerkprofil für Beschleuniger angeben. Sie können auch eine ComputeClass-Ressource für Cluster erstellen, die die automatische Knotenbereitstellung verwenden.
Knotenpool mit einem Standardnetzwerkprofil erstellen
Wenn Sie automatisch ein Netzwerk erstellen möchten, das alle GPU- oder TPU-Maschinen innerhalb einer einzelnen Zone verbindet, erstellen Sie einen Knotenpool mit dem Netzwerkprofil für Beschleuniger auto.
gcloud
Führen Sie den folgenden Befehl aus, um einen Knotenpool mit einem automatisch konfigurierten Netzwerkprofil zu erstellen:
gcloud beta container node-pools create NODE_POOL_NAME \
--accelerator-network-profile=auto \
--node-locations=ZONE \
--machine-type=MACHINE_TYPE
Wenn Sie einen Knotenpool mit dem Flag --accelerator-network-profile=auto erstellen, fügt GKE den Knoten automatisch das Label gke.networks.io/accelerator-network-profile: auto hinzu. Wenn Sie Arbeitslasten auf diesen Knoten planen möchten, müssen Sie dieses Label in die nodeSelector Ihrer Arbeitslast aufnehmen.
Weitere Informationen zum Erstellen von Knotenpools mit Beschleunigern finden Sie unter GPUs in Autopilot-Knotenpools ausführen und TPU-Arbeitslasten in Autopilot bereitstellen. Wenn Sie der Anleitung in diesen Dokumenten folgen, hängen Sie das Flag --accelerator-network-profile=auto an den Befehl gcloud container node-pools create an.
Für TPU-Slice-Knotenpools mit mehreren Hosts müssen Sie auch das Flag --tpu-topology hinzufügen.
Ersetzen Sie Folgendes:
NODE_POOL_NAMEist der Name des neuen Knotenpools.ZONE: Die Zone für den Knotenpool.MACHINE_TYPE: Der Maschinentyp für die Knoten, z. B.a3-ultragpu-8g.
REST
Geben Sie in einer Anfrage an die Methode nodePools.create das Feld accelerator_network_profile an:
{
"nodePool": {
"name": "NODE_POOL_NAME",
"machineType": "MACHINE_TYPE",
...
"accelerator_network_profile": "auto"
}
}
Ersetzen Sie Folgendes:
NODE_POOL_NAMEist der Name des neuen Knotenpools.MACHINE_TYPE: Der Maschinentyp für die Knoten, z. B.a3-ultragpu-8g.
Automatische Netzwerke mit automatischer Knotenbereitstellung aktivieren
Wenn Sie das automatisierte Netzwerk in Autopilot-Clustern oder Standardclustern konfigurieren möchten, die die automatische Knotenbereitstellung verwenden, fügen Sie das Feld acceleratorNetworkProfile einer ComputeClass-Ressource hinzu.
Das folgende ComputeClass-Beispielmanifest aktiviert die automatisierte Netzwerkverwaltung für A3 Mega-Maschinen. Speichern Sie das folgende Manifest als
anp-compute-class.yaml:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: anp-a3-mega-class spec: autopilot: enabled: true nodePoolAutoCreation: enabled: true priorities: # Priority 1: A3 Mega in us-central1-a - machineType: a3-megagpu-8g gpu: count: 8 driverVersion: default type: nvidia-h100-mega-80gb flexStart: enabled: true location: zones: [us-central1-a] acceleratorNetworkProfile: auto whenUnsatisfiable: DoNotScaleUpWenden Sie das Manifest auf Ihren Cluster an:
kubectl apply -f anp-compute-class.yaml
Wenn Sie eine Arbeitslast bereitstellen, die diese ComputeClass-Ressource auswählt, konfiguriert GKE automatisch die erforderlichen Netzwerkschnittstellen für die bereitgestellten Knoten.
Arbeitslast planen, die GPUs verwendet
In den folgenden Abschnitten erfahren Sie, wie Sie einen GPU-Knotenpool und eine Arbeitslast für die Verwendung von RDMA-Netzwerkschnittstellen mit von GKE verwaltetem DRANET konfigurieren. Weitere Informationen finden Sie unter Netzwerkressourcen mit von GKE verwaltetem DRANET zuweisen.
Von GKE verwalteten DRANET-Treiber in einem GPU-Knotenpool aktivieren
Wenn Sie den GKE-DRANET-Treiber in einem GPU-Knotenpool aktivieren möchten, der RDMA unterstützt, fügen Sie beim Erstellen des Knotenpools das Label cloud.google.com/gke-networking-dra-driver=true hinzu.
gcloud beta container node-pools create NODE_POOL_NAME \
--region=REGION \
--cluster=CLUSTER_NAME \
--node-locations=NODE_LOCATIONS \
--accelerator type=ACCELERATOR_TYPE,count=ACCELERATOR_COUNT,gpu-driver-version=DRIVER_VERSION \
--machine-type=MACHINE_TYPE \
--num-nodes=NUM_NODES \
--reservation-affinity=specific \
--reservation=projects/RESERVATION_PROJECT/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK \
--accelerator-network-profile=auto \
--node-labels=cloud.google.com/gke-networking-dra-driver=true
Ersetzen Sie Folgendes:
NODE_POOL_NAMEist der Name des neuen Knotenpools.REGION: die Google Cloud Region für Ihren Cluster.CLUSTER_NAME: Der Name Ihres Clusters.ACCELERATOR_TYPE: der Typ des GPU-Beschleunigers:Beispiel:
- A4-VMs: Geben Sie
nvidia-b200ein. - A3-Ultra-VMs: Geben Sie
nvidia-h200-141gbein.
- A4-VMs: Geben Sie
ACCELERATOR_COUNT: Die Anzahl der GPUs, die an Knoten im Knotenpool angehängt werden sollen. Sowohl für a4-highgpu-8g- als auch für a3-ultragpu-8g-VMs beträgt die Anzahl der GPUs beispielsweise 8.DRIVER_VERSION: die zu verwendende GPU-Treiberversion. Beispiel:defaultoderlatestMACHINE_TYPE: der Maschinentyp für den Knotenpool, z. B.a3-ultragpu-8g.NUM_NODES: die Anzahl der Knoten für den Knotenpool. Für „flex-start“ muss dieser Wert auf 0 gesetzt werden.RESERVATION_PROJECT: die Projekt-ID der Reservierung.RESERVATION_NAME: der Name Ihrer Reservierung. Informationen zum Ermitteln dieses Werts finden Sie unter Anfragen für vorausschauende Reservierungen ansehen.RESERVATION_BLOCK: der Name eines bestimmten Blocks innerhalb der Reservierung. Informationen zum Ermitteln dieses Werts finden Sie unter Anfragen für vorausschauende Reservierungen ansehen.
Dieser Befehl verwendet Netzwerkprofile für Beschleuniger, um VPC-Netzwerke und Subnetze für Ihre Beschleuniger-VMs automatisch zu konfigurieren. Alternativ können Sie Ihr VPC-Netzwerk und Ihre Subnetze explizit angeben.
RDMA-Ressourcen für eine Arbeitslast bereitstellen
Geben Sie einen ResourceClaimTemplate an, um RDMA-Ressourcen für einen Pod zuzuweisen.
Erstellen Sie eine
ResourceClaimTemplate, um zu definieren, wie die RDMA-Geräte zugewiesen werden sollen. Im folgenden Manifest werden alle verfügbarenmrdma-Geräte auf dem Knoten angefordert. Speichern Sie das Manifest alsall-mrdma-template.yaml:apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: all-mrdma spec: spec: devices: requests: - name: req-mrdma exactly: deviceClassName: mrdma.google.com allocationMode: AllWenden Sie das Manifest an:
kubectl apply -f all-mrdma-template.yamlStellen Sie Ihre Arbeitslast bereit und verweisen Sie auf die
ResourceClaimTemplate. Mit dem folgenden Manifest wird ein Pod bereitgestellt, der auf die Vorlageall-mrdmaverweist. Dadurch erhält der Pod Zugriff auf die RDMA-Schnittstellen auf dem Knoten. Speichern Sie das Manifest alsagnhost-rdma-pod.yaml:apiVersion: v1 kind: Pod metadata: name: agnhost-rdma namespace: default labels: app: agnhost spec: containers: - name: agnhost image: registry.k8s.io/e2e-test-images/agnhost:2.39 args: ["netexec", "--http-port", "80"] ports: - name: agnhost-port containerPort: 80 resources: claims: - name: rdma limits: nvidia.com/gpu: 1 resourceClaims: - name: rdma resourceClaimTemplateName: all-mrdmaWenden Sie das Manifest an:
kubectl apply -f agnhost-rdma-pod.yamlPrüfen Sie, ob die zusätzlich zugewiesenen Netzwerkschnittstellen im Pod sichtbar sind.
kubectl exec agnhost-rdma -- ls /sys/class/netDie folgende Beispielausgabe zeigt die Standardschnittstellen
eth0undlosowie die zugewiesenen RDMA-Schnittstellen, z. B.gpu0rdma0. Die Anzahl und die Namen der Netzwerkschnittstellen (NICs) variieren je nach Maschinentyp des GKE-Knotens.eth0 gpu0rdma0 gpu1rdma0 gpu2rdma0 gpu3rdma0 lo
Arbeitslast planen, die TPUs verwendet
In den folgenden Abschnitten erfahren Sie, wie Sie einen TPU-Knotenpool und eine Arbeitslast so konfigurieren, dass nicht-RDMA-Netzwerkschnittstellen mit dem von GKE verwalteten DRANET verwendet werden. Weitere Informationen finden Sie unter Netzwerkressourcen mit von GKE verwaltetem DRANET zuweisen.
Netzwerk-DeviceClasses prüfen
Prüfen Sie, ob die DeviceClass-Ressourcen für das Netzwerk in Ihrem Cluster vorhanden sind.
kubectl get deviceclass netdev.google.com
Die Ausgabe sieht etwa so aus:
NAME AGE
netdev.google.com 2d22h
Von GKE verwalteten DRANET-Treiber in einem TPU-Slice-Knotenpool aktivieren
Wenn Sie den GKE-DRANET-Treiber beim Erstellen eines TPU-Slice-Knotenpools aktivieren möchten, fügen Sie das Label cloud.google.com/gke-networking-dra-driver=true hinzu.
gcloud beta container node-pools create NODE_POOL_NAME \
--location=LOCATION \
--cluster=CLUSTER_NAME \
--node-locations=NODE_LOCATIONS \
--machine-type=MACHINE_TYPE \
--tpu-topology=TPU_TOPOLOGY \
--num-nodes=NUM_NODES \
--accelerator-network-profile=auto \
--node-labels=cloud.google.com/gke-networking-dra-driver=true
Ersetzen Sie Folgendes:
NODE_POOL_NAME: Der Name des neuen Knotenpools.LOCATION: Die Google Cloud Region oder Zone für Ihren Cluster.CLUSTER_NAMEist der Name Ihres Clusters.NODE_LOCATIONS: Die Google Cloud Zonen für die Knoten im Knotenpool.MACHINE_TYPE: Der Maschinentyp für Knoten. Weitere Informationen zu TPU-kompatiblen Maschinentypen finden Sie unter TPU-Version auswählen.TPU_TOPOLOGY: Die TPU-Topologie, z. B.2x4x4. Das Format der Topologie hängt von der TPU-Version ab. Weitere Informationen zu TPU-Topologien finden Sie unter Topologie auswählen.NUM_NODES: Die maximale Anzahl von Knoten im Knotenpool.
Weitere Informationen finden Sie unter TPU-Slice-Knotenpool mit einem Host erstellen.
Arbeitslast bereitstellen, die alle Netzwerkgeräte beansprucht
Wenn Sie einem Pod Nicht-RDMA-Netzwerkgeräte zuweisen möchten, geben Sie einen ResourceClaimTemplate an.
Erstellen Sie einen
ResourceClaimTemplate, der auf dieDeviceClassnetdev.google.comverweist. Im folgenden Manifest werden alle verfügbaren Nicht-RDMA-Netzwerkgeräte auf dem Knoten angefordert.Speichern Sie das Manifest als
all-netdev-template.yaml:apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: all-netdev spec: spec: devices: requests: - name: req-netdev exactly: deviceClassName: netdev.google.com allocationMode: AllWenden Sie das Manifest an:
kubectl apply -f all-netdev-template.yamlStellen Sie Ihre Arbeitslast bereit und verweisen Sie auf die
ResourceClaimTemplate. Mit dem folgenden Manifest wird ein Pod bereitgestellt, der die Vorlageall-netdevverwendet, um dem Pod Zugriff auf alle Nicht-RDMA-Netzwerkgeräte auf dem Knoten zu gewähren. Speichern Sie das Manifest alsnetdev-pod.yaml:apiVersion: v1 kind: Pod metadata: name: agnhost-netdev namespace: default labels: app: agnhost spec: containers: - name: agnhost image: registry.k8s.io/e2e-test-images/agnhost:2.39 args: ["netexec", "--http-port", "80"] ports: - name: agnhost-port containerPort: 80 resources: claims: - name: netdev limits: google.com/tpu: 4 nodeSelector: cloud.google.com/gke-tpu-accelerator: TPU_ACCELERATOR cloud.google.com/gke-tpu-topology: TPU_TOPOLOGY resourceClaims: - name: netdev resourceClaimTemplateName: all-netdevErsetzen Sie Folgendes:
TPU_ACCELERATOR: Der TPU-Beschleunigertyp, z. B.tpu-v5p-slice.TPU_TOPOLOGY: Die TPU-Topologie, z. B.2x4x4.
Wenden Sie das Manifest an:
kubectl apply -f netdev-pod.yamlPrüfen Sie, ob die zusätzlich zugewiesenen Netzwerkschnittstellen im Pod sichtbar sind.
kubectl exec agnhost-netdev -- ls /sys/class/netDie folgende Beispielausgabe zeigt die Standardschnittstellen
eth0undlosowie die zugewiesenen Netzwerkgeräte mit Namen wieeth1undeth2. Die Anzahl der NICs und ihre Namen variieren je nach Maschinentyp des GKE-Knotens.eth0 eth1 eth2 lo
Fehlerbehebung
Führen Sie den folgenden Befehl aus, um die Netzwerkeinrichtung für einen Knotenpool zu prüfen:
gcloud beta container node-pools describe NODE_POOL_NAME \
--zone=ZONE \
--cluster=CLUSTER_NAME
Ersetzen Sie Folgendes:
NODE_POOL_NAME: Der Name des Knotenpools.ZONE: die Zone des Knotenpools.CLUSTER_NAME: Der Name Ihres Clusters.
In der Ausgabe werden die zusätzlichen Netzwerke und Subnetzwerke angezeigt, die an den Knotenpool angehängt sind.
Nächste Schritte
- Beschleunigungsoptimierte Maschinen
- GPUs mit DRA bereitstellen
- Unterstützung mehrerer Netzwerke für Pods einrichten
- Netzwerkressourcen mit von GKE verwaltetem DRANET zuweisen