使用k8s部署需要gpu的项目
如果在linux直接安装基础的k8s,是检测不到gpu资源的。表现为使用kubectl describe node
,没有nvidia
那一行。
# 安装container-toolkit
container-toolkit (opens new window)是英伟达开发的和容器交互的东西。可以看官方教程,下面以apt安装为例。
- 配置生产存储库:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
1
2
3
4
2
3
4
- 安装:
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
1
2
2
# 配置容器运行时
有一个配置工具可以直接用,在参考链接 (opens new window)里面也有官方的安装方法。不同的容器运行时安装方法不一样,下文以containerd为例。
sudo nvidia-ctk runtime configure --runtime=containerd
1
nvidia-ctk命令修改主机上的/etc/containerd/config.toml文件。该文件已更新,以便 Containerd 可以使用 NVIDIA 容器运行时。
这里有一个很坑的地方,这个配置文件的修可能有一个地方不生效。
这里有两个地方要改,如果第一个位置不是nvidia需要手动改成nvidia。
重新启动容器:
sudo systemctl restart containerd
1
# 启动gpu插件
kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.17.0/deployments/static/nvidia-device-plugin.yml
1
然后重启kubelet。
sudo systemctl restart kubelet
1
此时可以再用kubectl describe node
查看一下是否有了gpu资源,如果没有可以使用kubectl get pod -n kube-system
,找到nvidia开头的容器,然后用kubectl logs
看一下这个pod的log。
编辑 (opens new window)
上次更新: 2024/12/04, 16:28:16
- 01
- 格言12-03
- 03
- containerd高版本换源,containerd换源无效问题11-07