Erstellen eines vollständig verwalteten GPU-Knotenpools in Azure Kubernetes Service (AKS) (Vorschau)

Zum Ausführen von NVIDIA GPU-Workloads auf Azure Kubernetes Service (AKS) müssen Sie traditionell den NVIDIA GPU-Treiber, das Kubernetes-Geräte-Plug-In und einen GPU-Metrikexporteur auf jedem GPU-Knoten installieren und verwalten. Diese Komponenten ermöglichen gpu-Planung, GPU-Zugriff auf Containerebene und Telemetrie, aber die manuelle Installation oder über den NVIDIA GPU-Operator erhöht den Betriebsaufwand.

Mit vollständig verwalteten GPU-Knoten (Vorschau) installiert und verwaltet AKS den NVIDIA GPU-Treiber, das Geräte-Plug-In und den Data Center GPU Manager (DCGM)-Metrikexporteur für Sie. Die Erstellung des GPU-Knotenpools wird zu einem einzigen Schritt, und die GPU-Kapazität verhält sich wie jeder andere AKS-Knotenpool.

Sie konfigurieren einen verwalteten GPU-Knotenpool über zwei Felder unter gpuProfile.nvidia:

  • managementMode (Managed oder Unmanaged) steuert, ob AKS den vollständig verwalteten GPU-Stapel (Treiber, Geräte-Plug-In und DCGM-Metrikexporteur) oder nur den Treiber installiert. Der Standardwert lautet Unmanaged.
  • migStrategy (None, Single oder Mixed) legt die Strategie für die Multi-Instance GPU (MIG) für unterstützte GPU-SKUs wie A100 und H100 fest. Der Standardwert lautet None.

In diesem Artikel stellen Sie einen verwalteten GPU-Knotenpool bereit, optional MIG aktivieren, den Stapel überprüfen und eine BEISPIEL-GPU-Workload ausführen.

Von Bedeutung

AKS-Vorschaufunktionen sind auf Selbstbedienungsbasis und freiwillig verfügbar. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:

Bevor Sie anfangen

Verwaltete GPU-Komponenten

Ein verwalteter GPU-Knotenpool kann die folgenden Komponenten auf jedem Knoten enthalten:

Bestandteil Was es tut Was AKS verwaltet
NVIDIA GPU-Treiber Kernelmodule und Benutzerraumbibliotheken, mit denen das Betriebssystem und container mit der GPU-Hardware kommunizieren können. Treiberversionauswahl, Installation bei der Knoten-Bereitstellung sowie Neuinstallation nach Knotenabbild-Upgrades.
NVIDIA Kubernetes Geräte-Plug-In DaemonSet-Äquivalent, das GPU-Ressourcen (nvidia.com/gpu, nvidia.com/mig-*) für das kubelet ankündigt, damit Pods sie anfordern können. Bereitstellung, Konfiguration (einschließlich MIG-Strategie) und Lebenszyklus auf jedem GPU-Knoten.
NVIDIA DCGM- und DCGM-Metrikexporteur Data Center GPU Manager sammelt GPU-Gesundheits- und Nutzungsdaten und macht Prometheus-Metriken (z. B. DCGM_FI_DEV_GPU_UTIL, DCGM_FI_DEV_GPU_TEMP) am Port 19400 verfügbar. Installation, Dienstaktivierung und die zum Auslesen von Metriken verwendete Knotenbezeichnung kubernetes.azure.com/dcgm-exporter=enabled.
GPU-Integritätssignale NPD-Signale, die GPU-spezifische Knotenbedingungen wie UnhealthyNvidiaDevicePlugin und UnhealthyNvidiaDCGMServices aufzeigen. NPD-Überwachung und Zustandsberichte auf GPU-Knoten.

Profile installieren

Zwei gpuProfile Felder entscheiden, welche dieser Komponenten AKS installiert:

  • gpuProfile.driver (Install oder None): ob AKS den NVIDIA GPU-Treiber installiert.
  • gpuProfile.nvidia.managementMode (Managed oder Unmanaged): ob AKS auch den auf Kubernetes ausgerichteten GPU-Stack über dem Treiber installiert.

