告别传统!用 nvkind 轻松搭建云原生 GPU 测试平台,畅玩 AI!基于 Docker 和 Kubernetes,快速部署支持 GPU 的 kind 集群。通过 Nvidia GPU Operator,让你的 Pod 轻松访问 H100 等 AI 加速器,加速云原生 AI 工作负载开发与测试!
译自:Tutorial: Set Up a Cloud Native GPU Testbed With Nvkind Kubernetes
作者:Janakiram MSV
DevOps 工程师和开发者都很熟悉 kind,它是一个构建在 Docker 上的 Kubernetes 开发环境。在 kind 中,集群的控制平面和节点作为单独的容器运行。虽然 kind 易于使用,但从集群访问 GPU 可能具有挑战性。本教程将引导您从 Nvidia 安装 nvkind,这是一个支持 GPU 的 kind 集群,用于在开发或测试环境中运行云原生 AI 工作负载。
我的环境由一台由单个 Nvidia H100 GPU 驱动的主机组成。我们的目标是在 nvkind 集群中部署一个可以访问同一 GPU 的 Pod。

前提条件
- 基于以下各项的 GPU 主机:
请确保 Docker 已正确配置,并将 Nvidia 运行时作为默认运行时。然后,您可以从 Docker 容器访问 GPU。

编译并安装 Nvkind 二进制文件
克隆 nvkind 的 GitHub 存储库并构建二进制文件。
git clone https://github.com/NVIDIA/nvkind.git
cd nvkind
make
sudo cp ./nvkind /usr/local/bin/
执行 nvkind 二进制文件以检查构建是否已成功完成。

定义模板并创建集群
Nvkind 接受一个配置文件,该文件可以对向工作节点公开 GPU 进行细粒度控制。由于我们只有一个 GPU,我们将把它公开给工作节点。
创建一个名为 nvkind-cluster.yaml 的 YAML 文件,内容如下:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
extraMounts:
- hostPath: /dev/null
containerPath: /var/run/nvidia-container-devices/all
最后,我们将基于上述模板创建一个集群。
nvkind cluster create --config-template=nvkind-cluster.yaml

现在,您可以使用 kubectl CLI 访问集群。

安装 Nvidia GPU Operator
集群就绪后,我们将安装 GPU Operator 以访问底层 AI 加速器。
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
helm repo update
helm install --wait --generate-name \
-n gpu-operator --create-namespace \
nvidia/gpu-operator --set driver.enabled=false
确保 gpu-operator 命名空间中的所有 Pod 都是健康的。

运行工作负载以测试 GPU 访问
让我们创建一个测试 Pod 来验证 GPU 访问。
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: cuda-vectoradd
spec:
restartPolicy: OnFailure
containers:
- name: cuda-vectoradd
image: "nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubuntu20.04"
resources:
limits:
nvidia.com/gpu: 1
EOF

我们已成功在 H100 GPU 上安装、配置和测试了 nvkind 集群。