Skapa en fullständigt hanterad GPU-nodpool i Azure Kubernetes Service (AKS) (förhandsversion)

Om du kör NVIDIA GPU-arbetsbelastningar på Azure Kubernetes Service (AKS) måste du traditionellt installera och underhålla NVIDIA GPU-drivrutinen, Kubernetes-enhetsinsticksprogrammet och en GPU-måttexportör på varje GPU-nod. Dessa komponenter möjliggör GPU-schemaläggning, GPU-åtkomst på containernivå och telemetri, men om du installerar dem manuellt eller via NVIDIA GPU-operatorn läggs driftkostnaderna till.

Med fullständigt hanterade GPU-noder (förhandsversion) installerar och underhåller AKS NVIDIA GPU-drivrutinen, enhets-plugin-programmet och DCGM-måttexportören ( Data Center GPU Manager) åt dig. Skapandet av GPU-nodpoolen blir ett enda steg och GPU-kapaciteten fungerar som alla andra AKS-nodpooler.

Du konfigurerar en hanterad GPU-nodpool via två fält under gpuProfile.nvidia:

  • managementMode (Managed eller Unmanaged) styr om AKS installerar den fullständiga hanterade GPU-stacken (drivrutins-, enhets-plugin- och DCGM-måttexportör) eller endast drivrutinen. Standardvärdet är Unmanaged.
  • migStrategy (None, Single, eller Mixed) anger mig-strategin (Multi-Instance GPU) för GPU-SKU:er som stöds, till exempel A100 och H100. Standardvärdet är None.

I den här artikeln etablerar du en hanterad GPU-noder pool, aktiverar MIG, verifierar stacken och kör en exempel-GPU-arbetsbelastning.

Viktigt!

AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning och frivillig registrering. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. AKS-förhandsversioner stöds delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:

Innan du börjar

Hanterade GPU-komponenter

En hanterad GPU-nodpool kan innehålla följande komponenter på varje nod:

Komponent Vad det gör Vad AKS hanterar
NVIDIA GPU-drivrutin Kernel-moduler och användarutrymmesbibliotek som låter operativsystemet och containrarna prata med GPU-maskinvaran. Val av drivrutinsversion, installation vid nodetablering och ominstallation efter nodbilduppgraderingar.
NVIDIA Kubernetes-enhetsinsticksprogram DaemonSet-motsvarighet som annonserar GPU-resurser (nvidia.com/gpu, nvidia.com/mig-*) till kubelet så att poddar kan begära dem. Distribution, konfiguration (inklusive MIG-strategi) och livscykel på varje GPU-nod.
NVIDIA DCGM och DCGM-metrikexportör Data Center GPU Manager samlar in GPU-hälso- och användningsdata och exponerar Prometheus-mått (till exempel DCGM_FI_DEV_GPU_UTIL, DCGM_FI_DEV_GPU_TEMP) på port 19400. Installation, aktivering av tjänster och nodetiketten kubernetes.azure.com/dcgm-exporter=enabled som används för att skrapa metriker.
GPU-hälsosignaler NPD-signaler som visar GPU-specifika nodförhållanden som UnhealthyNvidiaDevicePlugin och UnhealthyNvidiaDCGMServices. NPD-övervakning och villkorsrapportering på GPU-noder.

Installera profiler

Två gpuProfile fält bestämmer vilka av dessa komponenter SOM AKS installerar:

  • gpuProfile.driver (Install eller None): om AKS installerar NVIDIA GPU-drivrutinen.
  • gpuProfile.nvidia.managementMode (Managed eller Unmanaged): om AKS även installerar Den Kubernetes-riktade GPU-stacken ovanpå drivrutinen.

Tillsammans skapar de tre installationsprofiler:

