告别传统!用 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
的 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 访问集群。
集群就绪后,我们将安装 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 都是健康的。
让我们创建一个测试 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
集群。