Tworzenie puli węzłów GPU o mieszanej strategii wieloinstancyjnej w Azure Kubernetes Service (AKS) (wersja zapoznawcza)

Wieloinstancyjny procesor GPU (MIG) dzieli zgodny procesor GPU NVIDIA na partycje z dedykowanymi zasobami obliczeniowymi i zasobami pamięci. W klastrze usługi AKS obciążenia żądają tych partycji za pośrednictwem rozszerzonych zasobów platformy Kubernetes. Użyj strategii mieszanego Multi-Instance GPU (MIG), aby dopasować rozmiary partycji GPU do obciążeń. Zamiast przypisywać cały procesor GPU do mniejszego obciążenia lub używać tego samego rozmiaru partycji dla każdego obciążenia, uruchamiaj obciążenia z różnymi potrzebami obliczeniowymi i pamięci na jednym procesorze GPU. Każda partycja ma izolowane zasoby obliczeniowe i pamięci. Takie podejście może zwiększyć wykorzystanie procesora GPU, pozwalając mniejszym obciążeniom współdzielić zasoby GPU wraz z większymi obciążeniami.

Na przykład procesor GPU NVIDIA A100 80 GB może zapewnić jedną dużą partycję, jedną średnią partycję i dwie małe partycje. Cztery obciążenia mogą być uruchamiane współbieżnie, a każde z nich korzysta z partycji o rozmiarze dostosowanym do swoich potrzeb, jak pokazano w poniższym przykładowym mieszanym układzie partycji.

Diagram przedstawiający przykładowy układ partycjonowania GPU z wieloma instancjami ze strategią mieszaną.

W tym artykule pokazano, jak utworzyć mieszaną pulę węzłów MIG, zweryfikować alokację partycji i uruchomić przykładowe obciążenia.

Aby zapoznać się z wyborem strategii, zobacz Strategie procesora GPU z wieloma wystąpieniami w usłudze AKS. Aby uzyskać informacje na temat jednolitych partycji, zobacz Utwórz pulę węzłów MIG z pojedynczą strategią.

Important

Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi i wymagają zapisania się. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów, świadczoną w miarę możliwości. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:

Przed rozpoczęciem

Przed skonfigurowaniem mieszanej puli węzłów MIG upewnij się, że masz następujące wymagania wstępne:

  • W tym artykule założono, że masz istniejący klaster AKS. Jeśli nie masz klastra, utwórz go przy użyciu Azure CLI, Azure PowerShell lub portalu Azure.
  • Masz zainstalowane Azure CLI w wersji 2.85.0 lub nowszej oraz rozszerzenie 22.0.0b15 w wersji aks-preview lub nowszej. Uruchom polecenie az --version , aby sprawdzić wersję Azure CLI.
  • Obsługiwany rozmiar maszyny wirtualnej z procesorem GPU z obsługą MIG dostępny w wybranym regionie usługi AKS. Upewnij się, że masz wystarczający limit przydziału rdzeni vCPU dla regionu i rodziny GPU dla rozmiaru maszyny wirtualnej i liczby węzłów, które planujesz wdrożyć.
  • Zgodny mieszany układ MIG dla wybranego procesora GPU. Wybierz obsługiwane profile partycji, które spełniają ograniczenia dotyczące pojemności i rozmieszczenia. Aby uzyskać szczegółowe informacje, zobacz Informacje o mieszanych profilach MIG.
  • Pula węzłów MIG używa obrazu węzła Linux usługi AKS opartego na wersji VHD 202609.01.0 lub nowszej.
  • Funkcje ManagedGPUExperiencePreview i MixedMIGStrategyPreview są zarejestrowane w subskrypcji. Instrukcje znajdziesz w Rejestrowanie funkcji w wersji zapoznawczej.

Limitations

  • Pule węzłów z jednostkami SKU systemu operacyjnego AzureContainerLinux i Windows nie są obecnie obsługiwane przez tę funkcję.
  • Ta funkcja nie obsługuje obecnie skalowania automatycznego węzłów MIG z mieszaną strategią przy użyciu AKS cluster autoscaler.
  • Konfiguracja strategii mieszanej musi spełniać wymagania dotyczące pojemności podziału GPU i ograniczeń rozmieszczenia.
  • Nie można zmienić konfiguracji profilu po utworzeniu puli węzłów MIG. Utwórz pulę zastępczą, aby zmienić układ lub przestać używać MIG. Nie próbuj wyłączać MIG, aktualizując strategię na None.

