Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Графические процессоры (GPU) часто используются для вычислительно интенсивных рабочих нагрузок, таких как графические и визуализационные рабочие нагрузки. AKS поддерживает пулы узлов с поддержкой GPU на Windows и Linux для выполнения вычислительных рабочих нагрузок в Kubernetes.
В этой статье рассказывается, как подготовить узлы Windows с планируемыми графическими процессорами для новых и существующих кластеров AKS (предварительный просмотр).
Поддерживаемые виртуальные машины с поддержкой GPU (виртуальные машины)
Сведения о поддерживаемых виртуальных машинах с поддержкой GPU см. в статье о размерах виртуальных машин, оптимизированных для GPU, в Azure. Для пулов узлов AKS мы рекомендуем минимальный размер Standard_NC6s_v3. Серия NVv4 (на основе AMD GPUs) не поддерживается в AKS.
Замечание
ВМ с поддержкой GPU содержат специализированное оборудование, что обуславливает их более высокие цены и доступность в регионе. Дополнительные сведения см. в инструменте ценообразования и доступности региона.
Ограничения
- Обновление существующего пула узлов Windows для добавления GPU не поддерживается.
- Не поддерживается в Kubernetes версии 1.28 и ниже.
Перед тем как начать
- В данной статье предполагается, что у вас уже есть существующий кластер AKS. Если у вас нет кластера, создайте его с помощью Azure CLI, Azure PowerShell или портала Azure.
- Для использования поля
--gpu-driverс командойaz aks nodepool addAzure CLI версии 2.72.2 или более поздней должна быть установлена и настроена. Чтобы узнать версию, выполните командуaz --version. Если вам нужно установить или обновить, см. статью "Установка Azure CLI". - Если у вас установлено расширение Azure CLI, обновите его до версии 18.0.0b2 или более поздней.
Получите учетные данные для вашего кластера
Получите учетные данные для вашего кластера AKS, используя команду
az aks get-credentials. Ниже приведённый пример команды получает учетные данные для myAKSCluster в группе ресурсов myResourceGroup.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Использование GPU Windows с автоматической установкой драйвера
Использование GPU NVIDIA включает установку различных программных компонентов NVIDIA, таких как подключаемый модуль устройства DirectX для Kubernetes, установка драйвера GPU и многое другое. При создании пула узлов Windows с поддерживаемой виртуальной машиной с поддержкой GPU эти компоненты и соответствующие драйверы NVIDIA CUDA или GRID устанавливаются. Для размеров виртуальных машин серии NC и ND устанавливается драйвер CUDA. Для размеров виртуальных машин серии NV устанавливается драйвер GRID.
Это важно
Предварительные версии функций AKS доступны на условиях самообслуживания и добровольного выбора. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS сопровождаются частичной поддержкой клиентов на основе принципа лучших усилий. Как таковые, эти функции не предназначены для использования в производстве. Для получения дополнительной информации ознакомьтесь со следующими статьями поддержки:
Установка расширения Azure CLI aks-preview
Зарегистрируйте или обновите расширение aks-preview, используя команду
az extension addилиaz extension update.# Register the aks-preview extension az extension add --name aks-preview # Update the aks-preview extension az extension update --name aks-preview
Регистрация флага компонента WindowsGPUPreview
Зарегистрируйте флаг функции
WindowsGPUPreviewс помощью командыaz feature register.az feature register --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"Через несколько минут отобразится состояние Registered (Зарегистрировано).
Проверьте состояние регистрации с помощью
az feature showкоманды.az feature show --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"Когда состояние отражает зарегистрировано, обновите регистрацию поставщика ресурсов Microsoft.ContainerService с помощью
az provider registerкоманды.az provider register --namespace Microsoft.ContainerService
Создание пула узлов с поддержкой GPU Windows (предварительная версия)
Чтобы создать пул узлов Windows с поддержкой GPU, необходимо использовать поддерживаемый размер виртуальной машины с поддержкой GPU и указать os-type как Windows. В Windows по умолчанию используется os-skuWindows2022, но поддерживаются все параметры Windowsos-sku.
Создайте пул узлов с поддержкой GPU Windows с помощью
az aks nodepool addкоманды.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --os-type Windows \ --kubernetes-version 1.29.0 \ --node-vm-size Standard_NC6s_v3Проверьте, что ваши графические процессоры могут быть запланированными.
Убедившись в том, что графические процессоры доступны для обработки, вы можете запустить рабочую нагрузку GPU.
Указание типа драйвера GPU (предварительная версия)
По умолчанию AKS задает тип драйвера GPU по умолчанию для каждой поддерживаемой виртуальной машины с поддержкой GPU. Так как совместимость рабочих нагрузок и драйверов важна для рабочих нагрузок GPU, можно указать тип драйвера для узла GPU Windows. Эта функция не поддерживается для пулов узлов GPU Linux.
При создании пула агентов Windows с поддержкой GPU можно указать тип драйвера GPU с помощью флага --driver-type .
Доступны следующие варианты:
- GRID: для приложений, требующих поддержки виртуализации.
- CUDA: оптимизировано для вычислительных задач в научных вычислениях и приложениях с большим объемом данных.
Замечание
При установке флага --driver-type вы несете ответственность за обеспечение совместимости выбранного типа драйвера с определенным размером виртуальной машины и конфигурацией пула узлов. Хотя AKS пытается проверить совместимость, существуют сценарии, в которых создание пула узлов может завершиться сбоем из-за несовместимости между указанным типом драйвера и базовой виртуальной машиной или оборудованием.
Чтобы создать пул узлов с поддержкой GPU Windows с определенным типом драйвера GPU, используйте az aks nodepool add команду.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name gpunp \
--node-count 1 \
--os-type Windows \
--kubernetes-version 1.29.0 \
--node-vm-size Standard_NC6s_v3 \
--driver-type GRID
Например, приведенная выше команда создает пул узлов с поддержкой GPU с помощью GRID типа драйвера GPU. Выбор этого типа драйвера переопределяет тип драйвера по умолчанию CUDA для номеров SKU серии NC.
Использование GPU Windows с установкой драйвера вручную
При формировании пула узлов Windows с размерами виртуальных машин серии N (NVIDIA GPU) в AKS, драйверы графического процессора (GPU) и плагин устройства DirectX для Kubernetes устанавливаются автоматически. Чтобы обойти эту автоматическую установку, выполните следующие действия.
-
Пропустите установку драйвера GPU , задав конфигурацию
--gpu-driver noneво время создания пула узлов. - Ручная установка плагина устройства Kubernetes DirectX.
Пропуск установки драйвера GPU
AKS включает автоматическую установку драйвера GPU по умолчанию. В некоторых случаях, например, при установке собственных драйверов, может потребоваться пропустить установку драйвера графического процессора.
Это важно
Начиная с 14 августа 2025 г. служба Azure Kubernetes (AKS) больше не поддерживает --skip-gpu-driver-install тег пула узлов. После этой даты вы не сможете подготовить пулы узлов с поддержкой GPU с помощью этого тега для обхода автоматической установки драйвера GPU. Вы можете добиться того же поведения, установив для поля --gpu-driver значение none. Дополнительные сведения об этом устаревании см. в вопросе устаревания на GitHub и объявлении об устаревании обновлений Azure. Чтобы оставаться в курсе объявлений и обновлений, следуйте заметкам о выпуске AKS.
создайте пул узлов с помощью команды
az aks nodepool addи установив поле API--gpu-driverнаnone, чтобы пропустить автоматическую установку драйвера GPU.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --os-type windows \ --os-sku windows2022 \ --gpu-driver none
Замечание
Если используемое --node-vm-size приложение еще не подключено к AKS, вы не можете использовать графические процессоры и --gpu-driver поле не работает.
Установите плагин устройства Kubernetes DirectX вручную
Вы можете развернуть DaemonSet для плагина устройства Kubernetes DirectX, который запускает pod на каждом узле, чтобы предоставить необходимые драйверы для GPU.
Добавьте пул узлов в ваш кластер, используя команду
az aks nodepool add.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name gpunp \ --node-count 1 \ --os-type windows \ --os-sku windows2022
Создание пространства имен и развертывание подключаемого модуля устройства Kubernetes DirectX
Создайте пространство имен с помощью команды
kubectl create namespace.kubectl create namespace gpu-resourcesСоздайте файл с именем k8s-directx-device-plugin.yaml и вставьте следующий манифест YAML, предоставленный в составе подключаемого модуля устройства NVIDIA для проекта 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: # 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. This annotation works in tandem with the toleration below. annotations: scheduler.alpha.kubernetes.io/critical-pod: "" labels: name: nvidia-device-plugin-ds spec: tolerations: # Allow this pod to be rescheduled while the node is in "critical add-ons only" mode. # This, along with the annotation above marks this pod as a critical add-on. - key: CriticalAddonsOnly operator: Exists - key: nvidia.com/gpu operator: Exists effect: NoSchedule - key: "sku" operator: "Equal" value: "gpu" effect: "NoSchedule" containers: - image: mcr.microsoft.com/aks/aks-windows-gpu-device-plugin:0.0.17 name: nvidia-device-plugin-ctr 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-pluginsСоздайте DaemonSet и убедитесь, что плагин устройства NVIDIA успешно создан с помощью команды
kubectl apply.kubectl apply -f nvidia-device-plugin-ds.yamlТеперь, когда вы успешно установили подключаемый модуль устройства NVIDIA, вы можете убедиться в том, что ваши графические процессоры доступны для планирования.
Подтвердите, что графические процессоры могут быть запланированы
После создания вашего кластера убедитесь, что GPU можно использовать в Kubernetes.
Перечислите узлы в вашем кластере, используя команду
kubectl get nodes.kubectl get nodesВаш результат должен быть похож на следующий пример результата:
NAME STATUS ROLES AGE VERSION aks-gpunp-28993262-0 Ready agent 13m v1.20.7Подтвердите, что GPU можно планировать, используя команду
kubectl describe node.kubectl describe node aks-gpunp-28993262-0В разделе Ёмкость GPU должен быть указан как
microsoft.com/directx: 1. Ваш результат должен выглядеть аналогично следующему сокращенному образцу.Capacity: [...] microsoft.com.directx/gpu: 1 [...]
Очистите ресурсы
Удалите связанные объекты Kubernetes, которые вы создали в этой статье, используя команду
kubectl delete job.kubectl delete jobs windows-gpu-workload
Дальнейшие шаги
- Чтобы запускать задачи Apache Spark, см. Выполнение задач Apache Spark в AKS.
- Для получения дополнительной информации о функциях планировщика Kubernetes см. Рекомендации по использованию расширенных функций планировщика в AKS.
- Для получения дополнительной информации о службах Azure Kubernetes и Azure Machine Learning см. следующие материалы: