调度 GPU

    特性状态:

    Kubernetes 支持使用设备插件来跨集群中的不同节点管理 AMD 和 NVIDIA GPU(图形处理单元),目前处于稳定状态。

    本页介绍用户如何使用 GPU 以及当前存在的一些限制。

    Kubernetes 实现了设备插件(Device Plugin),让 Pod 可以访问类似 GPU 这类特殊的硬件功能特性。

    作为集群管理员,你要在节点上安装来自对应硬件厂商的 GPU 驱动程序,并运行来自 GPU 厂商的对应设备插件。以下是一些厂商说明的链接:

    一旦你安装了插件,你的集群就会暴露一个自定义可调度的资源,例如 amd.com/gpunvidia.com/gpu

    你可以通过请求这个自定义的 GPU 资源在你的容器中使用这些 GPU,其请求方式与请求 cpumemory 时相同。 不过,在如何指定自定义设备的资源请求方面存在一些限制。

    • GPU 只能在 部分指定,这意味着:
      • 你可以同时指定 limitsrequests,不过这两个值必须相等。
      • 你不可以仅指定 而不指定 limits

    以下是一个 Pod 请求 GPU 的示例清单:

    例如:

    1. # 为你的节点加上它们所拥有的加速器类型的标签
    2. kubectl label nodes node2 accelerator=other-gpu-k915

    这个标签键 只是一个例子;如果你愿意,可以使用不同的标签键。

    如果你在使用 AMD GPU,你可以部署 Node Labeller, 它是一个 , 会自动给节点打上 GPU 设备属性标签。

    对于 NVIDIA GPU,GPU feature discovery 提供了类似功能。