Kubernetes v1.34:DRA 已进阶至 GA
Kubernetes 1.34 来了,它为动态资源分配(Dynamic Resource Allocation,DRA)带来了大量的增强功能!此版本标志着一个重要的里程碑,resource.k8s.io
组中的许多 API 已进阶至正式发布(GA),从而释放了在 Kubernetes 上管理设备的全部潜力。除此之外,几个关键特性已进入 Beta 阶段,一批新的 Alpha 特性也预示着更强的表达能力和灵活性。
让我们深入了解 Kubernetes 1.34 中 DRA 的新功能!
DRA 的核心现已达到 GA
v1.34 版本的主要亮点是 DRA 的核心已进阶至正式发布(General Availability)。
Kubernetes 动态资源分配 (DRA) 提供了一个灵活的框架来管理专用硬件和基础设施资源,例如 GPU 或 FPGA。DRA 提供的 API 允许每个工作负载指定其所需设备的属性,但将实际设备的分配工作留给调度器,从而提高了可靠性并改进了昂贵硬件的利用率。
随着进阶至 GA,DRA 已经稳定,并将长期成为 Kubernetes 的一部分。社区仍然可以期待在接下来的几个 Kubernetes 版本中,会有一系列新功能被添加到 DRA 中,但它们不会对 DRA 做出任何破坏性更改。因此,用户和 DRA 驱动程序的开发者可以放心地开始采用 DRA。
从 Kubernetes 1.34 开始,DRA 默认启用;已达到 Beta 阶段的 DRA 特性也**同样**默认启用。这是因为 DRA 的默认 API 版本现在是稳定的 v1
版本,而不是需要明确选择启用的早期版本(例如:v1beta1
或 v1beta2
)。
晋升至 Beta 的特性
几个强大的特性已晋升至 Beta 阶段,为使用 DRA 进行资源管理增加了更多的控制、灵活性和可观察性。
管理员访问标签 已更新。在 v1.34 中,你可以将设备支持限制为被授权使用它的人员(或软件)。这是为了在 DRA 驱动程序请求管理员访问权限时授予额外权限的情况下,避免权限提升,并避免访问正常应用程序(可能在另一个名字空间中)正在使用的设备。该限制通过确保只有对带有 resource.k8s.io/admin-access: "true"
标签的名字空间有访问权限的用户才能创建 adminAccess
字段设置为 true 的 ResourceClaim 或 ResourceClaimTemplates 对象来实现。这确保了非管理员用户不能滥用此功能。
优先级列表 允许用户为其工作负载指定一个可接受的设备列表,而不仅仅是单一类型的设备。因此,虽然工作负载可能在单个高性能 GPU 上运行效果最佳,但它也可能能够在两个中级 GPU 上运行。调度器将尝试按列表顺序满足备选方案,因此工作负载将被分配到节点上可用的最佳设备集。
kubelet 的 API 已更新,以报告通过 DRA 分配的 Pod 资源。这使得节点监控代理能够了解节点上 Pod 的已分配 DRA 资源,并使得在 PodResources API 中使用 DRA 信息来开发新功能和集成成为可能。
新的 Alpha 特性
Kubernetes 1.34 还引入了几个新的 Alpha 特性,让我们一窥使用 DRA 进行资源管理的未来。
DRA 中的扩展资源映射支持允许集群管理员将 DRA 管理的资源作为**扩展资源**进行通告,从而允许开发人员使用熟悉的、更简单的请求语法来使用它们,同时仍然受益于动态分配。这使得现有工作负载无需修改即可开始使用 DRA,为应用程序开发人员和集群管理员简化了向 DRA 的过渡。
可消费容量引入了一种灵活的设备共享模型,其中来自不相关 Pod 的多个独立资源声明可以各自被分配到同一底层物理设备的一部分。这个新功能通过可选的、管理员定义的共享策略进行管理,这些策略规定了设备的总容量如何被平台为每个请求划分和强制执行。这允许在预定义分区不可行的情况下共享设备。关于此功能的博客文章即将发布。
绑定条件通过允许 Kubernetes 调度器延迟将 Pod 绑定到节点,直到其所需的外部资源(如可挂载设备或 FPGA)被确认完全准备好,从而提高了某些类别设备的调度可靠性。这可以防止可能导致失败的过早的 Pod 分配,并通过在 Pod 提交到节点之前明确建模资源就绪状态,确保更稳健、可预测的调度。
DRA 的**资源健康状态**通过 Pod Status 暴露分配给 Pod 的设备的健康状态,从而提高了可观察性。无论设备是通过 DRA 还是设备插件分配的,这都有效。这使得更容易理解不健康设备的原因并做出正确响应。关于此功能的博客文章即将发布。
下一步是什么?
虽然 DRA 在本周期晋升至 GA,但关于 DRA 的辛勤工作并未停止。我们计划在接下来的几个版本中将几个处于 Alpha 和 Beta 阶段的特性推向 GA,并希望继续提高 DRA 的性能、可伸缩性和可靠性。因此,可以期待在 1.35 版本中看到同样雄心勃勃的一系列 DRA 特性。
参与进来
一个好的起点是加入 WG Device Management 的 Slack 频道和会议,会议时间对美国/欧洲和欧洲/亚太地区友好。
并非所有的增强想法都已经被追踪为 issue,所以如果你想帮忙或者自己有一些想法,请来和我们交流!我们有各个层面的工作要做,从困难的核心变更到 kubectl 中的可用性增强,这些都可能由新手来承担。
致谢
非常感谢本周期对 DRA 的新贡献者们
- Alay Patel (alaypatel07)
- Gaurav Kumar Ghildiyal (gauravkghildiyal)
- JP (Jpsassine)
- Kobayashi Daisuke (KobayashiD27)
- Laura Lorenz (lauralorenz)
- Sunyanan Choochotkaew (sunya-ch)
- Swati Gupta (guptaNswati)
- Yu Liao (yliaog)