k8s-device-plugin github: https://github.com/NVIDIA/k8s-device-plugin
注意事项:
- 从Kubernetes 1.8开始,官方推荐使用Device Plugins方式来使用GPU。
- 需要在Node上pre-install NVIDIA Driver,并建议通过Daemonset部署NVIDIA Device Plugin,完成后Kubernetes才能发现nvidia.com/gpu。
- 因为device plugin通过extended resources来expose gpu resource的,所以在container请求gpu资源的时候要注意resource QoS为Guaranteed。
- Containers目前仍然不支持共享同一块gpu卡。每个Container可以请求多块gpu卡,但是不支持gpu fraction。
- Node 上要有nvidia-docker >= 2.0
- 显卡驱动版本大于361.93
- 将nvidia配置为Docker默认的runtime
编辑/etc/docker/daemon.json文件,增加"default-runtime": "nvidia"键值对,此时该文件的内容应该如下所示):
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
在很多教程中都说明若要使用GPU,需要设置Accelerators为true,而实际上该参数在1.11版本之后就弃用了。而将DevicePlugins设置为true也是在1.9版本之前需要做的事情,在1.10版本之后默认就为true。
安装
在 master 节点上执行,:
kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v1.11/nvidia-device-plugin.yml
稍等一会后,使用kubectl describe nodes查看节点信息,可以看到具有GPU的Node节点中可获取的资源已包括GPU
然后创建一个 nvidia/cudaxxxx pod 然后 执行 kubectl exec -it podname nvidia-smi
注意:
看 nvidia-device-plugin.yml 部分内容:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: nvidia-device-plugin-daemonset
namespace: kube-system
可以看到: 它的类型是 DaemonSet 所以要保证gpu节点弄够 pull 下 image。
本文介绍了如何在 Kubernetes 环境中利用 GPU 资源。首先,需要安装 NVIDIA Device Plugin,确保 Node 上预装了 NVIDIA 驱动且版本大于361.93,并将 nvidia-docker 设置为默认 runtime。接着,通过 Daemonset 部署插件以使 Kubernetes 能够识别 GPU。注意,GPU 资源作为 extended resources,要求 Container 的 QoS 为 Guaranteed,且不支持多个 Container 共享同一 GPU。最后,创建使用 GPU 的 pod 并通过 `kubectl` 检查 GPU 使用情况。

8266

被折叠的 条评论
为什么被折叠?