Omówienie mieszanych profili MIG

Profil, taki jak MIG3g, definiuje rozmiar jednej partycji GPU. Układ to zestaw profilów konfigurowanych w puli węzłów. Każdy profil w układzie tworzy jedną partycję, o którą wnioskują obciążenia jako o zasób rozszerzony.

Strategia MIG kontroluje zarówno konfigurację zgodnego profilu, jak i nazwy zasobów, o które żądają obciążenia.

Strategy Konfiguracja profilu Zasób obciążenia roboczego
Pojedynczy Określ dokładnie jeden profil, a następnie usługa AKS tworzy jednolity układ partycji. nvidia.com/gpu: Każda jednostka reprezentuje jedną partycję MIG, a nie cały fizyczny procesor GPU.
Mieszane Określ jeden lub więcej zgodnych profilów, które tworzą obsługiwany układ. Powtórz profil, aby zażądać wielu partycji tego rozmiaru. Zasób specyficzny dla profilu, taki jak nvidia.com/mig-1g.10gb.

Obsługiwane wartości profilu to MIG1g, MIG2g, MIG3g, MIG4g i MIG7g. W poniższej tabeli przedstawiono partycję, którą każdy profil tworzy na procesorze GPU NVIDIA A100 80 GB, takim jak procesor GPU w systemie Standard_NC24ads_A100_v4. Pamięć GPU dla profilu zależy od modelu GPU firmy NVIDIA.

Profile Wycinki obliczeniowe Partition Zasób obciążenia roboczego
MIG1g 1 1g.10gb nvidia.com/mig-1g.10gb
MIG2g 2 2g.20gb nvidia.com/mig-2g.20gb
MIG3g 3 3g.40gb nvidia.com/mig-3g.40gb
MIG4g 4 4g.40gb nvidia.com/mig-4g.40gb
MIG7g 7 7g.80gb nvidia.com/mig-7g.80gb

Przygotowywanie środowiska

Ustaw zmienne środowiskowe, zarejestruj funkcje w wersji zapoznawczej i połącz się z istniejącym klastrem przed dodaniem mieszanej puli węzłów MIG.

Ustawianie zmiennych środowiskowych

  1. Ustaw następujące zmienne środowiskowe dla istniejącego klastra. Przykładowe manifesty w dalszej części tego artykułu są używane dla programu migmixedMIXED_POOL.

    export SUBSCRIPTION_ID="<subscription-id>"
    export RESOURCE_GROUP="<my-resource-group>"
    export CLUSTER_NAME="<my-cluster-name>"
    export MIXED_POOL="<mig-pool-name>"
    

Rejestrowanie funkcji w wersji zapoznawczej

  1. Zainstaluj lub zaktualizuj aks-preview rozszerzenie.

    az extension add --name aks-preview --upgrade --yes
    
  2. ManagedGPUExperiencePreview Zarejestruj funkcję.

    az feature register \
      --namespace Microsoft.ContainerService \
      --name ManagedGPUExperiencePreview
    
  3. MixedMIGStrategyPreview Zarejestruj funkcję.

    az feature register \
      --namespace Microsoft.ContainerService \
      --name MixedMIGStrategyPreview
    
  4. Potwierdź stan rejestracji funkcji zarządzanej karty GPU.

    az feature show \
      --namespace Microsoft.ContainerService \
      --name ManagedGPUExperiencePreview \
      --query properties.state --output tsv
    
  5. Potwierdź stan rejestracji funkcji mixed MIG.

    az feature show \
      --namespace Microsoft.ContainerService \
      --name MixedMIGStrategyPreview \
      --query properties.state --output tsv
    
  6. Gdy oba stany zwrócą Registered, odśwież rejestrację dostawcy zasobów.

    az provider register --namespace Microsoft.ContainerService
    

Nawiązywanie połączenia z klastrem usługi AKS

  1. Pobierz poświadczenia klastra.

    az aks get-credentials \
      --resource-group "$RESOURCE_GROUP" \
      --name "$CLUSTER_NAME"
    
  2. Sprawdź połączenie i stan istniejących węzłów.

    kubectl get nodes
    

