前提是已经安装了nvidia驱动
一、安装nvidia-container-toolkit(推荐)
#复制一份docker配置文件,以防被覆盖
cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
#安装NVIDIA Container Toolkit
apt-get install nvidia-container-toolkit
二、配置容器运行时
#nvidia-ctk命令将会修改/etc/docker/daemon.json文件以便Docker可以使用nvidia容器运行时
nvidia-ctk runtime configure --runtime=docker
#实际上,上面nvidia-ctk命令是往/etc/docker/daemon.json文件追加了如下参数
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
三、修改docker默认运行时
docker要使用nvidia运行时才能正常使用gpu,但是k8s中kubelet需要调用docker,所以要将docker默认运行时设置为nvidia.
#查看当前docker默认运行时
docker info | grep -i 'Default Runtime'
#修改docker默认运行时,在daemon.json文件中添加默认运行时
vim /etc/docker/daemon.json
{
"default-runtime": "nvidia", #设置默认运行时
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
}
四、重启dockers,并确认默认运行时生效
systemctl restart docker
docker info | grep -i 'Default Runtime'
五、k3s安装nvidia-device-plugin插件(在master节点上安装)
#在master节点上安装
#k8s中要识别gpu资源,需要安装nvidia-device-plugin插件,注册分配gpu主要由device-plugin插件完成
#官网:https://github.com/NVIDIA/k8s-device-plugin
wget https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.1/nvidia-device-plugin.yml
#vim nvidia-device-plugin.yml #该文件存在hostpath的卷,确认kubelet的安装路径正确
kubectl apply -f nvidia-device-plugin.yml
kubectl get pod -n kube-system | grep nvidia-device-plugin
在master节点上查看
六、pod中使用GPU
只需要下载能识别GPU的基础镜像,使用该基础镜像启动容器,使用该基础镜像pod中不需要配置 resources: limits: nvidia.com/gpu: 1 中也能正常识别GPU
docker pull nvidia/cuda:12.2.0-base-ubuntu22.04
参考链接:k8s中如何使用gpu、gpu资源讲解、nvidia gpu驱动安装_kubernetes 查看 节点 gpu-CSDN博客