协会地址:上海市长宁区古北路620号图书馆楼309-313室
Kubernetes v1.36:更多驱动支持、全新特性,开启 DRA 新时代
来源: Kubernetes Blog
发布时间: 2026/5/8 02:35:00
原文链接: https://kubernetes.io/blog/2026/05/07/kubernetes-v1-36-dra-136-updates/
动态资源分配(Dynamic Resource Allocation, DRA)从根本上改变了平台管理员在 Kubernetes 中处理硬件加速器和专用资源的方式。在 v1.36 版本中,DRA 持续成熟,带来了一系列功能毕业、关键可用性改进以及新能力,这些新能力将 DRA 的灵活性扩展到内存和 CPU 等原生资源,并支持 PodGroup 中的 ResourceClaim。
驱动程序可用性持续扩展。除了专用计算加速器,生态系统还包含对网络和其他硬件类型的支持,这反映出基础设施正朝着更健壮、与硬件无关的方向发展。
无论你是管理大规模 GPU 集群、需要更好地处理故障,还是仅仅在寻找更优的方式来定义资源回退选项,1.36 中 DRA 的升级都能满足你的需求。让我们深入了解新功能和毕业特性!
功能毕业
社区一直在努力稳定 DRA 的核心概念。在 Kubernetes 1.36 中,多个备受期待的功能已毕业至 Beta 和 Stable 阶段。
优先级列表(稳定版)
硬件异构性是大多数集群中的现实情况。借助优先级列表(Prioritized list)功能,您可以在请求设备时自信地定义回退偏好。无需硬编码请求特定设备型号,而是可以指定一个有序的偏好列表(例如:“给我一块 H100,如果没有,则回退到 A100”)。调度器将按顺序评估这些请求,从而大幅提升调度灵活性和集群利用率。
扩展资源支持(Extended resource support,beta)
随着动态资源分配(DRA)成为资源分配的标准,弥合与遗留系统之间的差距至关重要。DRA 的扩展资源(Extended resource)功能允许用户通过 Pod 上的传统扩展资源来请求资源。这实现了向 DRA 的逐步过渡,意味着集群运维人员可以迁移集群到 DRA,同时让应用开发者按照自己的节奏采用 ResourceClaim API。
可分区设备(Partitionable devices,beta)
硬件加速器功能强大,但有时单个工作负载并不需要整个设备。可分区设备(Partitionable devices) 特性为 DRA 提供了原生支持,能够根据工作负载需求将物理硬件动态划分为更小的逻辑实例(例如多实例 GPU,Multi-Instance GPUs)。这使得管理员可以在多个 Pod 之间安全高效地共享昂贵的加速器。
设备污点(Device taints,beta)
正如你可以对 Kubernetes 节点设置污点一样,你也可以直接将污点应用于特定的 DRA 设备。设备污点与容忍度(Device taints and tolerations) 使集群管理员能够更有效地管理硬件。你可以对故障设备设置污点,防止它们被分配给标准声明;也可以为专用团队、特定工作负载和实验预留特定硬件。最终,只有具有匹配容忍度的 Pod 才被允许声明这些带有污点的设备。
设备绑定条件(Device binding conditions,beta)
为了提高调度可靠性,Kubernetes 调度器可以使用绑定条件功能,将 Pod 提交到节点的操作延迟到其所需的外部资源(例如可附加设备或 FPGA)完全准备就绪之后。通过显式建模资源就绪状态,该功能可以防止过早分配导致 Pod 失败,从而确保部署过程更加稳健和可预测。
资源健康状态(beta)
对于运行在专用硬件上的工作负载而言,了解设备何时发生故障或变得不健康至关重要。借助资源健康状态,Kubernetes 直接在 Pod 状态中暴露设备健康信息,为用户和控制器提供关键可见性,以便快速识别并响应硬件故障。该功能支持人类可读的健康状态消息,使得诊断问题变得更加容易,无需深入复杂的驱动程序日志。
新特性
除了稳定现有能力之外,v1.36 还引入了基础性的新特性,扩展了 DRA 的功能范围。这些特性属于 alpha 阶段,因此位于默认禁用的特性门控之后。
工作负载对 ResourceClaim(资源声明)的支持
为优化依赖严格拓扑调度的大规模AI/ML工作负载,工作负载的ResourceClaim支持功能使Kubernetes能够在大量Pod之间无缝管理共享资源。通过将ResourceClaim或ResourceClaimTemplate与PodGroup关联,该功能消除了以往的资源扩展瓶颈(如单个claim可共享的Pod数量限制),并减轻了专业编排器手动管理claim的负担。
节点可分配资源
为什么DRA只能用于外部加速器?在v1.36中,我们引入了使用DRA API管理节点可分配基础设施资源(如CPU和内存)的初步实现。通过将CPU和内存分配纳入DRA框架(借助DRA 节点可分配资源功能),用户可以利用DRA的先进调度、NUMA感知和优先级语义来管理标准计算资源,为极精细的性能调优铺平道路。
DRA资源可用性可见性
集群管理员最常要求的功能之一就是更好地了解硬件容量。新的 Resource pool status(资源池状态)功能允许你查询 DRA 资源池中设备的可用性。通过创建一个 ResourcePoolStatusRequest 对象,你可以获得每个由给定驱动程序管理的资源池中设备数量的时间点快照——包括总数、已分配、可用和不可用。这有助于更好地与仪表盘和容量规划工具集成。
属性的列表类型
ResourceClaim 约束评估已更改,以更好地处理标量和列表值:matchAttribute 现在检查非空交集,而 distinctAttribute 检查成对不相交的值。
CEL 中还引入了一个 includes() 函数,当属性在标量和列表表示之间变化时,设备选择器可以更轻松地继续工作。(includes() 函数仅在 DRA 上下文中用于表达式评估。)
确定性设备选择
Kubernetes 调度器已更新,现在会根据资源池(resource pool)和 ResourceSlice(资源切片)名称,采用字典序(lexicographical ordering)来评估设备。这一变更使驱动能够主动影响调度过程,从而提高吞吐量并做出更优的调度决策。ResourceSlice 控制器工具包会自动生成名称,这些名称精确反映了驱动作者指定的设备顺序。
容器中可发现的设备元数据
在具有 DRA(动态资源分配,Dynamic Resource Allocation)设备的节点上运行的工作负载,通常需要在不查询 Kubernetes API 的情况下,发现其已分配设备的详细信息,例如 PCI 总线地址或网络接口配置。借助设备元数据,Kubernetes 定义了一个标准协议,规定 DRA 驱动如何将设备属性以版本化 JSON 文件的形式,通过已知路径暴露给容器。使用 DRA kubelet 插件库构建的驱动可以透明地获得此行为;它们只需提供元数据,库会负责文件布局、CDI 绑定挂载、版本管理和生命周期。这为应用程序提供了一种一致且与驱动无关的方式来发现和使用设备元数据,无需自定义控制器,也无需通过查询 ResourceSlice 对象来获取属性中的元数据。
下一步计划?
本次发布引入了大量新的动态资源分配(Dynamic Resource Allocation,DRA)特性,且发展势头正劲。展望未来,我们的路线图聚焦于将现有特性逐步成熟至 Beta 和稳定版本,同时强化 DRA 的性能、可扩展性和可靠性。未来几个周期的一个关键优先事项将是与工作负载感知和拓扑感知调度的深度集成。
我们的一个重要目标是引导用户从 Device Plugin 迁移至 DRA,并希望您参与其中。无论您当前正在维护驱动程序,还是刚刚开始探索可能性,您的意见都至关重要。请与我们携手,共同塑造下一代资源管理。立即联系我们,参与开发协作、分享反馈,或开始构建您的第一个 DRA 驱动程序。
参与进来
一个好的起点是加入 WG Device Management Slack 频道并参加会议,会议时间安排在美洲/EMEA 和 EMEA/APAC 友好的时段。
并非所有增强想法都已记录为 issue,因此如果您想提供帮助或有自己的想法,请随时与我们交流!我们在各个层面都有工作要做,从困难的核心变更到 kubectl 中的可用性增强,这些工作也适合新手参与。