Włączanie mieszanego trybu MIG w nowej puli węzłów

Użyj Azure CLI, aby utworzyć mieszaną pulę węzłów MIG. Wybierz kartę dla jednostki SKU systemu operacyjnego węzła.

Aby użyć domyślnej jednostki SKU systemu operacyjnego, utwórz pulę węzłów bez określania jednostki SKU systemu operacyjnego. Pula węzłów jest skonfigurowana dla domyślnego systemu operacyjnego na podstawie wersji rozwiązania Kubernetes klastra.

Utwórz mieszaną pulę węzłów MIG przy użyciu następującego układu A100. Określ --enable-managed-gpu=true, --gpu-mig-strategy Mixed i listę profili MIG razem. Usługa AKS zachowuje podaną kolejność listy i obsługuje kolejność rozmieszczania podczas konfigurowania węzła.

az aks nodepool add \
  --resource-group "$RESOURCE_GROUP" \
  --cluster-name "$CLUSTER_NAME" \
  --name "$MIXED_POOL" \
  --node-vm-size "Standard_NC24ads_A100_v4" \
  --enable-managed-gpu=true \
  --gpu-mig-strategy Mixed \
  --gpu-mig-profiles MIG3g MIG2g MIG1g MIG1g \
  --node-count 1

Weryfikowanie mieszanej konfiguracji MIG

Sprawdź konfigurację puli węzłów, gotowość węzła i anonsowane zasoby oddzielnie. Pomyślne aprowizowanie węzła GPU nie potwierdza, że obciążenie może używać partycji.

  1. Sprawdź konfigurację puli i obraz węzła.

    az aks nodepool show \
      --resource-group "$RESOURCE_GROUP" \
      --cluster-name "$CLUSTER_NAME" \
      --name "$MIXED_POOL" \
      --query "{state:provisioningState,image:nodeImageVersion,gpu:gpuProfile.nvidia}" \
      --output json
    

    Upewnij się, że dane wyjściowe są zgodne z następującymi wartościami:

    Pole danych wyjściowych Oczekiwana wartość
    state Succeeded
    gpu.managementMode Managed
    gpu.driverMode DevicePlugin
    gpu.migStrategy Mixed
    gpu.migProfiles MIG3g, MIG2g, MIG1g, MIG1g (oba MIG1g wpisy)
  2. Poczekaj, aż węzły w mieszanej puli węzłów MIG staną się Ready.

    kubectl wait --for=condition=Ready node \
      -l agentpool="$MIXED_POOL" --timeout=600s
    
  3. Sprawdź zasoby NVIDIA, które można przydzielić, w każdym węźle w puli.

     kubectl describe nodes -l agentpool="$MIXED_POOL"
    

    W przypadku Standard_NC24ads_A100_v4 układu MIG3g MIG2g MIG1g MIG1g sekcja każdego węzła Allocatable powinna zawierać następujące liczby zasobów wraz z procesorem CPU, pamięcią i innymi zasobami:

    Allocatable:
       nvidia.com/mig-1g.10gb:  2
       nvidia.com/mig-2g.20gb:  1
       nvidia.com/mig-3g.40gb:  1
    

    Te liczby oznaczają przydzielalną pojemność, a nie raport o aktualnie niewykorzystanych przydziałach. Sprawdź zaplanowane żądania podów, aby określić pozostałe zasoby.

Uruchamiaj obciążenia w różnych rozmiarach podziału

