元鉴
返回中文阅读流

Kubernetes Blog

Kubernetes v1.36:更多驱动、新功能,以及 DRA 的下一阶段

Kubernetes v1.36 中 DRA 继续成熟,带来功能升级、可用性改进,并扩展到内存、CPU 等原生资源。

中文内容

已翻译official company source英文原文2026-05-07

Kubernetes v1.36:更多驱动、新功能,以及 DRA 的下一阶段

By The DRA team | Thursday, May 07, 2026

Dynamic Resource Allocation(DRA,动态资源分配)从根本上改变了平台管理员在 Kubernetes 中处理硬件加速器和专用资源的方式。在 v1.36 版本中,DRA 继续走向成熟,带来一系列功能升级、关键可用性改进和新能力,将 DRA 的灵活性扩展到内存和 CPU 等原生资源,并支持 PodGroups 中的 ResourceClaims。

驱动可用性持续扩大。除专用计算加速器外,生态系统还包括对网络和其他硬件类型的支持,体现出向更稳健、硬件无关型基础设施演进的趋势。

无论你是在管理大规模 GPU 集群、需要更好地处理故障,还是只是寻找更好的资源回退选项定义方式,1.36 中的 DRA 升级都能提供相应能力。让我们深入了解这些新功能和升级!

功能升级

社区一直在努力稳定 DRA 的核心概念。在 Kubernetes 1.36 中,多项备受期待的功能已升级到 Beta 和 Stable。

优先级列表(Stable)

硬件异构性是大多数集群中的现实。借助 Prioritized list 功能,你可以在请求设备时放心地定义回退偏好。你不必硬编码请求某个特定设备型号,而是可以指定一个按顺序排列的偏好列表(例如:“给我一个 H100,但如果没有可用的,就回退到 A100”)。调度器将按顺序评估这些请求,从而大幅提升调度灵活性和集群利用率。

扩展资源支持(Beta)

随着 DRA 成为资源分配的标准,弥合其与遗留系统之间的差距至关重要。DRA Extended resource 功能允许用户通过 Pod 上的传统扩展资源来请求资源。这使得向 DRA 的过渡可以循序渐进,意味着集群运维人员可以将集群迁移到 DRA,同时让应用开发者按自己的节奏采用 ResourceClaim API。

可分区设备(Beta)

硬件加速器功能强大,而有时单个工作负载并不需要整台设备。Partitionable devices 功能为 DRA 提供原生支持,可根据工作负载需求将物理硬件动态划分为更小的逻辑实例(例如 Multi-Instance GPUs)。这使管理员能够安全且高效地在多个 Pods 之间共享昂贵的加速器。

设备污点(Beta)

正如你可以给 Kubernetes Node 添加污点一样,也可以直接给特定 DRA 设备应用污点。Device taints 和 tolerations 使集群管理员能够更有效地管理硬件。你可以给故障设备添加污点,防止它们被分配给标准声明;也可以为专门团队、特定工作负载和实验保留特定硬件。最终,只有具备匹配 tolerations 的 Pods 才被允许声明这些带污点的设备。

设备绑定条件(Beta)

为提高调度可靠性,Kubernetes 调度器可以使用 Binding conditions 功能,在所需外部资源(例如可挂载设备或 FPGAs)完全准备就绪之前,延迟将 Pod 提交到某个 Node。通过显式建模资源就绪状态,该功能可防止过早分配导致 Pod 失败,从而确保更稳健、更可预测的部署流程。

资源健康状态(Beta)

对于运行在专用硬件上的工作负载而言,了解设备何时发生故障或变为不健康至关重要。借助 Resource health status,Kubernetes 可直接在 Pod 状态中暴露设备健康信息,为用户和控制器提供关键可见性,以便快速识别并响应硬件故障。该功能支持人类可读的健康状态消息,使问题诊断显著更容易,而无需深入查看复杂的驱动日志。

新功能

除了稳定现有能力外,v1.36 还引入了扩展 DRA 能力边界的基础性新功能。这些是 alpha 功能,因此位于默认禁用的功能门控之后。

