NVIDIA GPU Operator 与 Google GKE#
关于在 Google GKE 中使用 Operator#
在 Google Kubernetes Engine (GKE) 中使用 NVIDIA GPU Operator 有两种方法。您可以使用 Google 驱动程序安装程序在节点上安装和管理 NVIDIA GPU 驱动程序,或者您可以使用 Operator 和驱动程序管理器来管理驱动程序和其他 NVIDIA 软件组件。
选择取决于操作系统以及您是否希望 Operator 管理所有软件组件。
支持的操作系统 |
摘要 |
|
---|---|---|
Google
驱动程序
安装程序
|
|
Google 驱动程序安装程序管理 NVIDIA GPU 驱动程序。NVIDIA GPU Operator 管理其他软件组件。 |
NVIDIA
驱动程序
管理器
|
|
NVIDIA GPU Operator 管理驱动程序和其他 NVIDIA 软件的生命周期和升级。 |
以上信息涉及使用 GKE Standard 节点池。对于 Autopilot Pod,不支持使用 GPU Operator,您可以参考 在 Autopilot 中部署 GPU 工作负载。
前提条件#
您已安装并初始化 Google Cloud CLI。请参阅 Google Cloud 文档中的 gcloud CLI 概述。
您有一个 Google Cloud 项目用于您的 GKE 集群。请参阅 Google Cloud 文档中的 创建和管理项目。
您拥有 Google Cloud 项目的项目 ID。请参阅 Google Cloud 文档中的 识别项目。
您知道节点池的机器类型,并且该机器类型在您的区域和可用区中受支持。请参阅 Google Cloud 文档中的 GPU 平台。
使用 Google 驱动程序安装程序#
执行以下步骤以使用 gcloud
CLI 创建 GKE 集群,并使用 Google 驱动程序安装程序来管理 GPU 驱动程序。您可以创建一个使用 Container-Optimized OS 节点镜像或 Ubuntu 节点镜像的节点池。
创建节点池。请参阅 GKE 文档中的 在 GKE Standard 集群中运行 GPU。
创建节点池时,请指定以下额外的
gcloud
命令行选项,以禁用 Operator 不支持的 GKE 功能--node-labels="gke-no-default-nvidia-gpu-device-plugin=true"
节点标签禁用 GPU 节点上的 GKE GPU 设备插件 DaemonSet。
--accelerator type=...,gpu-driver-version=disabled
此参数禁用在 GPU 节点上自动安装 GPU 驱动程序。
获取集群的身份验证凭据
$ gcloud container clusters get-credentials demo-cluster --location us-west1
可选:验证您是否可以连接到集群
$ kubectl get nodes -o wide
为 NVIDIA GPU Operator 创建命名空间
$ kubectl create ns gpu-operator
创建一个文件,例如
gpu-operator-quota.yaml
,内容如下例所示apiVersion: v1 kind: ResourceQuota metadata: name: gpu-operator-quota spec: hard: pods: 100 scopeSelector: matchExpressions: - operator: In scopeName: PriorityClass values: - system-node-critical - system-cluster-critical
应用资源配额
$ kubectl apply -n gpu-operator -f gpu-operator-quota.yaml
可选:查看资源配额
$ kubectl get -n gpu-operator resourcequota
示例输出
NAME AGE REQUEST gpu-operator-quota 38s pods: 0/100
安装 Google 驱动程序安装程序 DaemonSet。
对于 Container-Optimized OS
$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
对于 Ubuntu,要应用的清单取决于 GPU 型号和节点版本。请参阅 GKE 文档中 手动安装 NVIDIA GPU 驱动程序 的 Ubuntu 选项卡。
使用 Helm 安装 Operator
$ helm install --wait --generate-name \ -n gpu-operator \ nvidia/gpu-operator \ --version=v24.9.2 \ --set hostPaths.driverInstallDir=/home/kubernetes/bin/nvidia \ --set toolkit.installDir=/home/kubernetes/bin/nvidia \ --set cdi.enabled=true \ --set cdi.default=true \ --set driver.enabled=false
将 NVIDIA Container Toolkit 和驱动程序安装路径设置为
/home/kubernetes/bin/nvidia
。在 GKE 节点镜像上,此目录是可写的,并且是存储 NVIDIA 运行时二进制文件的有状态位置。要使用 NVIDIA MIG Manager 配置 MIG,请指定以下额外的 Helm 命令参数
--set migManager.env[0].name=WITH_REBOOT \ --set-string migManager.env[0].value=true
使用 NVIDIA 驱动程序管理器#
执行以下步骤以使用 gcloud
CLI 创建 GKE 集群,并使用 Operator 和 NVIDIA 驱动程序管理器来管理 GPU 驱动程序。这些步骤创建的集群具有使用 Ubuntu 和 containerd 节点镜像的节点池。
通过运行类似于以下示例的命令来创建集群
$ gcloud beta container clusters create demo-cluster \ --project <project-id> \ --location us-west1 \ --release-channel "regular" \ --machine-type "n1-standard-4" \ --accelerator "type=nvidia-tesla-t4,count=1" \ --image-type "UBUNTU_CONTAINERD" \ --node-labels="gke-no-default-nvidia-gpu-device-plugin=true" \ --disk-type "pd-standard" \ --disk-size "1000" \ --no-enable-intra-node-visibility \ --metadata disable-legacy-endpoints=true \ --max-pods-per-node "110" \ --num-nodes "1" \ --logging=SYSTEM,WORKLOAD \ --monitoring=SYSTEM \ --enable-ip-alias \ --default-max-pods-per-node "110" \ --no-enable-master-authorized-networks \ --tags=nvidia-ingress-all
创建集群需要几分钟时间。
获取集群的身份验证凭据
$ USE_GKE_GCLOUD_AUTH_PLUGIN=True \ gcloud container clusters get-credentials demo-cluster --zone us-west1
可选:验证您是否可以连接到集群
$ kubectl get nodes -o wide
为 NVIDIA GPU Operator 创建命名空间
$ kubectl create ns gpu-operator
创建一个文件,例如
gpu-operator-quota.yaml
,内容如下例所示apiVersion: v1 kind: ResourceQuota metadata: name: gpu-operator-quota spec: hard: pods: 100 scopeSelector: matchExpressions: - operator: In scopeName: PriorityClass values: - system-node-critical - system-cluster-critical
应用资源配额
$ kubectl apply -n gpu-operator -f gpu-operator-quota.yaml
可选:查看资源配额
$ kubectl get -n gpu-operator resourcequota
示例输出
NAME AGE REQUEST gke-resource-quotas 6m56s count/ingresses.extensions: 0/100, count/ingresses.networking.k8s.io: 0/100, count/jobs.batch: 0/5k, pods: 2/1500, services: 1/500 gpu-operator-quota 38s pods: 0/100
安装 Operator。请参阅 安装 NVIDIA GPU Operator。