Użyj dokładnych rozszerzonych nazw zasobów anonsowanych przez węzły. W poniższych przykładach zażądasz jednej 3g.40gb partycji i jednej 1g.10gb partycji. Każdy kontener uruchamia nvidia-smi raz w celu raportowania informacji o urządzeniu GPU, a następnie kończy działanie.

  1. Utwórz plik o nazwie mixed-mig-workloads.yaml z następującą zawartością manifestu. Selektory agentpool używają nazwy puli migmixed. Jeśli użyto innej nazwy dla MIXED_POOLelementu , zaktualizuj oba selektory.

    apiVersion: v1
    kind: Pod
    metadata:
      name: mixed-mig-pod-3g
    spec:
      restartPolicy: Never
      nodeSelector:
        agentpool: migmixed
      containers:
        - name: gpu-test
          image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu
          command: ["nvidia-smi"]
          resources:
            limits:
              nvidia.com/mig-3g.40gb: "1"
    ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: mixed-mig-pod-1g
    spec:
      restartPolicy: Never
      nodeSelector:
        agentpool: migmixed
      containers:
        - name: gpu-test
          image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu
          command: ["nvidia-smi"]
          resources:
            limits:
              nvidia.com/mig-1g.10gb: "1"
    

    Platforma Kubernetes używa rozszerzonego limitu zasobów jako żądania w przypadku pominięcia oddzielnego żądania. Określ liczbę partycji wyrażoną liczbami całkowitymi. Jeśli ustawisz zarówno żądania, jak i limity dla tego samego zasobu GPU, użyj równych wartości.

  2. Wdróż przykładowe zasobniki.

    kubectl apply -f mixed-mig-workloads.yaml
    
  3. Poczekaj na pomyślne ukończenie zasobnika z większą partycją.

    kubectl wait --for=jsonpath='{.status.phase}'=Succeeded \
      pod/mixed-mig-pod-3g --timeout=300s
    
  4. Poczekaj na pomyślne ukończenie zasobnika mniejszej partycji.

    kubectl wait --for=jsonpath='{.status.phase}'=Succeeded \
      pod/mixed-mig-pod-1g --timeout=300s
    
  5. Sprawdź, do których węzłów przypisano zasobniki.

    kubectl get pods mixed-mig-pod-3g mixed-mig-pod-1g -o wide
    
  6. Wyświetl informacje o urządzeniu GPU zasobnika należącego do większej partycji.

    kubectl logs mixed-mig-pod-3g
    

    Sprawdź, czy nvidia-smi wyświetla GPU i przypisane urządzenie MIG bez błędów. Zasobnik żąda anonsowanego nvidia.com/mig-3g.40gb zasobu węzła.

  7. Przeczytaj informacje o urządzeniu GPU mniejszej partycji podu.

    kubectl logs mixed-mig-pod-1g
    

    Sprawdź, czy nvidia-smi zgłasza GPU i przypisane urządzenie MIG bez błędów. Pod żąda anonsowanego zasobu nvidia.com/mig-1g.10gb węzła. Formatowanie danych wyjściowych zależy od wersji sterownika; domyślne polecenie nie musi wyświetlać nazw profilów. Fizyczne informacje o procesorze GPU nie są dowodem na to, że pod ma dostęp do całego procesora GPU.

    Pody ukończone pomyślnie wyświetlają Completed w kubectl get pods. Nie pozostają gotowe ani nie zachowują alokacji partycji po zakończeniu działania kontenera. Jeśli upłynął limit czasu oczekiwania na ukończenie, sprawdź stan poda, dzienniki i zdarzenia, aby odróżnić problemy z harmonogramowaniem od błędów obrazu lub kontenera.

W przypadku puli strategii Single zażądaj nvidia.com/gpu: "1" zamiast zasobu specyficznego dla profilu. Nie używaj ponownie tej nazwy zasobu, aby zażądać partycji z puli mieszanej w tym przykładzie.

Skalowanie i obsługa puli węzłów

Skalowanie zachowuje oryginalną strategię i listę profilów mieszanej puli węzłów MIG. Przed dodaniem węzłów upewnij się, że masz limit przydziału i dostępne zasoby GPU.

az aks nodepool scale \
  --resource-group "$RESOURCE_GROUP" \
  --cluster-name "$CLUSTER_NAME" \
  --name "$MIXED_POOL" \
  --node-count 2

Powtórz sprawdzenia gotowości węzła i zasobu allocatable dla wszystkich węzłów. Wraz z Standard_NC24ads_A100_v4 i układem 2g.20gb każdy węzeł anonsuje te same cztery partycje: jedną 3g.40gb, jedną 1g.10gb i dwie MIG3g MIG2g MIG1g MIG1g. Więcej węzłów dodaje pojemność dla skonfigurowanych typów partycji; nie dodają brakujących typów.

Zaktualizuj obraz węzła przy użyciu polecenia node-image-only uaktualniania. Zaplanuj zakłócenia działania obciążenia oraz limit GPU i pojemność węzła zastępczego podczas konserwacji.

