在 k8s 中使用 GPU 资源
程序员文章站
2024-03-24 12:25:10
...
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。
上一篇: 在代码段中使用栈(0602)
下一篇: Python模块—OS模块