Kubernetes v1.33:DRA 的新功能

Kubernetes 动态资源分配(DRA)最初在 v1.26 版本中作为 Alpha 功能引入,然后在 Kubernetes v1.31 中进行了重大重新设计。主要的 DRA 功能在 v1.32 中进入 Beta 阶段,该项目希望它能在 Kubernetes v1.34 中正式发布(GA)。

DRA 的基本功能集为请求设备提供了比设备插件(Device Plugin)更强大、更灵活的 API。虽然 DRA 在 v1.33 中仍然是 Beta 功能,但 DRA 团队一直在努力实现一些新功能和用户体验(UX)的改进。一个功能已升级到 Beta 版,同时增加了多个新的 Alpha 功能。该团队在为 DRA 准备 GA 方面也取得了进展。

升级到 Beta 的功能

驱动程序所有的 ResourceClaim Status 已升级到 Beta 版。这允许驱动程序在 ResourceClaim 中为每个分配的设备报告特定于驱动程序的设备状态数据,这对于支持网络设备特别有用。

新的 Alpha 特性

可分区设备(Partitionable Devices) 允许驱动程序公布多个重叠的逻辑设备(“分区”),驱动程序可以根据实际分配的设备动态地重新配置物理设备。这使得按需对设备进行分区以满足工作负载的需求成为可能,从而提高利用率。

设备污点和容忍(Device Taints and Tolerations) 允许设备被设置污点,并让工作负载容忍这些污点。这使得驱动程序或集群管理员可以将设备标记为不可用。根据污点的效果,这可以防止设备被分配,或导致使用该设备的 Pod 被驱逐。

优先级列表(Prioritized List) 允许用户为其工作负载指定一个可接受的设备列表,而不仅仅是单一类型的设备。因此,虽然工作负载可能在单个高性能 GPU 上运行效果最佳,但它也可能能够在 2 个中级 GPU 上运行。调度器将按顺序尝试满足列表中的备选项,因此工作负载将被分配到集群中可用的最佳设备集。

管理员访问(Admin Access) 已更新,现在只有有权访问带有 resource.k8s.io/admin-access: "true" 标签的命名空间的用户,才能在该命名空间内创建带有 adminAccess 字段的 ResourceClaim 或 ResourceClaimTemplates 对象。这授予管理员对使用中设备的访问权限,并可能在容器中提供设备时启用额外的权限。这确保了非管理员用户不能滥用该功能。

为正式发布做准备

新增了一个 v1beta2 API,以简化用户体验并为未来添加更多功能做准备。DRA 的 RBAC 规则得到了改进,并增加了对 DRA 驱动程序无缝升级的支持。

下一步是什么?

v1.34 的计划比 v1.33 更具雄心。最重要的是,我们(Kubernetes 设备管理工作组)希望将 DRA 升级为正式发布(GA),这将使其在所有 v1.34 Kubernetes 集群上默认可用。这也意味着,许多(甚至可能全部)在 v1.34 中仍为 Beta 的 DRA 功能将变为默认启用,从而使其更易于使用。

在 v1.33 中添加的 Alpha 功能将在 v1.34 中升级为 Beta。

参与进来

一个很好的起点是加入 WG Device Management 的 Slack 频道会议,会议时间对美国/欧洲和欧洲/亚太地区友好。

并非所有的增强想法都已作为 Issue 进行跟踪,所以如果你想帮助或有自己的想法,请来和我们交流!我们有各个层级的工作要做,从困难的核心变更到 kubectl 中的可用性增强,这些都可能由新人来承担。

致谢

非常感谢所有做出贡献的人