- 文档首页
容器服务
容器服务 VKE
用户指南
异构计算
NVIDIA GPU
使用 DRA 实现 NVIDIA GPU 调度
NVIDIA GPU
使用 DRA 实现 NVIDIA GPU 调度
使用 DRA 实现 NVIDIA GPU 调度
DRA 是 Kubernetes 提供的一种声明式的资源管理机制,用于解决 GPU 等高性能硬件在细粒度分配、拓扑感知调度及跨节点共享等场景下的复杂资源管控问题。本文将详细阐述 DRA 的核心技术方案、与传统调度机制的差异以及配置方法。
DRA(Dynamic Resource Allocation,动态资源分配)是 Kubernetes 提供的一种资源管理框架。在容器服务中,它允许工作负载以声明式的方式申请和共享硬件资源(如 GPU、RDMA 网络接口等)。DRA 通过将硬件资源抽象为可编程的 API 对象,实现了资源管理逻辑从 kubelet 内置逻辑向第三方驱动(Driver)的解耦。DRA 显著提升了资源的分配精度和利用率,特别是在需要跨节点 GPU 内存统一寻址、GPU 共享以及高性能网络对齐等高阶场景下,提供了更高的调度灵活性。
DRA 与传统的 Device Plugin(设备插件)调度机制相比,在资源描述和调度逻辑上存在显著区别。如下表所示。
DRA 使用 ResourceClaim 等资源对象,对底层共享硬件资源进行探测、申请和分配。本文中涉及的资源对象说明,如下表所示。
- 暂不支持在集群中自动配置 DRA。如有需要,您可以遵循本文介绍的配置方法,手工配置。
- 当集群中的节点使用 DRA 时,无法同时使用以下 GPU 功能:
- 已创建 VKE 集群,且集群 Kubernetes 版本需大于等于 v1.34。
- 在左侧导航栏中选择 集群,单击目标集群名称,进入集群控制台。
- 在节点池配置页面中,单击 创建节点池,根据您的实际需求,创建节点池。详细参数说明,请参见 创建节点池。其中:
- 在 计算规格 中,选择 GPU 计算型 规格,为集群添加包含 GPU 的节点。规格详细介绍,请参见 GPU 计算型。
- 在 容器运行时 中,配置 Containerd 版本为 2.1 及以上版本。
-
- 在 高级配置 中,单击 添加节点标签,为节点池添加如下标签。
- 配置标签键为vke.node.gpu.schedule,标签值为nvidia-dra。表示在该节点池中的节点上,开启 DRA GPU 调度能力。
- 配置标签键为nvidia.com/gpu.present,标签值为true。表示在该节点池中的节点上,运行 DRA 驱动。
-
- 通过 kubectl 连接目标集群。详情请参见 连接集群。
- 执行以下命令,添加 NVIDIA Helm 仓库。
- 执行以下命令,安装 NVIDIA DRA 驱动。本文以安装 25.8.1 版本驱动为例。
DRA 安装完成后,您需要确认集群中的 NVIDIA DRA 驱动是否正常运行,同时 GPU 资源已成功上报到集群。
- 执行以下命令,检查集群中 DRA 相关的 API 资源。
- 执行以下命令,检查 NVIDIA DRA 的 Pod 信息。
- 预期返回信息如下,Pod 已完成部署,且状态为Running。
- 执行以下命令,检查集群中的 NVIDIA DRA 可用资源。
- 执行以下命令,查询 NVIDIA DRA 节点上报的资源。
- 执行以下命令,确认节点资源是否正确,不再出现nvidia.com/gpu资源。其中${dra-node-name}为节点名称,例如192.168.2.8。
- 预期返回信息如下,其中Capacity和Allocatable应该为空。
在集群中完成 NVIDIA DRA 安装后,您可以通过 ResourceClaimTemplate 资源创建资源声明(ResourceClaim),从而为工作负载申请并使用 DRA GPU 资源。
创建 ResourceClaimTemplate 资源
- 创建 ResourceClaimTemplate 的 YAML 文件。示例文件resource-claim-template-single-gpu.yaml代码如下:
- 执行以下命令,创建 ResourceClaimTemplate。
- 执行以下命令,确认已创建的 ResourceClaimTemplate 资源状态。
- 创建工作负载,并使用 ResourceClaimTemplate 申请资源。本文以创建无状态负载为例,示例resource-claim-template-pod.yaml代码如下:
- 预期返回信息如下,工作负载已完成部署,Pod 状态为Running。
- 执行以下命令,查看工作负载关联的 ResourceClaims 资源。
- 执行以下命令,查看 ResourceClaim 资源详情。
- 预期返回信息如下,包括 Pod 被分配到的具体设备信息。
最近更新时间:2026.04.21 19:41:38