版本:下一个
使用 Helm 部署 HAMi
本指南将涵盖:
- 为每个 GPU 节点配置 NVIDIA 容器运行时
- 使用 Helm 部署 HAMi
- 启动 vGPU 任务
- 验证容器内设备资源是否受限
先决条件
安装步骤
1. 配置 nvidia-container-toolkit
在所有 GPU 节点执行此操作。
本文假设已预装 NVIDIA 驱动和 nvidia-container-toolkit,并已将 nvidia-container-runtime 配置为默认底层运行时。
参考:nvidia-container-toolkit 安装指南
以下是基于 Debian 系统(使用 Docker 和 containerd)的示例:
安装 nvidia-container-toolkit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sudo tee /etc/apt/sources.list.d/libnvidia-container.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
配置 Docker
当使用 Docker 运行 Kubernetes 时,编辑配置文件(通常位于 /etc/docker/daemon.json),将
nvidia-container-runtime 设为默认底层运行时:
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
然后重启 Docker:
sudo systemctl daemon-reload && systemctl restart docker
配置 containerd
当使用 containerd 运行 Kubernetes 时,修改配置文件(通常位于 /etc/containerd/config.toml),将
nvidia-container-runtime 设为默认底层运行时:
version = 2
[plugins]
[plugins."io.containerd.grpc.v1.cri"]
[plugins."io.containerd.grpc.v1.cri".containerd]
default_runtime_name = "nvidia"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
privileged_without_host_devices = false
runtime_engine = ""
runtime_root = ""
runtime_type = "io.containerd.runc.v2"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
BinaryName = "/usr/bin/nvidia-container-runtime"
然后重启 containerd:
sudo systemctl daemon-reload && systemctl restart containerd
2. 标记节点
通过添加 "gpu=on" 标签将 GPU 节点标记为可调度 HAMi 任务。未标记的节点将无法被调度器管理。
kubectl label nodes {节点ID} gpu=on
3. 使用 Helm 部署 HAMi
首先通过以下命令确认 Kubernetes 版本:
kubectl version
然后添加 Helm 仓库:
helm repo add hami-charts https://project-hami.github.io/HAMi/
安装时需设置 Kubernetes 调度器镜像版本与集群版本匹配。例如集群版本为 1.16.8 时,使用以下命令部署:
helm install hami hami-charts/hami \
--set scheduler.kubeScheduler.imageTag=v1.16.8 \
-n kube-system
若一切正常,可见 vgpu-device-plugin 和 vgpu-scheduler 的 Pod 均处于 Running 状态。