在 v1.10 中该特性升级为 Beta 版本。
--feature-gates=DevicePlugins=true
(默认是关闭的)。ListAndWatch()
和 Allocate()
等方法,并监听 gRPC Server 的 Unix Socket 在 /var/lib/kubelet/device-plugins/
目录中,如 /var/lib/kubelet/device-plugins/nvidiaGPU.sock
。在实现 Device 插件时需要注意/var/lib/kubelet/device-plugins/kubelet.sock
向 Kubelet 注册,同时提供插件的 Unix Socket 名称、API 的版本号和插件名称(格式为 vendor-domain/resource
,如 nvidia.com/gpu
)。Kubelet 会将这些设备暴露到 Node 状态中,方便后续调度器使用/var/lib/kubelet/device-plugins/
目录,所以插件作者可以监控自己监听的 unix socket 是否被删除了,并根据此事件重新注册自己/var/lib/kubelet/device-plugins
以 Volume 的形式挂载到容器中。当然,也可以手动运行的方式来部署,但这样就没有失败自动恢复的功能了。nvidia
为默认运行时 (即配置 docker daemon 的选项 --default-runtime=nvidia
)。nvidia-docker 2.0 的安装方法为(以 Ubuntu Xenial 为例,其他系统的安装方法可以参考 这里):