Installera profil CLI-flaggor Vad AKS installerar och hanterar
Fullt hanterad stack --enable-managed-gpu=true (eller ingen flagga) Alla fyra komponenterna ovan: drivrutin, enhetsplugin, DCGM-måttexportör och GPU-hälsokontroll i NPD.
Endast drivrutin (standard) --enable-managed-gpu=false NVIDIA GPU-drivrutin endast. Du installerar och hanterar enhetens plugin-program, måttexportör och hälsoövervakning själv (till exempel med NVIDIA GPU-operatorn).
Ingen (BYO) --enable-managed-gpu=false --gpu-driver None Ingenting. AKS installerar inte någon av de fyra komponenterna. Du äger hela stacken. Se Ta med din egen GPU-drivrutin.

Standardvärden och åsidosättningar

  • Standardvärden: Om du inte skickar --enable-managed-gpu eller --gpu-driveranvänder AKS profilen Endast drivrutin i nodpoolen som skapats med en NVIDIA GPU-aktiverad VM-storlek.
  • Åsidosättning: managementMode: Managed kräver drivrutinen, så --gpu-driver None ignoreras när --enable-managed-gpu=true och drivrutinen fortfarande är installerad. För att hoppa över drivrutinen anger du både --enable-managed-gpu=false och --gpu-driver None.
  • Oföränderlighet: managementMode, migStrategyoch driver är alla fasta vid skapandetillfället. Om du vill ändra profil skapar du en ny nodpool.

Installera aks-preview CLI-tillägget

  1. Installera aks-preview CLI-tillägget genom att använda az extension add kommandot. Version 19.0.0b29 eller senare krävs.

    az extension add --name aks-preview
    
  2. Uppdatera tillägget för att säkerställa att du har den senaste versionen installerad med hjälp av kommandot az extension update.

    az extension update --name aks-preview
    

Registrera funktionsflaggan ManagedGPUExperiencePreview

Registrera funktionsflaggan ManagedGPUExperiencePreview i din prenumeration med kommandot az feature register.

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

Begränsningar

  • Den här funktionen stöder för närvarande endast NVIDIA GPU-aktiverade virtuella maskinstorlekar (VM).
  • Uppdatering av en generell nodpool för att lägga till en GPU VM-storlek stöds inte i AKS.
  • Windows nodpooler stöds inte med den här funktionen eftersom GPU-mått inte stöds. När du skapar Windows GPU-nodpooler installerar och hanterar AKS automatiskt drivrutinerna och DirectX-enhets-plugin-programmet. Mer information finns i dokumentationen AKS Windows GPU.
  • Det går inte att migrera befintliga GPU-nodpooler med flera instanser för att använda den här funktionen.
  • Uppgraderingar på plats från en befintlig NVIDIA GPU-nodpool till en hanterad GPU-nodpool stöds inte. Om du vill migrera, spärra och tömma dina befintliga GPU-noder distribuerar du sedan om arbetsbelastningarna till en ny GPU-nodpool som skapats med --enable-managed-gpu=true. Mer information finns i Ändra storlek på nodpooler på AKS.
  • Fälten managementMode, migStrategyoch driver under gpuProfile är oföränderliga när nodpoolen har skapats. Om du vill ändra dessa värden skapar du en ny nodpool.
  • Autoskalning av kluster stöds inte i hanterade GPU-nodpooler under förhandsversionen. Skala dessa grupper manuellt.

Anmärkning

GPU-aktiverade virtuella maskiner innehåller specialiserad hårdvara som är föremål för högre prissättning och regionsspecifik tillgänglighet. Mer information finns i prisverktyget och regionens tillgänglighet.

Skapa en AKS-hanterad GPU-nodpool (förhandsversion)

Lägg till en hanterad GPU-nodpool i ett befintligt AKS-kluster genom att skicka --enable-managed-gpu=true till az aks nodepool add. AKS ställer in gpuProfile.nvidia.managementModeManaged och installerar GPU-drivrutinen, enhets-plugin-programmet och DCGM-måttexportören automatiskt.

