Azure Kubernetes 服务中的 NVIDIA GPU Operator#

使用 Azure AKS 的方法#

创建 AKS 集群并使用节点池以跳过 GPU 驱动程序安装#

Azure Kubernetes 服务有一项预览功能,允许将 --skip-gpu-driver-install 命令行参数用于 az aks nodepool add 命令。此参数可防止在标准 Ubuntu 操作系统中安装 NVIDIA GPU 驱动程序。

此方法使您能够利用 NVIDIA GPU Operator 提供的生命周期管理来管理您的集群。

示例节点池添加命令#
$ az aks nodepool add --resource-group <rg-name> --name gpunodes --cluster-name <cluster-name> \
     --node-count <n> \
     --skip-gpu-driver-install \
     ...

当您遵循此方法时,您可以安装 Operator,而无需任何特殊考虑或参数。请参阅安装 NVIDIA GPU Operator

有关此预览功能的更多信息,请参阅 Azure Kubernetes Service 文档中的跳过 GPU 驱动程序安装(预览)

不使用 GPU Operator 的默认 AKS 配置#

默认情况下,您可以在启用 GPU 的虚拟机上运行 Azure AKS 镜像和 NVIDIA GPU,而无需使用 NVIDIA GPU Operator。

AKS 镜像包括预安装的 NVIDIA GPU 驱动程序和预安装的 NVIDIA Container Toolkit。

在不使用 Operator 的默认配置下,存在以下限制

  • 指标不会通过 NVIDIA DCGM Exporter 收集或报告。

  • 验证容器运行时是手动操作,而不是通过 Operator 自动完成。

  • 多实例 GPU (MIG) 配置文件必须在您创建节点池时设置,并且您无法在运行时更改配置文件。

如果这些限制对您来说是可以接受的,请参阅 Microsoft Azure 产品文档中的在 Azure Kubernetes 服务上使用 GPU 进行计算密集型工作负载,以获取有关配置集群的信息。

带有预安装驱动程序和 Container Toolkit 的 GPU Operator#

AKS 中可用的镜像始终包含预安装的 NVIDIA GPU 驱动程序和预安装的 NVIDIA Container Toolkit。这些镜像降低了安装 Operator 的主要好处,即它可以管理这些软件组件和其他组件的生命周期。

但是,使用 Operator 可以克服前面部分中确定的限制。

为预安装驱动程序和工具包安装 Operator#

在您使用包含预安装的 NVIDIA GPU 驱动程序和 NVIDIA Container Toolkit 的镜像启动 Azure AKS 集群后,您就可以安装 NVIDIA GPU Operator 了。

当您安装 Operator 时,您必须阻止 Operator 自动部署 NVIDIA 驱动程序容器和 NVIDIA Container Toolkit。

  1. 添加 NVIDIA Helm 存储库

    $ helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \
       && helm repo update
    
  2. 安装不带驱动程序容器和工具包的 Operator

    $ helm install gpu-operator nvidia/gpu-operator \
        -n gpu-operator --create-namespace \
        --version=v24.9.2 \
        --set driver.enabled=false \
        --set toolkit.enabled=false \
        --set operator.runtimeClass=nvidia-container-runtime
    

    有关安装选项的更多信息,请参阅常用 Chart 自定义选项

    示例输出

    NAME: gpu-operator
    LAST DEPLOYED: Fri May  5 15:30:05 2023
    NAMESPACE: gpu-operator
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    

    Operator 需要几分钟才能安装完成。

  3. 确认 Operator 已安装并运行 CUDA 验证容器完成

    $ kubectl get pods -n gpu-operator -l app=nvidia-cuda-validator
    

    示例输出

    NAME                          READY   STATUS      RESTARTS   AGE
    nvidia-cuda-validator-bpvkt   0/1     Completed   0          3m56s
    

后续步骤#