欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在 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。

相关标签: nvidia-plugin k8s