目前,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安装成功。

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