Gemeinsam produzieren sie drei Installationsprofile:

Profil installieren CLI-Flags Was AKS installiert und verwaltet
Vollständig verwalteter Stapel --enable-managed-gpu=true (oder keines der Flags) Alle vier genannten Komponenten: Treiber, Geräte-Plugin, DCGM-Metrikenexporteur und GPU-Zustandsüberwachung in NPD.
Nur Treiber (Standard) --enable-managed-gpu=false NUR NVIDIA GPU-Treiber. Sie installieren und verwalten das Geräte-Plugin, den Metrik-Exporter und die Integritätsprüfung selbst (z. B. mit dem NVIDIA GPU Operator).
None (BYO) --enable-managed-gpu=false --gpu-driver None Nichts. AKS installiert keine der vier Komponenten. Sie besitzen den gesamten Technologie-Stack. Siehe Bring Your Own GPU Driver.

Standardeinstellungen und Außerkraftsetzungen

  • Standardwerte: Wenn Sie --enable-managed-gpu oder --gpu-driver nicht übergeben, wendet AKS das Profil nur Treiber auf den Knotenpool an, der mit einer NVIDIA GPU-fähigen VM-Größe erstellt wurde.
  • Außerkraftsetzung: managementMode: Managed erfordert den Treiber, daher wird --gpu-driver None ignoriert, wenn --enable-managed-gpu=true und der Treiber noch installiert ist. Um den Treiber zu überspringen, setzen Sie sowohl --enable-managed-gpu=false als auch --gpu-driver None.
  • Unveränderlichkeit: managementMode, migStrategy, und driver sind alle zur Erstellungszeit festgelegt. Um das Profil zu ändern, erstellen Sie einen neuen Knotenpool.

Installieren Sie die aks-preview-Erweiterung für die Befehlszeilenschnittstelle

  1. Installieren Sie die CLI-Erweiterung aks-preview mit dem Befehl az extension add. Version 19.0.0b29 oder höher ist erforderlich.

    az extension add --name aks-preview
    
  2. Aktualisieren Sie die Erweiterung mit dem Befehl az extension update, um sicherzustellen, dass Sie die neueste Version installiert haben.

    az extension update --name aks-preview
    

Registriere die ManagedGPUExperiencePreview-Feature-Flag

Registrieren Sie die Feature-Flag ManagedGPUExperiencePreview in Ihrem Abonnement mithilfe des az feature register-Befehls.

az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview

Einschränkungen

  • Dieses Feature unterstützt derzeit nur NVIDIA GPU-fähige VM-Größen.This feature currently supports NVIDIA GPU-enabled virtual machine (VM) sizes only.
  • Das Aktualisieren eines allgemeinen Knotenpools zum Hinzufügen einer GPU-VM-Größe wird auf AKS nicht unterstützt.
  • Windows Knotenpools werden mit diesem Feature nicht unterstützt, da GPU-Metriken nicht unterstützt werden. Wenn Sie Windows GPU-Knotenpools erstellen, installiert und verwaltet AKS automatisch die Treiber und das DirectX-Geräte-Plug-In. Weitere Informationen finden Sie in der Dokumentation AKS Windows GPU.
  • Das Migrieren ihrer vorhandenen GPU-Knotenpools mit mehreren Instanzen zur Verwendung dieses Features wird nicht unterstützt.
  • Direkte Upgrades von einem vorhandenen NVIDIA GPU-Knotenpool zu einem verwalteten GPU-Knotenpool werden nicht unterstützt. Um Ihre vorhandenen GPU-Knoten zu migrieren, sperren und leeren Sie diese ab. Stellen Sie anschließend Ihre Workloads in einem neuen GPU-Knotenpool bereit, der mit --enable-managed-gpu=true erstellt wurde. Weitere Informationen finden Sie unter Ändern der Größe von Knotenpools auf AKS.
  • Die Felder managementMode, migStrategy und driver von gpuProfile sind nach der Erstellung des Knotenpools unveränderlich. Um diese Werte zu ändern, erstellen Sie einen neuen Knotenpool.
  • Der Cluster-Autoscaler wird in verwalteten GPU-Knotenpools während der Vorschau nicht unterstützt. Diese Pools manuell skalieren.

