Kubernetes 是当前主流的容器编排平台——管一大批容器(应用运行单元)怎么部署、怎么调度、怎么互相配合的系统。Kubernetes 1.37 于 2026 年 9 月 3 日发布,本次更新中,动态资源分配(Dynamic Resource Allocation,简称 DRA)机制迎来多个里程碑:最关键的 Extended Resource(扩展资源)支持正式转正(GA),老式「扩展资源」写法申请 GPU 等硬件的负载不用改任何代码就能迁移到 DRA 后端;设备污点与容忍、标准 NUMA 属性等功能一并转正,另有 8 项新能力以 Alpha(试验)状态登场。
DRA 是什么、解决什么问题、适合谁。容器要跑 AI 训练、视频转码这类任务,通常需要 GPU、专用网卡等特殊硬件。Kubernetes 早期靠「设备插件(device plugin)」加「扩展资源」的方式来分配这些设备,调度能力有限。DRA 是新一代的设备分配机制,由 Kubernetes 调度器统一决定哪个容器用哪块设备,支持设备状态上报、故障隔离、跨厂商设备按属性匹配等复杂场景。适合谁来用:管理 GPU 集群的平台工程师、跑大模型训练和推理的团队、所有需要给容器挂特殊硬件的开发者——对只跑普通 CPU 应用的用户,本次更新没有影响。
转正为正式版的功能
Extended Resource 兼容转正(KEP-5004)。这是本次最值得关注的一项。过去在 Pod 配置里写 nvidia.com/gpu: 1 这种扩展资源申请,必须靠设备插件实现;现在 DRA 驱动可以直接满足这类请求,集群里现有的 GPU 负载可以原样继续跑,后台分配逻辑逐步切换到 DRA,业务方不需要改一行配置。该功能从 1.34 版本被接受、1.35 进 Alpha、1.36 进 Beta,到 1.37 正式转正。
资源声明的设备状态可见(KEP-4817)。DRA 的设备分配记录(ResourceClaim)新增 .status.devices 字段,驱动可以上报每台设备的实际状态,网络设备还能带出接口名、MAC 地址和 IP 地址。此前设备一旦挂进 Pod 就不可见,现在控制器能看到设备真实状态,依赖设备 IP 的网络服务也能构建出来。
设备污点与容忍转正(KEP-5055)。机制类似节点维度的污点:驱动可以把某台设备标记为带污点,调度器就不会再往它上面排新 Pod;集群管理员还能通过集群级的 DeviceTaintRule 规则批量打污点,不用改驱动配置。要下线一台设备做维护,把它标记为降级即可,不影响集群里其他设备。正在使用带污点设备的 Pod 可以被自动驱逐,除非它的资源声明显式容忍该污点。
标准 NUMA 属性(resource.kubernetes.io/numaNode)。NUMA(非统一内存访问)是服务器硬件的一种内存布局,CPU 和内存分组成多个节点,设备离哪个节点近性能就好。此前各家驱动对 NUMA 节点属性命名不一,没法互相比较;1.37 统一为标准属性名,不同厂商驱动上报的设备可以在同一 NUMA 节点上直接对比。
升级为 Beta 的功能
资源声明支持共享(KEP-5729)。一个资源声明可以被整个工作负载或 Pod 组里的多个 Pod 共享,替代了此前单个声明最多被 256 个 Pod 引用的上限。该功能由 DRAWorkloadResourceClaims 特性开关控制,默认关闭。
设备属性 Downward API(KEP-5304)。为 KubeVirt(在 Kubernetes 上运行虚拟机的项目)场景设计:驱动把设备属性填入元数据,框架将其写成 JSON 文件,通过 CDI(容器设备接口)挂载进容器,虚拟机内程序直接读取 PCI 总线地址、MAC 地址等信息,不再需要自定义控制器去监听和转换。
新增的 Alpha 功能
解决跨厂商设备配对。派生属性(KEP-6080)允许用 CEL 表达式(Kubernetes 内置的表达式语言)写自定义规则匹配设备——比如甲驱动把节点属性叫 numa、乙驱动叫 numaNode,以前调度器配对不了,现在可以在清单里写表达式桥接差异,还能处理从长拓扑字符串里切出 ID、按容量给设备分性能档这类复杂场景。设备兼容组(KEP-5963)让驱动给同一块 GPU 的 MIG/vGPU(把一块 GPU 切分成多份供多个任务使用的技术)分区打兼容组标签,调度器提前拒绝不兼容的组合,而不是等到节点准备时才报错。属性列表类型(KEP-5491)让单个属性可以保存多个值,例如一块 CPU 同时挨着多条 PCIe 根总线。
提升调度与资源效率。PreQueueingHint(KEP-6132)把资源声明变化后的调度排队开销从 O(N²) 降到 O(1),早期基准测试中调度吞吐接近翻倍;节点可分配资源请求(KEP-5517)让调度器和 kubelet(节点上的管理组件)把 DRA 管理的 CPU、内存纳入节点可分配额度,防止节点超卖;分数容量(KEP-5075,对应特性开关处于 Beta)支持 1.5 块 GPU 这类小数容量请求。
运维便利。资源可用性快照(KEP-5677)提供一次性查询接口,随时拿到某一时刻的资源可用量;可选节点操作(KEP-5945)让驱动在节点上无事可做时跳过 prepare、unprepare 流程,减少不必要依赖。
结论
Kubernetes 1.37 是 DRA 从「新机制」走向「成熟主力」的分水岭:老式扩展资源写法正式兼容,存量 GPU 集群可以渐进式迁移;设备状态可见、污点隔离、标准 NUMA 属性补齐了运维能力;新一批 Alpha 功能在解决跨厂商设备配对与调度效率。正在用或准备用 DRA 的团队,现在可以认真评估迁移。按社区的发布节奏,1.38 还会带来新一批 DRA 功能。