调度器和自动伸缩器被 AI 逼到必须合作:Kubernetes 两条控制回路正在合流
Kubernetes 的世界观建立在不怎么对话的两条控制回路上:调度器把 Pod 放到已存在的节点上,自动伸缩器在没地方放时增加节点。十年间这个分工很合理——算力大体可互换,两条回路互不了解对方的决定也能各干各的。AI 负载和它脚下的加速器改变了前提:本该调度的 Pod 就是调不上去、集群其实没缺容量,贵得吓人的加速器空转干等。本文作者(AWS 团队)拆解了社区已经补上的部分、还没补上的断层,以及两条回路为什么正在走向”设计层面合并”。
三个老问题,因为加速器变成了所有人的问题
预留容量:供给紧张、闲置昂贵,团队提前锁定容量。伸缩器放大时不仅要回答”要不要加节点”,还得算清楚”新节点用的是不是已经付费承诺掉的容量”——这不是自动伸缩的发明,是一条古老容量实践被塞进了新的决策链。
拓扑:加速器依赖”喂它的那一圈”——本地 NUMA 域的 CPU 内存、共享 PCIe 路径的网卡、通往同伴加速器的高带宽链路,层级从同一块总线,到同一机架的加速 fabric,再到跨数据中心网络,每上一层都更慢。而 Kubernetes 十年来对加速器的表达方式是一个整数:节点报个数、Pod 要几个、调度器匹配两个数字。DRA 补上了缺失的表达:负载递交结构化 claim(比如”一张加速卡 + 喂它的那张网卡”),调度器直接读懂,DRA 感知的伸缩器也开始用同一份信息模拟容量。

共享:现代加速器强到”一整张给小任务”是浪费,于是分区实例、可消费容量、按需切片——调度器直接跟踪这些分配,伸缩器也在学着用同一个模型掂量候选节点,最小切片尺寸定得合理的话,碎片损耗远小于当年全有全无的浪费。

共同语言不等于合并:gang scheduling 是最硬的一道缝
有了统一的硬件词汇,两条回路对”什么节点算能用”不再吵架——但对”作为一个整体行动”仍然无能为力。gang scheduling 是最清晰的缺口:大作业要求所有 Pod 一起调度、否则一个都不放,而且要么全上要么全不上。上游的 workload-aware scheduling(Workload/PodGroup API,beta、默认关闭)已教会调度器把工作组当一个不可分割单元;但自动伸缩器不在这场改变里——它仍按 Pod 逐条推理,可能为 gang 里几个 pending 成员加了一两个节点,容量白白烧掉、作业照样起不来。
眼下的桥是 provisioning request:工作组一次性为整个 gang 申请容量。Kueue 配好准入检查后预留配额、创建请求、等容量就绪、再准入负载——原子扩容尽力而为、依赖供应商支持。缝还在,只是搭了块板。更深的模式是:能干的伸缩器本来就在模拟调度器的落点来决定开什么机器,节点起来后调度器再独立决定一遍——同一份推理做两遍,重复劳动本身就是两条回路该合流的证据。
社区正在画什么
SIG-Autoscaling 的公开提案已经勾勒出三条对接接口:让调度器看见”可被开出来的容量“而不仅是已存在的节点;在其上表达放置偏好;以及显式请求它。真正的动机是流程:让”伸缩”成为特性设计现场的一等公民,在放置原语成形时就把供给考虑进来,而不是每个版本发布后由伸缩器们追着补锅。

小夏点评
- “Pod 调不上去 ≠ 没容量”值得裱起来——当只有回路之一理解某项硬件能力,就是两条回路可能吵架、昂贵硬件可能空转的地方。跑 GPU 集群的团队排查 pending 时,先确认调度器和伸缩器对”可用节点”的定义是否一致,再谈加机器。
- 文章没说透但意味深长的一句:伸缩器已经在模拟调度器干活,重复劳动是架构合流的信号——未来两三年 Karpenter/KEDA/Cluster Autoscaler 这一层大概率会长出”调度感知”能力,谁先把接口做成标准,谁就定了下一代的形状。
- 对中国 IT 行业的启示:国内大厂的 AI 平台几乎都跑在 K8s 之上、GPU 配额制是常态,”预留容量 + gang 调度 + 拓扑感知”三件事国内团队每天都在手工做(自研调度器/插件)。SIG 层面的接口设计现在公开开放、参与窗口是敞开的——跟进 SIG-Autoscaling 的设计讨论,比等某个发行版”开箱即用”要划算得多。
参考链接
- 原文(CNCF Blog,Member Post,AWS 作者):https://www.cncf.io/blog/2026/10/19/how-ai-workloads-are-reshaping-kubernetes-autoscaling
- DRA 入门(CNCF Blog,2026-07):https://www.cncf.io/blog/2026/07/01/understanding-dynamic-resource-allocation-in-kubernetes
