Kubernetes v1.37:DRA 更新

💡 原文英文,约1300词,阅读约需5分钟。
📝

内容提要

Kubernetes 1.37发布,动态资源分配(DRA)多项功能升级:扩展资源支持转正,设备污点与容忍稳定,新增标准NUMA属性。工作负载资源声明、设备属性向下API等进入Beta或Alpha。引入派生属性、兼容组、预排队提示等新特性,提升调度效率与灵活性,支持分数容量,推动DRA成熟。

🔎

延伸解读

扩展资源转正:平滑迁移的关键

DRA 扩展资源支持在 1.37 中达到 GA,意味着现有使用扩展资源(如 example.com/gpu)的工作负载无需修改即可继续运行,而底层分配逻辑可逐步切换到 DRA。这为集群管理员提供了渐进式采用路径,降低了迁移风险,是 DRA 走向生产可用的重要一步。

设备污点与容忍:运维灵活性的提升

设备污点与容忍机制转正,允许驱动或集群管理员标记设备为不可用,新 Pod 调度时会自动跳过,而已使用该设备的 Pod 可被驱逐,除非其 ResourceClaim 显式容忍。这类似于节点污点,便于单设备维护或降级处理,而无需中断整个集群,增强了运维的精细控制。

派生属性:解决跨厂商设备匹配难题

派生属性功能允许用户通过 CEL 表达式自定义设备匹配规则,解决了不同厂商使用不同属性名(如 numa vs numaNode)导致无法配对的问题。用户无需等待厂商统一标准,即可在清单中自行桥接差异,甚至处理复杂场景如从拓扑字符串中提取 ID 或按容量分组,提升了调度灵活性。

预排队提示:调度性能的优化

预排队提示扩展点通过索引仅重排受影响的 Pod,将 DRA 资源声明事件触发的全量扫描从 O(N²) 降为 O(1),在早期基准测试中调度吞吐量约翻倍。这对大规模扩容场景尤为重要,表明 DRA 在性能优化上持续投入,为更大规模集群部署奠定基础。

Q&A

Kubernetes 1.37中DRA的扩展资源支持达到什么状态?

在Kubernetes 1.37中,DRA的扩展资源支持正式毕业为GA(稳定版)。这意味着DRA驱动可以直接满足传统的扩展资源请求(如example.com/gpu),无需再单独运行设备插件。

Kubernetes 1.37中设备污点与容忍功能有何用途?

设备污点与容忍功能允许DRA驱动将设备标记为污点,使其在调度新Pod时被跳过。集群管理员可以通过DeviceTaintRule在集群范围内应用污点,而无需重新配置驱动。这有助于将单个设备下线维护或标记为降级,同时不影响集群其他部分。

Kubernetes 1.37中标准NUMA属性是什么?

标准NUMA属性是resource.kubernetes.io/numaNode,它作为共享属性名称,使来自不同驱动的设备可以在同一NUMA节点上进行比较,避免了各驱动自定义属性名的问题。该属性在1.37中直接成为稳定版。

Kubernetes 1.37中工作负载资源声明功能处于什么阶段?

工作负载资源声明(ResourceClaim support for workloads)在1.37中进入Beta阶段,由DRAWorkloadResourceClaims特性门控控制,默认禁用。启用后,工作负载和Pod组可以直接引用ResourceClaims,从而允许单个声明被整个Pod组共享,突破了之前每个Pod预留限制的256个Pod上限。

Kubernetes 1.37中设备属性向下API的目标是什么?

设备属性向下API旨在支持将设备注入KubeVirt虚拟机。驱动在准备声明时填充Metadata字段,框架将其写入通过CDI挂载到容器中的JSON文件,使工作负载可以直接读取设备的PCI总线地址、MAC地址等属性,而无需自定义控制器来监视和转换ResourceClaims和ResourceSlices。

Kubernetes 1.37中派生属性功能解决了什么问题?

派生属性功能允许使用CEL表达式根据自定义规则匹配设备。它解决了不同厂商设备(如GPU/TPU和NIC)在同一NUMA节点上配对时,因属性名不一致(如一个用numa,另一个用numaNode)而无法匹配的问题。用户可以在清单中自行桥接这些差异,无需等待硬件厂商统一属性名。

Kubernetes 1.37中设备兼容组功能的作用是什么?

设备兼容组功能允许驱动将设备的分区(如GPU上的MIG和vGPU配置文件)标记为兼容组,使调度器提前拒绝不兼容的组合,而不是等到节点准备阶段由驱动失败。该功能由DRADeviceCompatibilityGroups特性门控控制,默认禁用。

Kubernetes 1.37中预排队提示扩展点如何提升调度性能?

预排队提示扩展点(PreQueueingHint)通过使用Pod informer索引,将DRA ResourceClaim事件触发的调度范围从所有不可调度Pod缩小到实际受影响的Pod,将重新排队路径从O(N²)降低到O(1),在早期基准测试中调度吞吐量大约翻倍。该功能由SchedulerPreQueueingHints特性门控控制。

Kubernetes 1.37中DRA可消耗容量支持分数容量有什么意义?

DRA可消耗容量现在支持在CapacityRequestPolicyRange中使用分数值,从而可以对具有分数资源的设备进行更精确的容量请求和分配,提高了需要细粒度资源分配的工作负载的灵活性。该功能由DRAFractionalCapacityRange特性门控控制,在1.37中处于Beta阶段。

🏷️

标签

➡️

继续阅读