az aks nodepool upgrade \
  --resource-group "$RESOURCE_GROUP" \
  --cluster-name "$CLUSTER_NAME" \
  --name "$MIXED_POOL" \
  --node-image-only

Optymalizowanie użycia partycji na potrzeby oceny obciążenia produkcyjnego

Skorzystaj z poniższych rozwiązań, aby ocenić mieszankę obciążenia produkcyjnego w środowisku testowym usługi AKS przed zaplanowaniem wdrożenia produkcyjnego.

  • Określ rozmiar partycji na podstawie pomiarów. Przeprowadź testy porównawcze reprezentatywnych obciążeń inferencyjnych, wsadowych i treningowych. Zmierz maksymalną pamięć urządzenia, wykorzystanie zasobów obliczeniowych, przepływność i opóźnienia przy realistycznym poziomie współbieżności. Wybierz najmniejszą partycję spełniającą wymagania dotyczące obciążenia z zapasem pamięci.
  • Dopasuj układ do współbieżnego zapotrzebowania. Układ MIG3g MIG2g MIG1g MIG1g w systemie Standard_NC24ads_A100_v4 zawiera jedną dużą, średnią i dwie małe partycje na węzeł. Dwa jednoczesne żądania dla dużej partycji wymagają dwóch węzłów, nawet jeśli mniejsze partycje są bezczynne. Wybierz układy na podstawie rozkładu równoczesnego zapotrzebowania, a nie tylko całkowitej pamięci procesora GPU.
  • Traktuj wydajność jako oddzielne typy zasobów. Śledź żądaną i dostępną pojemność dla każdego zasobu nvidia.com/mig-*. Platforma Kubernetes nie łączy małych partycji w większą ani nie zmienia rozmiaru skonfigurowanego układu, aby zaspokoić potrzeby oczekującego zasobnika.
  • Użyj oddzielnych pul dla różnych klas obciążeń. Zachowaj obciążenia, które wymagają niepartycjonowanego GPU w puli utworzonej bez ustawień MIG. Użyj jednolitej strategii pojedynczej, gdy wszystkie zadania potrzebują tego samego rozmiaru partycji i układów mieszanych, gdy obciążenia wymagają różnych rozmiarów. Testuj oddzielnie obciążenia rozproszone lub wykorzystujące wiele GPU, zamiast zakładać, że zachowują się jak obciążenia wykorzystujące całe GPU.
  • Ustaw żądania procesora CPU i pamięci, a także limity GPU. Dostępna partycja GPU nie gwarantuje, że węzeł ma wystarczającą ilość pamięci hosta lub procesora CPU, aby uruchomić obciążenie. Użyj wdrożenia lub zadania odpowiedniego do cyklu życia aplikacji, a nie zasobników inspekcyjnych opisanych w tym artykule.
  • Monitoruj wyniki obciążeń i wykorzystanie partycji razem. Porównaj opóźnienia, przepływność, presję pamięci GPU i błędy planowania według profilu MIG.
  • Zweryfikuj stos aplikacji. Framework testowy, CUDA, sterownik i zgodność podziału na partycje. Przypnij zweryfikowane wersje obrazów aplikacji lub digesty i nie używaj obrazu inspekcji jako obrazu aplikacji produkcyjnej.

Rozwiązywanie problemów z konfiguracją i planowaniem

Jeśli przykładowy zasobnik pozostanie Pending, sprawdź jego zdarzenia planowania i zasoby przydzielone do węzła.

Sprawdź zdarzenia planowania dla oczekującego przykładowego zasobnika, na przykład mixed-mig-pod-3g z sekcji Uruchamianie obciążeń w różnych rozmiarach partycji:

kubectl describe pod mixed-mig-pod-3g

Sprawdź przydzielone żądania zasobów w węzłach mieszanej puli węzłów MIG:

kubectl describe nodes -l agentpool="$MIXED_POOL"

Typowe przyczyny:

  • Pod żąda zasobu, którego pula nie udostępnia. Na przykład żądanie nvidia.com/mig-4g.40gb pozostaje w stanie oczekiwania w puli utworzonej za pomocą polecenia MIG3g MIG2g MIG1g MIG1g, ponieważ pula nie anonsuje tego zasobu. Skalowanie puli nie rozwiązuje tej niezgodności.
  • Węzeł nie ma innych zasobów. Jeśli partycje GPU wydają się dostępne, sprawdź procesor CPU, pamięć hosta, tainty i afinity.

