Kubernetes DRA 会取代 HAMi 吗?
本文译自 CNCF 博客(2026 年 8 月 7 日),原文作者系 HAMi 项目贡献者。HAMi 已于 2026 年 7 月 15 日被 CNCF 技术监督委员会(TOC)接收为孵化项目。
想在一个 Kubernetes 上共享 GPU 的项目,长期以来只能「绕开」API 去工作,而不是「顺着」API 来工作。设备插件(device plugin)接口能做的事就是数设备,这就是它的全部词汇:nvidia.com/gpu: 1,意思是一整张卡,爱要不要。
HAMi 正是在这个词汇贫乏的基础上,构建了一整套流水线(变更型准入 Webhook、调度器扩展器、注解、容器内强制限制),去表达那些词汇表达不了的需求:「给这个 Pod 8000 MiB 显存和 10% 的算力,而且要把限制落到实处。」
后来,词汇变了。动态资源分配(Dynamic Resource Allocation,DRA) 在 Kubernetes v1.34 中正式发布(GA),并在 v1.35 起默认开启。借助其中的可消费容量(consumable capacity)特性,一个 Pod 现在可以越过任何注解,直接向调度器原生地申请一张设备显存的一个切片。
所以,HAMi 社区里反复被问到的问题是:DRA 会让 HAMi 过时吗?
简短的回答是:不会。但完整的回答取决于你指的是 HAMi 的哪项职责。其中一项,把碎片化请求编码成调度器看得懂的形式,恰恰是 DRA 要吸收掉的;另一项,在容器内以 CUDA 调用粒度强制执行这些配额,则是 DRA 从设计上就无意承担的工作。HAMi 的应对之策也顺势分成了两半:保留强制执行层,并在 DRA 之上用 3 个仓库重建编码层。
下面我们就把这两半拆开看清楚,再看如今跑通 DRA 这套栈需要什么。