编组调度(Gang Scheduling)
特性状态:
Kubernetes v1.35 [alpha](disabled by default)编组调度(Gang Scheduling)确保一组 Pod 以 全有或全无(all-or-nothing) 的方式进行调度。 如果集群无法容纳整个组(或某确定的最小 Pod 数量),则不会将任何 Pod 绑定到节点上。
此特性依赖于 Workload API。确保在集群中启用
GenericWorkload
特性门控以及 scheduling.k8s.io/v1alpha1
API 组。
工作原理
当 GangScheduling 插件被启用时,调度器修改
Workload 内属于某个 gang
Pod 组策略的 Pod 的生命周期。
此过程会针对每个 Pod 组及其副本键独立执行,具体步骤如下:
调度器在
PreEnqueue阶段暂存 Pod,直到满足以下条件:- 被引用的 Workload 对象已创建。
- 被引用的 Pod 组已存在于 Workload 中。
- 为特定 Pod 组创建的 Pod 数量不少于
minCount。
只有满足上述所有条件之后,Pod 才会进入活动的调度队列。
- 当达到额定数量(quorum)后,调度器尝试为组中的所有 Pod 寻找可调度的节点。
在此过程中,所有已分配的 Pod 都会在
WaitOnPermit阶段等待。 需要注意的是,此特性目前处于 Alpha 阶段,调度决策仍然基于逐个 Pod 的调度方式, 而不是在单个调度周期内完成。
- 如果调度器为至少
minCount个 Pod 找到了有效的调度位置, 则允许这些 Pod 全部绑定到所分配的节点上。 如果在固定的 5 分钟超时时间内无法为整个 Pod 组找到调度位置,则不会调度任何 Pod。 相反,这些 Pod 会被移入不可调度的队列,等待集群资源释放,同时允许其他工作负载被调度。
接下来
- 了解 Workload API。
- 查看如何在 Pod 中引用 Workload。
最后修改 December 18, 2025 at 11:15 AM PST: [zh] Add gang-scheduling.md and its feature gate (637c418491)