Hinweis

GPU-fähige virtuelle Computer verfügen über spezielle Hardware, für die höhere Preise gelten und die möglicherweise nicht in allen Regionen verfügbar ist. Weitere Informationen finden Sie im Preistool und zur regionalen Verfügbarkeit.

Erstellen eines AKS-verwalteten GPU-Knotenpools (Vorschau)

Fügen Sie einen verwalteten GPU-Knotenpool zu einem vorhandenen AKS-Cluster hinzu, indem Sie --enable-managed-gpu=true an az aks nodepool add übergeben. AKS konfiguriert automatisch gpuProfile.nvidia.managementMode auf Managed und installiert den GPU-Treiber, das Geräte-Plugin und den Exporter der DCGM-Metriken.

Um die Standardmäßige Ubuntu-Betriebssystem-SKU (OS) zu verwenden, erstellen Sie den Knotenpool, ohne eine Betriebssystem-SKU anzugeben. Der Knotenpool wird basierend auf der Kubernetes-Version des Clusters für das Standardbetriebssystem konfiguriert.

  1. Fügen Sie Ihrem Cluster mithilfe des Befehls az aks nodepool add und der Kennzeichnung --enable-managed-gpu=true einen Knotenpool hinzu.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --node-vm-size Standard_NC6s_v3 \
        --node-taints sku=gpu:NoSchedule \
        --enable-managed-gpu=true
    
  2. Vergewissern Sie sich, dass die verwalteten NVIDIA GPU-Softwarekomponenten erfolgreich installiert werden:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp
    

    Ihre Ausgabe sollte die folgenden Werte einschließen:

    ...
    "gpuProfile": {
        "driver": "Install",
        "driverType": "",
        "nvidia": {
            "managementMode": "Managed",
            "migStrategy": null
        }
    },
    ...
    

Erstellen eines verwalteten GPU-Knotenpools mit mehreren Instanzen (MIG) (Vorschau)

Konfigurieren Sie für GPU-SKUs, die Multi-Instance-GPU (z. B. A100 und H100) unterstützen, eine MIG-Strategie beim Erstellen des Knotenpools mit dem Flag --gpu-mig-strategy. Die Strategie steuert, wie MIG-Partitionen für Kubernetes bereitgestellt werden.

  • Single: Alle MIG-Instanzen werden unter der Standardressource nvidia.com/gpu aggregiert.
  • Mixed: Jedes MIG-Profil wird als separate Ressource verfügbar gemacht, z. B. nvidia.com/mig-1g.10gb.
  • None (Standard): MIG ist nicht konfiguriert.

Das migStrategy Feld ist unveränderlich, nachdem der Knotenpool erstellt wurde.

Hintergrundinformationen zur MIG-Partitionierung, unterstützten VM-Größen und GPU-Instanzprofilen finden Sie unter Erstellen eines GPU-Knotenpools mit mehreren Instanzen in AKS und NVIDIA Multi-Instance GPU.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mignp \
    --node-count 1 \
    --node-vm-size Standard_NC24ads_A100_v4 \
    --node-taints sku=gpu:NoSchedule \
    --enable-managed-gpu=true \
    --gpu-instance-profile MIG1g \
    --gpu-mig-strategy Single

Bei dieser Konfiguration fordern Pods GPU-Ressourcen mithilfe des Standardressourcennamens nvidia.com/gpu an.

Überprüfen des verwalteten GPU-Knotenpools (Vorschau)

