Docker19.0+部署k8s的Nvidia device plugin
目前,k8s对gpu的调度还是v1.10 beta版本。官方仅支持AMD和NVIDIA的GPU。(补充:根据之前个人经验,寒武纪自己开发了应用于k8s的device plugin,所以寒武纪也是支持的,只不过k8s官方可能不知道这事。)注意:根据官方说明,安装英伟达GPU plugin前必须安装好nvidia-docker2,但是docker19.0+版本又不需要安装nvidia-docker2了
目前,k8s对gpu的调度还是v1.10 beta版本。官方仅支持AMD和NVIDIA的GPU。(补充:根据之前个人经验,寒武纪自己开发了应用于k8s的device plugin,所以寒武纪也是支持的,只不过k8s官方可能不知道这事。)
注意:根据官方说明,安装英伟达GPU plugin前必须安装好nvidia-docker2,但是docker19.0+版本又不需要安装nvidia-docker2了,所以我姑且试了一下,发现确实不需要安装nvidia-docker2,只需要配置/etc/docker/daemon.json文件,将默认运行时改成nvidia就可以了。(但如果你使用的是docker19.0以下的版本,还是老老实实安装官方教程走。)
参考资料
官方文档:https://kubernetes.io/zh/docs/tasks/manage-gpus/scheduling-gpus/
(官方的 NVIDIA GPU 设备插件)
按照官方文档配置完后k8s还是看不到gpu资源,参考下面这个链接配置了/etc/docker/daemon.json文件后就可以看见GPU资源了:
https://blog.csdn.net/hunyxv/article/details/92988788
部署步骤
注意:Step2和Step1的顺序可以调换;10.18.95.13是我部署的机器IP。
Step1. 创建一个daemonset:
$ kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta4/nvidia-device-plugin.yml
该daemonset在每个节点上启动一个pod,如下图。
需要等待所有pod都是Running状态,如果出现什么错误需要人工解决。我这里遇见的问题是pod所需镜像拉取失败。
解决方法:在10.18.95.13上手动docker pull了5次,终于pull下来了。
Step2. 所有节点都要完成这步操作。
参考https://blog.csdn.net/hunyxv/article/details/92988788配置/etc/docker/daemon.json文件(如没有该文件则新建文件):
$ vim /etc/docker/daemon.json
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
$ systemctl restart docker
验证
$ kubectl describe node 10.18.95.13
可以看见如下nvidia.com/gpu资源,表示plugin安装成功。
更多推荐
所有评论(0)