为优化依赖严格拓扑调度的大规模 AI/ML 工作负载,面向工作负载的 ResourceClaim 支持功能使 Kubernetes 能够在海量 Pods 集合之间无缝管理共享资源。通过将 ResourceClaims 或 ResourceClaimTemplates 与 PodGroups 关联,该功能消除了此前的扩展瓶颈,例如可共享同一声明的 Pod 数量限制,并将专用编排器从手动声明管理负担中解放出来。

节点可分配资源

为什么 DRA 只能用于外部加速器?在 v1.36 中,我们引入了使用 DRA APIs 管理节点可分配基础设施资源(如 CPU 和内存)的首个迭代。通过 DRA Node allocatable resources 功能将 CPU 和内存分配纳入 DRA 范畴,用户可以将 DRA 的高级放置、NUMA 感知和优先级语义用于标准计算资源,为极细粒度的性能调优铺平道路。

DRA 资源可用性可见性

集群管理员最常请求的功能之一,是对硬件容量获得更好的可见性。新的 Resource pool status 功能允许你查询 DRA 资源池中设备的可用性。通过创建 ResourcePoolStatusRequest 对象,你可以获取由给定驱动管理的每个资源池的设备数量时间点快照,包括总数、已分配、可用和不可用。这有助于更好地与仪表盘和容量规划工具集成。

属性的列表类型

ResourceClaim 约束评估已发生变化,以更好地处理标量值和列表值:matchAttribute 现在会检查是否存在非空交集,distinctAttribute 则检查值是否两两不相交。

CEL 中还引入了 includes() 函数,使设备选择器在属性于标量和列表表示之间变化时更容易保持工作。(includes() 函数仅在 DRA 上下文中用于表达式评估)。

确定性设备选择

Kubernetes 调度器已更新为基于资源池和 ResourceSlice 名称使用字典序来评估设备。此项变更使驱动能够主动影响调度过程,从而提升吞吐量并做出更优的调度决策。ResourceSlice 控制器工具包会自动生成名称,以反映驱动作者指定的确切设备顺序。

容器中可发现的设备元数据

运行在带有 DRA 设备的节点上的工作负载,通常需要发现其已分配设备的详细信息,例如 PCI 总线地址或网络接口配置,而不必查询 Kubernetes API。借助 Device metadata,Kubernetes 定义了一种标准协议,规定 DRA 驱动如何在众所周知的路径上以版本化 JSON 文件的形式向容器暴露设备属性。使用 DRA kubelet 插件库构建的驱动可透明获得这一行为;它们只需提供元数据,库会处理文件布局、CDI bind-mounts、版本控制和生命周期。这为应用提供了一种一致且与驱动无关的方式来发现和使用设备元数据,免除了为通过属性获取元数据而编写自定义控制器或查找 ResourceSlice 对象的需要。

接下来是什么?

此版本引入了大量新的 Dynamic Resource Allocation(DRA)功能,而且发展势头仍在增强。展望未来,我们的路线图将聚焦于推动现有功能走向 beta 和 stable 发布,同时强化 DRA 的性能、可扩展性和可靠性。未来几个周期的一项关键优先事项,将是与工作负载感知和拓扑感知调度进行深度集成。

我们的一个重要目标是将用户从 Device Plugin 迁移到 DRA,并希望你参与其中。无论你目前正在维护驱动,还是刚开始探索相关可能性,你的意见都至关重要。请与我们合作,共同塑造下一代资源管理。欢迎立即联系我们,参与开发协作、分享反馈,或开始构建你的第一个 DRA 驱动。

参与方式

一个不错的起点是加入 WG Device Management Slack 频道和会议,会议安排在适合 Americas/EMEA 以及 EMEA/APAC 时区的时段。

并非所有增强想法都已经作为 issue 跟踪,因此如果你想提供帮助或自己有一些想法,欢迎来和我们交流!我们在各个层面都有工作要做,从困难的核心变更,到 kubectl 中的可用性增强,其中一些任务可由新成员参与。

  • ← 上一篇
  • 下一篇 →

原文标题

Kubernetes v1.36: More Drivers, New Features, and the Next Era of DRA