Aby uzyskać powiązane wskazówki, zobacz rozwiązywanie problemów z MIG przy użyciu jednej strategii i weryfikację zarządzanych procesorów GPU. Wymagania dotyczące konfiguracji w tym artykule dotyczą nowego podglądu profili mieszanych.

Wyłączanie mieszanej strategii MIG i usuwanie przykładowych zasobów

Wyłącz mieszane użycie MIG, migrując obciążenia i usuwając mieszaną pulę węzłów MIG. Wersja zapoznawcza nie zapewnia zmiany układu w miejscu ani strategii None. Wyrejestrowywanie funkcji subskrypcyjnej nie konwertuje istniejących węzłów ani nie zastępuje usuwania puli węzłów.

Usuń lub zastąp mieszaną pulę węzłów MIG

Przed usunięciem puli węzłów, która uruchamia obciążenia aplikacji, zaaprowizuj zastępczą pulę MIG z wystarczającą pojemnością, zaktualizuj żądania zasobów obciążenia i selektory oraz zweryfikuj kondycję aplikacji. Aby utworzyć niepartycjonowaną pulę procesorów GPU, pomiń zarówno --gpu-mig-strategy, jak i --gpu-mig-profiles. Aby przejść do jednej strategii, utwórz nową pulę węzłów z --gpu-mig-strategy Single i dokładnie jednym profilem.

Na przykład utwórz zarządzaną pulę zastępczych węzłów pełnego GPU tylko wtedy, gdy aplikacje nadal potrzebują zasobów GPU:

az aks nodepool add \
   --resource-group "$RESOURCE_GROUP" \
   --cluster-name "$CLUSTER_NAME" \
   --name gpufull \
   --node-vm-size "Standard_NC24ads_A100_v4" \
   --enable-managed-gpu=true \
   --node-count 1

Sprawdź, czy węzeł zastępczy jest Ready i anonsuje nvidia.com/gpu, a nie zasoby partycji MIG:

kubectl describe nodes -l agentpool=gpufull

W sekcji każdego węzła Conditions upewnij się, że Ready jest True. W tej sekcji Allocatable upewnij się, że nvidia.com/gpu jest obecny oraz że zasoby partycji MIG nie są anonsowane.

Zaktualizuj zmigrowane obciążenia, aby zażądać nvidia.com/gpu , a następnie wybierz pozycję agentpool: gpufull. Ponownie zweryfikuj rozmiar i zachowanie aplikacji na pełnym procesorze GPU przed usunięciem starej puli węzłów. Jeśli nie potrzebujesz zastępczej pojemności procesora GPU, pomiń ten przykład i usuń bezpośrednio przykładową pulę.

Usuń przykładowe zasobniki i mieszaną pulę węzłów MIG

  1. Usuń zasobniki inspekcji.

    kubectl delete pod mixed-mig-pod-3g mixed-mig-pod-1g \
      --ignore-not-found=true
    
  2. Sprawdź, czy nie ma przykładowych zasobników.

    kubectl get pods \
      --field-selector metadata.name=mixed-mig-pod-3g
    
    kubectl get pods \
      --field-selector metadata.name=mixed-mig-pod-1g
    
  3. Po przeprowadzeniu migracji innych obciążeń usuń mieszaną pulę węzłów MIG. Poczekaj na zakończenie tej operacji przed rozpoczęciem innej operacji klastra.

    az aks nodepool delete \
      --resource-group "$RESOURCE_GROUP" \
      --cluster-name "$CLUSTER_NAME" \
      --name "$MIXED_POOL"
    
  4. Sprawdź, czy usunięta pula węzłów nie jest już wyświetlana.

    az aks nodepool list \
      --resource-group "$RESOURCE_GROUP" \
      --cluster-name "$CLUSTER_NAME" \
      --query "[?name=='$MIXED_POOL'].name" \
      --output json
    

    Dane wyjściowe powinny mieć wartość [].

  5. Sprawdź, czy dla tej puli węzłów nie pozostają żadne węzły Kubernetes.

    kubectl get nodes -l agentpool="$MIXED_POOL"
    

    Polecenie powinno zgłaszać brak pasujących zasobów po zakończeniu usuwania.

Następne kroki