Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Graficzne jednostki przetwarzania (GPU) są często używane do obciążeń intensywnie korzystających z obliczeń, takich jak obciążenia grafiki i wizualizacji. Usługa AKS obsługuje pule węzłów Linux z obsługą układów GPU do uruchamiania zadań Kubernetes intensywnie korzystających z obliczeń.
Ten artykuł pomaga konfigurować węzły z planowalnymi procesorami GPU w nowych i istniejących klastrach usługi AKS.
Ważne
Od 30 listopada 2025 r. usługa Azure Kubernetes Service (AKS) nie obsługuje już ani nie zapewnia aktualizacji zabezpieczeń dla systemu Azure Linux 2.0. Obraz węzła systemu Linux 2.0 platformy Azure został zamrożony w wersji 202512.06.0. Od 31 marca 2026 r. obrazy węzłów zostaną usunięte i nie będzie można skalować pul węzłów. Przeprowadź migrację do obsługiwanej wersji systemu Linux platformy Azure, uaktualniając pule węzłów do obsługiwanej wersji rozwiązania Kubernetes lub migrując do systemu osSku AzureLinux3. Aby uzyskać więcej informacji, zobacz [Wycofywanie] pul węzłów Azure Linux 2.0 w usłudze AKS.
Obsługiwane maszyny wirtualne z obsługą procesora GPU
Aby wyświetlić dostępne maszyny wirtualne z obsługą procesora GPU, zobacz Maszyny wirtualne zoptymalizowane pod kątem procesora GPU na platformie Azure. Jeśli rozmiar maszyny wirtualnej GPU nie znajduje się na naszej liście wspieranych rozmiarów maszyn wirtualnych, usługa AKS nie instaluje niezbędnych składników oprogramowania GPU ani nie zapewnia pomocy technicznej. Usługa AKS umożliwia użycie nieobsługiwanych rozmiarów maszyn wirtualnych GPU po pominięciu automatycznej instalacji sterownika GPU.
Sprawdź dostępne i obsługiwane rozmiary maszyn wirtualnych, używając polecenia az vm list-skus.
az vm list-skus --location <your-location> --output table
W przypadku pul węzłów usługi AKS zalecamy minimalny rozmiar Standard_NC6s_v3. Seria NVv4 (oparta na procesorach GPU AMD) nie jest obsługiwana w usłudze AKS.
Uwaga / Notatka
Maszyny wirtualne z obsługą GPU zawierają wyspecjalizowany sprzęt, który wiąże się z wyższymi cenami i dostępnością w regionach. Aby uzyskać więcej informacji, zobacz narzędzie do ustalania cen i dostępność regionów .
Ograniczenia
- Jeśli używasz puli węzłów z obsługą procesora GPU systemu Linux platformy Azure, automatyczne poprawki zabezpieczeń nie są stosowane. Aby uzyskać informacje o domyślnym zachowaniu kanału aktualizacji systemu operacyjnego węzła, zapoznaj się z bieżącą wersją interfejsu API usługi AKS.
- Flatcar Container Linux dla AKS nie jest obsługiwany na AKS z GPU firmy NVIDIA.
- Platforma Azure Linux z funkcją OS Guard dla usługi AKS nie jest obsługiwana z procesorem GPU firmy NVIDIA w usłudze AKS.
Uwaga / Notatka
W przypadku interfejsu API usługi AKS w wersji 2023-06-01 lub nowszej domyślny kanał uaktualniania systemu operacyjnego węzła to NodeImage. W przypadku poprzednich wersji domyślnym kanałem jest Brak. Aby dowiedzieć się więcej, zobacz automatyczne uaktualnianie.
- Aktualizowanie istniejącej puli węzłów, aby dodać rozmiar maszyny wirtualnej z GPU, nie jest obsługiwane w AKS.
Uwaga / Notatka
Obraz GPU usługi AKS (wersja zapoznawcza) zostanie wycofany 10 stycznia 2025 r. Nagłówek niestandardowy nie jest już dostępny, co oznacza, że nie można tworzyć nowych pul węzłów z obsługą GPU przy użyciu obrazu GPU dla usługi AKS. Zalecamy migrację do lub użycie domyślnej konfiguracji procesora GPU, a nie obrazu procesora GPU, ponieważ obraz procesora GPU nie jest już obsługiwany. Aby uzyskać więcej informacji, zobacz informacje o wersji usługi AKS lub zapoznaj się z tym ogłoszeniem o wycofaniu w naszym publicznym planie usługi AKS.
Zanim rozpoczniesz
- W tym artykule założono, że masz już istniejący klaster AKS. Jeśli nie masz klastra, utwórz go przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub witryny Azure Portal.
- Aby ustawić pole
--gpu-driver, musisz mieć zainstalowany Azure CLI w wersji 2.72.2 lub nowszej. Uruchomaz --version, aby znaleźć wersję. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. - Jeśli masz zainstalowane rozszerzenie interfejsu
aks-previewwiersza polecenia platformy Azure, zaktualizuj wersję do wersji 18.0.0b2 lub nowszej.
Pobierz poświadczenia dla klastra
Pobierz poświadczenia dla klastra AKS za pomocą polecenia az aks get-credentials. Następujące przykładowe polecenie pobiera poświadczenia dla grupy zasobów myAKSCluster w grupie zasobów myResourceGroup :
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Opcje korzystania z procesorów GPU FIRMY NVIDIA
Korzystanie z procesorów GPU FIRMY NVIDIA obejmuje instalację różnych składników oprogramowania NVIDIA, takich jak wtyczka urządzenia NVIDIA dla platformy Kubernetes, instalacja sterownika procesora GPU i nie tylko.
Uwaga / Notatka
Domyślnie firma Microsoft automatycznie obsługuje wersję sterowników NVIDIA w ramach wdrożenia obrazu węzła, a usługa AKS obsługuje i zarządza nią. Mimo że sterowniki NVIDIA są instalowane domyślnie na węzłach obsługujących procesor GPU, należy zainstalować wtyczkę urządzenia.
Instalacja wtyczki urządzenia FIRMY NVIDIA
Instalacja wtyczki urządzenia NVIDIA jest wymagana w przypadku korzystania z procesorów GPU w usłudze AKS. W niektórych przypadkach instalacja jest obsługiwana automatycznie, na przykład podczas korzystania z operatora procesora GPU FIRMY NVIDIA. Alternatywnie można ręcznie zainstalować wtyczkę urządzenia NVIDIA.
Ręczne instalowanie wtyczki urządzenia NVIDIA
Można wdrożyć DaemonSet dla wtyczki urządzenia NVIDIA, który uruchamia pod na każdym węźle, aby zapewnić wymagane sterowniki dla GPU. Jest to zalecane podejście w przypadku korzystania z pul węzłów z obsługą GPU dla Azure Linux.
Aby użyć domyślnej jednostki SKU systemu operacyjnego, należy utworzyć 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.
Dodaj pulę węzłów do klastra za pomocą polecenia az aks nodepool add.
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-cluster-autoscaler \
--min-count 1 \
--max-count 3
To polecenie dodaje pulę węzłów o nazwie gpunp do myAKSCluster w grupie myResourceGroup i używa parametrów do skonfigurowania następujących ustawień puli węzłów:
-
--node-vm-size: ustawia rozmiar maszyny wirtualnej dla węzła w puli węzłów na Standard_NC6s_v3. -
--node-taints: określa znak zanieczyszczenia sku=gpu:NoSchedule w ramach puli węzłów. -
--enable-cluster-autoscaler: włącza funkcję automatycznego skalowania klastra. -
--min-count: konfiguruje narzędzie do automatycznego skalowania klastra w celu zachowania co najmniej jednego węzła w puli węzłów. -
--max-count: Konfiguruje narzędzie do automatycznego skalowania klastra w celu zachowania maksymalnie trzech węzłów w puli węzłów.
Uwaga / Notatka
Rozmiary maszyn wirtualnych i taints można ustawić tylko dla pul węzłów podczas tworzenia puli węzłów, ale w dowolnym momencie można aktualizować ustawienia automatycznego skalowania.
Utwórz przestrzeń nazw przy użyciu
kubectl create namespacepolecenia .kubectl create namespace gpu-resourcesUtwórz plik o nazwie nvidia-device-plugin-ds.yaml i wklej następujący manifest YAML podany w ramach wtyczki urządzenia NVIDIA dla projektu Kubernetes:
apiVersion: apps/v1 kind: DaemonSet metadata: name: nvidia-device-plugin-daemonset namespace: gpu-resources spec: selector: matchLabels: name: nvidia-device-plugin-ds updateStrategy: type: RollingUpdate template: metadata: labels: name: nvidia-device-plugin-ds spec: tolerations: - key: "sku" operator: "Equal" value: "gpu" effect: "NoSchedule" # Mark this pod as a critical add-on; when enabled, the critical add-on # scheduler reserves resources for critical add-on pods so that they can # be rescheduled after a failure. # See https://kubernetes.io/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/ priorityClassName: "system-node-critical" containers: - image: nvcr.io/nvidia/k8s-device-plugin:v0.18.0 name: nvidia-device-plugin-ctr env: - name: FAIL_ON_INIT_ERROR value: "false" securityContext: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] volumeMounts: - name: device-plugin mountPath: /var/lib/kubelet/device-plugins volumes: - name: device-plugin hostPath: path: /var/lib/kubelet/device-pluginsUtwórz element DaemonSet i upewnij się, że wtyczka urządzenia NVIDIA została pomyślnie utworzona przy użyciu
kubectl applypolecenia .kubectl apply -f nvidia-device-plugin-ds.yamlTeraz, po pomyślnym zainstalowaniu wtyczki urządzenia NVIDIA, możesz sprawdzić, czy twoje GPU są gotowe do przydzielania zadań i uruchomić obciążenie na GPU.
Pomiń instalację sterownika procesora GPU
Jeśli chcesz kontrolować instalację sterowników NVIDIA lub użyć operatora procesora GPU FIRMY NVIDIA, możesz pominąć domyślną instalację sterownika procesora GPU. Firma Microsoft nie obsługuje zgodności i konserwacji sterowników NVIDIA, ani nimi nie zarządza w ramach wdrożenia obrazu węzła.
Uwaga / Notatka
Pole interfejsu gpu-driver API jest sugerowaną alternatywą dla klientów, którzy wcześniej korzystali z tagu --skip-gpu-driver-install puli węzłów.
- Etykieta
--skip-gpu-driver-installdla puli węzłów w AKS zostanie wycofana 14 sierpnia 2025 r. Podczas uruchamiania nowej puli węzłów istniejące zachowanie pomijania automatycznej instalacji sterownika procesora GPU można replikować przez ustawienie--gpu-driverpola nanone. - Po 14 sierpnia 2025 r. nie będzie można tworzyć pul węzłów z obsługą GPU w usłudze AKS za pomocą tagu
--skip-gpu-driver-installpuli węzłów, by ominąć to domyślne zachowanie. Aby uzyskać więcej informacji, zobaczskip-gpu-driverwycofywanie tagu.
Utwórz pulę węzłów używając polecenia
az aks nodepool addi ustaw pole--gpu-drivernanone, aby pominąć domyślną instalację sterownika GPU.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --gpu-driver none \ --node-vm-size Standard_NC6s_v3 \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3Ustawienie pola interfejsu
--gpu-driverAPI nanonepodczas tworzenia puli węzłów pomija automatyczną instalację sterownika procesora GPU. Żadne istniejące węzły nie są zmieniane. Możesz skalować pulę węzłów do zera, a następnie wykonać kopię zapasową, aby zmiany zaczęły obowiązywać.Jeśli wystąpi błąd
unrecognized arguments: --gpu-driver none, zaktualizuj wersję interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji, zobacz Przed rozpoczęciem.Opcjonalnie możesz zainstalować operator procesora GPU FIRMY NVIDIA, wykonując następujące kroki.
Upewnij się, że karty GPU można zaplanować
Po utworzeniu klastra upewnij się, że jednostki GPU można przyporządkować w platformie Kubernetes.
Wyświetl listę węzłów w klastrze przy użyciu
kubectl get nodespolecenia .kubectl get nodesDane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
NAME STATUS ROLES AGE VERSION aks-gpunp-28993262-0 Ready agent 13m v1.20.7Upewnij się, że procesory GPU można zaplanować przy użyciu polecenia
kubectl describe node.kubectl describe node aks-gpunp-28993262-0W sekcji Pojemność procesor GPU powinien mieć wartość
nvidia.com/gpu: 1. Dane wyjściowe powinny wyglądać podobnie do następujących skróconych przykładowych danych wyjściowych:Name: aks-gpunp-28993262-0 Roles: agent Labels: accelerator=nvidia [...] Capacity: [...] nvidia.com/gpu: 1 [...]
Uruchom obciążenie obsługiwane przez GPU
Aby zobaczyć, jak działa procesor GPU, możesz zaplanować obciążenie z obsługą procesora GPU przy użyciu odpowiedniego żądania zasobu. W tym przykładzie uruchomimy zadanie Tensorflow względem zestawu danych MNIST.
Utwórz plik o nazwie samples-tf-mnist-demo.yaml i wklej następujący manifest YAML, który zawiera limit
nvidia.com/gpu: 1zasobów:Uwaga / Notatka
Jeśli podczas wywoływania sterowników wystąpi błąd niezgodności wersji, taki jak "Wersja sterownika CUDA jest niewystarczająca dla wersji środowiska uruchomieniowego CUDA", sprawdź tabelę zgodności sterowników NVIDIA.
apiVersion: batch/v1 kind: Job metadata: labels: app: samples-tf-mnist-demo name: samples-tf-mnist-demo spec: template: metadata: labels: app: samples-tf-mnist-demo spec: containers: - name: samples-tf-mnist-demo image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu args: ["--max_steps", "500"] imagePullPolicy: IfNotPresent resources: limits: nvidia.com/gpu: 1 restartPolicy: OnFailure tolerations: - key: "sku" operator: "Equal" value: "gpu" effect: "NoSchedule"Uruchom zadanie przy użyciu
kubectl applypolecenia , które analizuje plik manifestu i tworzy zdefiniowane obiekty Kubernetes.kubectl apply -f samples-tf-mnist-demo.yaml
Wyświetlanie stanu obciążenia z obsługą procesora GPU
Monitoruj postęp zadania przy użyciu
kubectl get jobspolecenia z flagą--watch. Może upłynąć kilka minut, aby najpierw ściągnąć obraz i przetworzyć zestaw danych.kubectl get jobs samples-tf-mnist-demo --watchGdy w kolumnie COMPLETIONS jest wyświetlana wartość 1/1, zadanie zostało zakończone pomyślnie, jak pokazano w poniższych przykładowych danych wyjściowych:
NAME COMPLETIONS DURATION AGE samples-tf-mnist-demo 0/1 3m29s 3m29s samples-tf-mnist-demo 1/1 3m10s 3m36skubectl --watchZakończ proces za pomocą Ctrl-C.Pobierz nazwę zasobnika za pomocą polecenia
kubectl get pods.kubectl get pods --selector app=samples-tf-mnist-demoWyświetl dane wyjściowe obciążenia z obsługą procesora GPU przy użyciu
kubectl logspolecenia .kubectl logs samples-tf-mnist-demo-smnr6Następujące skrócone przykładowe dane wyjściowe dzienników podów potwierdzają, że wykryto odpowiednie urządzenie GPU:
Tesla K80.2019-05-16 16:08:31.258328: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA 2019-05-16 16:08:31.396846: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate(GHz): 0.8235 pciBusID: 2fd7:00:00.0 totalMemory: 11.17GiB freeMemory: 11.10GiB 2019-05-16 16:08:31.396886: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: Tesla K80, pci bus id: 2fd7:00:00.0, compute capability: 3.7) 2019-05-16 16:08:36.076962: I tensorflow/stream_executor/dso_loader.cc:139] successfully opened CUDA library libcupti.so.8.0 locally Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes. Extracting /tmp/tensorflow/input_data/train-images-idx3-ubyte.gz Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes. Extracting /tmp/tensorflow/input_data/train-labels-idx1-ubyte.gz Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes. Extracting /tmp/tensorflow/input_data/t10k-images-idx3-ubyte.gz Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes. Extracting /tmp/tensorflow/input_data/t10k-labels-idx1-ubyte.gz Accuracy at step 0: 0.1081 Accuracy at step 10: 0.7457 Accuracy at step 20: 0.8233 Accuracy at step 30: 0.8644 Accuracy at step 40: 0.8848 Accuracy at step 50: 0.8889 Accuracy at step 60: 0.8898 Accuracy at step 70: 0.8979 Accuracy at step 80: 0.9087 Accuracy at step 90: 0.9099 Adding run metadata for 99 Accuracy at step 100: 0.9125 Accuracy at step 110: 0.9184 Accuracy at step 120: 0.922 Accuracy at step 130: 0.9161 Accuracy at step 140: 0.9219 Accuracy at step 150: 0.9151 Accuracy at step 160: 0.9199 Accuracy at step 170: 0.9305 Accuracy at step 180: 0.9251 Accuracy at step 190: 0.9258 Adding run metadata for 199 [...] Adding run metadata for 499
Aktualizacja puli węzłów
Niezależnie od tego, czy chcesz zaktualizować, czy uaktualnić pule węzłów, możesz zauważyć, że nie ma --gpu-driver parametru dla żadnej z tych operacji. Może wystąpić błąd, taki jak unrecognized arguments: --gpu-driver none w przypadku próby przekazania parametru. Nie ma potrzeby wywoływania parametru, ponieważ wartość nie ma wpływu na żadne takie operacje.
Podczas pierwszego tworzenia puli węzłów, bez względu na zadeklarowany parametr --gpu-driver operacje aktualizacji/uaktualniania nie zmienią go. Jeśli nie chcesz, aby jakiekolwiek sterowniki były instalowane i wybrałeś --gpu-driver None podczas tworzenia puli węzłów, sterowniki nie będą instalowane w żadnych kolejnych aktualizacjach/uaktualnieniach.
Uprzątnij zasoby
Usuń skojarzone obiekty Kubernetes utworzone w tym artykule przy użyciu kubectl delete job polecenia .
kubectl delete jobs samples-tf-mnist-demo
Dalsze kroki
- Aby uruchomić zadania platformy Apache Spark, zobacz Uruchamianie zadań platformy Apache Spark w usłudze AKS.
- Aby uzyskać więcej informacji na temat funkcji harmonogramu Kubernetes, zobacz Najlepsze rozwiązania dotyczące zaawansowanych funkcji harmonogramu w usłudze AKS.
- Aby uzyskać więcej informacji na temat usług Azure Kubernetes Service i Azure Machine Learning, zobacz: