Kubernetes动态资源分配支持异构加速器
我第一次把这条消息放进升级清单时,差点把它理解成“安装一个新组件,就能自动调度所有 GPU”。实际情况更准确:CNCF 在 2026 年 11 月 10 日的公告中,把 Kubernetes 的工作负载感知调度和 Dynamic Resource Allocation(DRA)列为 AI 基础设施进展;同时,HAMi 进入孵化阶段,负责异构加速器的共享与调度。它们属于同一生态方向,却不是同一个功能开关。
官方地址:https://kubernetes.io/
如果你的集群要混用不同型号 GPU、FPGA 或其他专用设备,DRA 的价值是把“设备属性、可用状态和工作负载声明”拆成可组合对象,让调度器按条件选设备;它不是把旧的设备插件请求语法原样升级,也不会自动替你安装厂商驱动。
这次生态消息到底改变了什么
CNCF 公告提到 Kubernetes 在工作负载感知调度和 DRA 上取得进展,并把 HAMi 的异构加速器共享与调度能力放在同一组 AI 基础设施成果中。对平台团队来说,真正值得关注的是调度模型正在从“节点上有几个某型号资源”转向“这个工作负载需要什么设备属性、容量和配置”。
当前 Kubernetes 官方文档把 DRA 标记为从 v1.35 起稳定的能力;Kubernetes v1.37 的官方更新又说明,DRA Extended Resource 已经进入 GA,可以让传统 extended resource 请求与 DRA 设备匹配。迁移时不要只看新闻标题,应该把 Kubernetes 版本、驱动实现和现有请求方式一起列入变更范围。
公告原文:https://www.cncf.io/announcements/2026/11/10/cncf-hits-major-milestones-with-global-community-growth-record-industry-investment-and-a-new-generation-of-projects-to-build-ai-systems-in-production/
从设备插件到 DRA,几个对象分别负责什么
旧方案通常把设备插件暴露的资源名直接写进 Pod 的 resources.limits。DRA 则把设备目录、筛选条件、申请关系和 Pod 使用关系拆开:
| 对象 | 职责 | 迁移时要问的问题 |
|---|---|---|
| DeviceClass | 给一类设备定义可复用的分类和筛选规则 | 属性是否足以区分显存、架构或互联能力 |
| ResourceClaim | 工作负载声明要申请的设备条件 | Claim 的生命周期是否跟 Pod 或模板一致 |
| ResourceSlice | 驱动向集群公布设备、属性、容量和可分配状态 | 驱动是否能持续提供真实设备状态 |
| Pod | 引用 ResourceClaim 或 ResourceClaimTemplate | 是否仍然绕过调度器写入了 spec.nodeName |

异构设备请求不应只写一个厂商资源名
当工作负载只需要“支持某种计算能力、显存范围和互联属性”的设备时,DRA 可以用结构化参数和 CEL 表达式筛选设备。下面是一个用于说明对象关系的简化 YAML,字段含义应以目标 Kubernetes 版本及设备驱动文档为准;它不是已经在某个集群执行过的结果。
apiVersion: resource.k8s.io/v1
kind: ResourceClaim
metadata:
name: inference-accelerator
spec:
devices:
requests:
- name: primary
exactly:
deviceClassName: accelerator.example.com
# 用属性表达需求,避免把某个厂商型号写死在业务 Pod 中。
selectors:
- cel:
expression: device.attributes["accelerator.example.com"].memoryGiB >= 24
---
apiVersion: v1
kind: Pod
metadata:
name: inference-worker
spec:
containers:
- name: worker
image: example/inference-worker:stable
# 容器通过 ResourceClaim 使用已分配设备,不直接猜测节点名称。
resources:
claims:
- name: primary
resourceClaims:
- name: primary
resourceClaimName: inference-accelerator
这段示例有两个重点:一是把设备选择条件放到 Claim 中,二是让 Pod 引用 Claim,而不是用节点名把调度器绕开。真实落地前要检查设备驱动提供的属性名称、API 版本和字段结构,不能把示例中的域名当成现成驱动。

升级前最容易忽略的四个风险
- 版本和驱动不是一回事。DRA API 进入稳定状态,不代表每个厂商驱动都已经支持相同的 DeviceClass、ResourceSlice 或状态字段。先确认控制面版本、节点组件版本和驱动支持矩阵。
- 预绑定 Pod 会绕过正常调度。如果直接设置
spec.nodeName,Pod 可能在 Claim 尚未分配时就被送到节点,最终由 kubelet 反复检查。要固定节点,优先使用能继续经过调度流程的节点选择器。 - DRA 资源目前不能按普通 Pod 资源抢占。官方文档明确提示,正在使用 DRA 设备的 Pod 不能被更高优先级的 Pod 通过抢占直接赶走;容量紧张时要把等待和释放时间纳入队列设计。
- 旧监控指标可能不覆盖新对象。以前只看节点扩展资源数量,迁移后还要观察 ResourceClaim 状态、ResourceSlice 信息和设备健康状态,否则会出现“节点看起来有资源、Claim 却无法分配”的盲区。
我会这样安排一轮灰度迁移
- 先盘点现有设备插件、扩展资源名、节点标签、容器运行时和驱动版本,记录哪些业务真的依赖设备型号,哪些只依赖显存或架构能力。
- 在非生产节点安装支持 DRA 的驱动并观察 ResourceSlice 是否能描述预期设备;这一步只做资源目录和状态检查,不把业务流量切过去。
- 为一类低风险工作负载创建独立 ResourceClaim,验证 Claim 的分配、Pod 调度、设备注入和释放是否闭环。
- 把调度结果、Claim 状态、设备健康、Pod 重启和等待时长纳入同一张回归表,尤其记录设备不可用时的失败原因。
- 只有在灰度完成后,才考虑启用 DRA Extended Resource 或把旧请求逐批迁移;保留回滚路径,不要一次性删除旧设备插件。
我个人更倾向于先让 DRA 管理“属性复杂、型号混杂”的工作负载,继续让简单、成熟的单型号业务使用原有方式。这样能把迁移收益和故障半径控制在可解释范围内。
迁移清单:先确认能不能迁,再决定要不要迁
- 控制面和节点版本是否满足目标 DRA 能力,Feature Gate 或 API 组是否按目标版本处理。
- 设备驱动是否支持 DRA,并能发布准确的设备属性、容量和健康状态。
- DeviceClass 的筛选条件是否描述了业务真正需要的能力,而不是复制硬件商品名。
- ResourceClaim、ResourceClaimTemplate 和 Pod 的命名空间、生命周期与回收策略是否清楚。
- 是否覆盖设备不足、设备损坏、Claim 删除、Pod 重建、节点维护和调度超时等回归场景。
- 是否保留传统请求方式和回滚窗口,且监控、告警、排队策略已经同步调整。
常见问题
DRA 是不是 HAMi 的替代品?
不是。DRA 是 Kubernetes 的资源分配与调度能力;HAMi 是围绕异构加速器共享和调度的生态项目。二者可以在同一 AI 基础设施版图中出现,职责和安装方式仍需分别阅读官方文档。
用了 DRA 就能自动支持所有 GPU 吗?
不能。还需要兼容的设备驱动、节点上的设备、正确的 DeviceClass/Claim 定义,以及与目标 Kubernetes 版本匹配的控制面配置。
现有 extended resource 请求必须马上改掉吗?
不必。Kubernetes v1.37 的 DRA Extended Resource 已进入 GA,但是否迁移取决于驱动支持、设备模型复杂度和回滚要求。先盘点和灰度,比一次性替换更稳妥。
参考资料:https://kubernetes.io/docs/concepts/resource-management/dynamic-resource-allocation/;https://kubernetes.io/blog/2026/09/03/kubernetes-v1-37-dra-updates/;https://www.cncf.io/announcements/2026/11/10/cncf-hits-major-milestones-with-global-community-growth-record-industry-investment-and-a-new-generation-of-projects-to-build-ai-systems-in-production/
CNCF新一代AI基础设施项目进入生产阶段
- 上一篇
- CNCF新一代AI基础设施项目进入生产阶段
- 下一篇
- Rust 1.100稳定never类型后旧版edition有哪些兼容影响
-
- 科技周边 · 业界新闻 | 30分钟前 |
- CNCF新一代AI基础设施项目进入生产阶段
- 469浏览 收藏
-
- 科技周边 · 业界新闻 | 15小时前 |
- OpenSSF Scorecard Dangerous-Workflow 怎样识别 GitHub Actions 风险
- 323浏览 收藏
-
- 科技周边 · 业界新闻 | 16小时前 |
- Sigstore bundle 怎样保存签名验证材料
- 157浏览 收藏
-
- 科技周边 · 业界新闻 | 16小时前 |
- OpenSSF GUAC 怎样串联软件供应链关系
- 446浏览 收藏
-
- 科技周边 · 业界新闻 | 16小时前 | 云原生 · kubernetes · 网络安全 · tls Kubernetes Gateway API SNI BackendTLSPolicy SubjectAltNames
- Kubernetes Gateway API BackendTLSPolicy 怎样表达后端 TLS
- 233浏览 收藏
-
- 科技周边 · 业界新闻 | 16小时前 |
- OpenAPI Webhooks 描述怎样帮助生成客户端
- 201浏览 收藏
-
- 科技周边 · 业界新闻 | 16小时前 |
- GitHub Actions schedule 仅在默认分支生效怎么办
- 501浏览 收藏
-
- 科技周边 · 业界新闻 | 16小时前 | 云原生 · 运行时 · manifest OCI Image Spec OCI镜像规范 mediaType artifactType 镜像工具链
- OCI 镜像规范变更怎样影响镜像工具链
- 297浏览 收藏
-
- 科技周边 · 业界新闻 | 16小时前 | 云原生 · 运维 · kubernetes · 版本升级 · 兼容性 · Kubernetes 弃用 版本升级 版本偏差 Release notes 版本发布说明 运维变更
- Kubernetes 版本发布说明怎样提取对运维有影响的变更
- 271浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 1037次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 1035次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 1179次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 1139次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 982次使用
-
- Go 1.25 容器感知 GOMAXPROCS:K8s 里别再让 CPU limit 偷偷拖垮 P99
- 2026-06-01 473浏览
-
- Go 1.25 容器里的 GOMAXPROCS 怎么迁移:cgroup CPU 限额、自动更新与旧环境兼容
- 2026-08-09 438浏览
-
- docker的 linux 内核可以和宿主机不一样吗?
- 2023-01-12 318浏览
-
- mac 如何安装k8s
- 2023-01-13 353浏览
-
- Go 服务上 Kubernetes 后 HPA 为什么不扩容:requests、CPU 和并发指标怎么选
- 2026-07-17 111浏览
