Kubernetes使用GPU

原创
半兽人 发表于: 2019-07-23   最后更新时间: 2024-08-07 15:48:14  
{{totalSubscript}} 订阅, 6,882 游览

Kubernetes提供对分布式节点上的AMD GPUNVIDIA GPU管理的实验性的支持。

在v1.6中已经添加了对 NVIDIA GPU 的支持,并且经历了多次向后不兼容的迭代。 通过 设备插件 将在v1.9中添加了对AMD GPU的支持。

本文将介绍如何在不同的Kubernetes版本中使用GPU以及当前的限制。

v1.8开始

从1.8开始,使用GPU的推荐方法是使用驱动插件

要在1.10之前通过设备插件启用GPU支持,必须在整个系统中将DevicePlugins功能设置为true:--feature-gates="DevicePlugins=true"。从1.10开始则不再需要这样做了。

然后,必须在节点上安装相应供应商GPU驱动程序,并从GPU供应商(AMD,NVIDIA)运行相应的设备插件。

如果满足上述条件,Kubernetes将暴露 nvidia.com/gpuamd.com/gpu 作为可调度资源。

你可以通过请求<vendor>.com/gpu来从容器中使用这些GPU,就像请求cpu或内存一样。但是,在使用GPU时如何指定资源要求存在一些限制:

  • GPU只能设置在limits部分中指定,这意味着:

    • 您可以在不指定requests的情况下指定GPU limits,因为默认情况下Kubernetes将使用limit作为请求值。
    • 您可以在limitsrequest中指定GPU,但这两个值必须相等。
    • 你不可以仅指定 requests 而不指定 limits
  • 容器(和pod)不共享GPU。GPU 也不可以过量分配(Overcommitting)。

  • 每个容器可以请求一个或多个GPU。 无法请求一小部分GPU。

例如:

apiVersion: v1
kind: Pod
metadata:
  name: cuda-vector-add
spec:
  restartPolicy: OnFailure
  containers:
    - name: cuda-vector-add
      # https://github.com/kubernetes/kubernetes/blob/v1.7.11/test/images/nvidia-cuda/Dockerfile
      image: "k8s.gcr.io/cuda-vector-add:v0.1"
      resources:
        limits:
          nvidia.com/gpu: 1 # requesting 1 GPU

部署 AMD GPU 驱动插件

部署 NVIDIA GPU 驱动插件

REF

https://github.com/NVIDIA/k8s-device-plugin

更新于 2024-08-07

シ皜彽調_N! 2年前

楼主太强了

查看kubernetes更多相关的文章或提一个关于kubernetes的问题,也可以与我们一起分享文章