编组调度(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 组及其副本键独立执行,具体步骤如下:

  1. 调度器在 PreEnqueue 阶段暂存 Pod,直到满足以下条件:

    • 被引用的 Workload 对象已创建。
    • 被引用的 Pod 组已存在于 Workload 中。
    • 为特定 Pod 组创建的 Pod 数量不少于 minCount

    只有满足上述所有条件之后,Pod 才会进入活动的调度队列。

  1. 当达到额定数量(quorum)后,调度器尝试为组中的所有 Pod 寻找可调度的节点。 在此过程中,所有已分配的 Pod 都会在 WaitOnPermit 阶段等待。 需要注意的是,此特性目前处于 Alpha 阶段,调度决策仍然基于逐个 Pod 的调度方式, 而不是在单个调度周期内完成。
  1. 如果调度器为至少 minCount 个 Pod 找到了有效的调度位置, 则允许这些 Pod 全部绑定到所分配的节点上。 如果在固定的 5 分钟超时时间内无法为整个 Pod 组找到调度位置,则不会调度任何 Pod。 相反,这些 Pod 会被移入不可调度的队列,等待集群资源释放,同时允许其他工作负载被调度。

接下来

最后修改 December 18, 2025 at 11:15 AM PST: [zh] Add gang-scheduling.md and its feature gate (637c418491)