Nachdem der Knotenpool fertig ist, führen Sie die folgenden Überprüfungen aus, um zu bestätigen, dass der vollständige verwaltete Stapel installiert und fehlerfrei ist.

  1. Überprüfen Sie GPU-spezifische Knotenbedingungen vom Knotenproblemdetektor (NPD):

    GPU_NODE=$(kubectl get nodes -l agentpool=gpunp -o jsonpath='{.items[0].metadata.name}')
    kubectl describe node $GPU_NODE
    

    Auf einem verwalteten GPU-Knoten sollten bei folgenden beiden Bedingungen False gemeldet werden:

    Zustand Status Grund
    UnhealthyNvidiaDevicePlugin False HealthyNvidiaDevicePlugin
    UnhealthyNvidiaDCGMServices False HealthyNvidiaDCGMServices
  2. Stellen Sie sicher, dass die verwaltete GPU-Bezeichnung auf dem Knoten vorhanden ist:

    kubectl get node $GPU_NODE -o jsonpath='{.metadata.labels.kubernetes\.azure\.com/dcgm-exporter}'
    

    Erwartete Ausgabe: enabled.

  3. Überprüfen Sie, ob GPU-Ressourcen in den zuteilbaren Ressourcen des Knotens aufgeführt werden:

    kubectl get node $GPU_NODE -o jsonpath='{.status.allocatable}'
    

    Bei einem Nicht-MIG-Knotenpool enthält die Ausgabe "nvidia.com/gpu": "1" (oder mehr, abhängig von der SKU). Für einen MIG-Knotenpool Mixed enthält die Ausgabe MIG-spezifische Ressourcen wie z. B. "nvidia.com/mig-1g.10gb": "7".

  4. Führen Sie einen Beispielworkload aus, um den GPU-Zugriff innerhalb eines Containers zu bestätigen:

    apiVersion: v1
    kind: Pod
    metadata:
      name: managed-gpu-test
    spec:
      restartPolicy: Never
      tolerations:
        - key: "sku"
          operator: "Equal"
          value: "gpu"
          effect: "NoSchedule"
      containers:
      - name: gpu-test
        image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu
        command: ["nvidia-smi"]
        resources:
          limits:
            nvidia.com/gpu: 1
    

    Sehen Sie sich in den Podprotokollen die nvidia-smi-Ausgabe an, die das GPU-Gerät, die Treiberversion und die CUDA-Version angibt:

    kubectl logs managed-gpu-test
    

Skalieren eines verwalteten GPU-Knotenpools (Vorschau)

Manuelles Skalieren eines verwalteten GPU-Knotenpools mit az aks nodepool scale. Neue Knoten installieren den vollständig verwalteten GPU-Stapel.

az aks nodepool scale \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 2

Von Bedeutung

Während der Vorschau unterstützen verwaltete GPU-Knotenpools die Cluster-Autoskaler nicht. Diese Pools manuell skalieren.

Alternative Installationsprofiloptionen

Wenn das vollständige verwaltete Stapelprofil nicht geeignet ist, unterstützt AKS zwei alternative Profile in GPU-Knotenpools.

Verwenden Sie dieses Profil, wenn AKS den NVIDIA GPU-Treiber installieren und verwalten soll, aber Sie planen, das Geräte-Plug-In und Metrikexportierer selbst bereitzustellen (z. B. mit dem NVIDIA GPU-Operator). Festlegen von --enable-managed-gpu=false:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 1 \
    --node-vm-size Standard_NC6s_v3 \
    --node-taints sku=gpu:NoSchedule \
    --enable-managed-gpu=false

Mit dieser Konfiguration:

  • AKS installiert und verwaltet den NVIDIA GPU-Treiber (gpuProfile.driver ist Install).
  • AKS installiert kein Geräte-Plugin, keinen DCGM-Metrics-Exporter oder keine GPU-Integritätsregeln. gpuProfile.nvidia ist null.
  • Keine nvidia.com/gpu Ressource wird angekündigt, bis Sie ein Geräte-Plugin bereitstellen.

Nächste Schritte