Om du vill använda standard-SKU:n för Ubuntu-operativsystemet (OS) skapar du nodpoolen utan att ange en OS-SKU. Nodpoolen är konfigurerad för standardoperativsystemet baserat på Kubernetes-versionen av klustret.

  1. Lägg till en nodpool i klustret med kommandot az aks nodepool add med --enable-managed-gpu=true flaggan .

    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. Kontrollera att de hanterade NVIDIA GPU-programvarukomponenterna har installerats:

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

    Dina utdata bör innehålla följande värden:

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

Skapa en hanterad nodpool för Multi-Instance GPU (MIG) (förhandsgranskning)

För GPU-SKU:er som stöder GPU för flera instanser (till exempel A100 och H100) konfigurerar du en MIG-strategi vid skapandet av nodpoolen --gpu-mig-strategy med flaggan . Strategin styr hur MIG-partitioner exponeras för Kubernetes:

  • Single: Alla MIG-instanser aggregeras under standardresursen nvidia.com/gpu .
  • Mixed: Varje MIG-profil exponeras som en separat resurs, till exempel nvidia.com/mig-1g.10gb.
  • None (standard): MIG är inte konfigurerat.

Fältet migStrategy kan inte ändras när nodpoolen har skapats.

Bakgrund om MIG-partitionering, vm-storlekar som stöds och GPU-instansprofiler finns i Skapa en GPU-nodpool med flera instanser i AKS och 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

Med den här konfigurationen begär poddar GPU-resurser med hjälp av standardresursnamnet nvidia.com/gpu .

Verifiera den hanterade GPU-nodpoolen (förhandsversion)

När nodpoolen är klar kör du följande kontroller för att bekräfta att den fullständiga hanterade stacken är installerad och felfri.

  1. Verifiera GPU-specifika nodvillkor från Nodproblemidentifiering (NPD):

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

    På en hanterad GPU-nod bör följande villkor båda rapportera False:

    Tillstånd Status Förnuft
    UnhealthyNvidiaDevicePlugin False HealthyNvidiaDevicePlugin
    UnhealthyNvidiaDCGMServices False HealthyNvidiaDCGMServices
  2. Kontrollera att den hanterade GPU-etiketten finns på noden:

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

    Förväntade utdata: enabled.

  3. Kontrollera att GPU-resurser annonseras i nodens allokerbara resurser:

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

    För en icke-MIG-nodpool inkluderar utdata "nvidia.com/gpu": "1" (eller mer beroende på SKU). För en MIG-nodpool Mixed innehåller utdata MIG-specifika resurser, till exempel "nvidia.com/mig-1g.10gb": "7".

  4. Kör en exempelarbetsbelastning för att bekräfta GPU-åtkomst inifrån en container:

    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
    

    Visa poddloggarna för att se nvidia-smi utdata som visar GPU-enheten, drivrutinsversionen och CUDA-versionen:

    kubectl logs managed-gpu-test
    

Skala en hanterad GPU-nodpool (förhandsversion)

Skala en hanterad GPU-nodpool manuellt med az aks nodepool scale. Nya noder installerar den fullständiga hanterade GPU-stacken.

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

Viktigt!

Under förhandsversionen stöder hanterade GPU-nodpooler inte autoskalning av kluster. Skala dessa poolar manuellt.

Alternativa installationsprofiler

Om den fullständiga hanterade stackprofilen inte passar rätt stöder AKS två alternativa profiler i GPU-nodpooler.

Använd den här profilen när du vill att AKS ska installera och underhålla NVIDIA GPU-drivrutinen, men du planerar att distribuera enhets-plugin-programmet och måttexportören själv (till exempel med NVIDIA GPU-operatorn). Ange --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

Med den här konfigurationen:

  • AKS installerar och hanterar NVIDIA GPU-drivrutinen (gpuProfile.driver är Install).
  • AKS installerar inte ett enhets-plugin-program, DCGM-måttexportör eller GPU-hälsoregler. gpuProfile.nvidia är null.
  • Ingen nvidia.com/gpu resurs publiceras förrän du distribuerar ett enhetsinsticksprogram.

Nästa steg