编组调度(Gang Scheduling)

编组调度(Gang Scheduling)

特性状态: Kubernetes v1.35 [alpha](默认禁用)

编组调度(Gang Scheduling)确保一组 Pod 以 全有或全无(all-or-nothing) 的方式进行调度。 如果集群无法容纳整个组(或某确定的最小 Pod 数量),则不会将任何 Pod 绑定到节点上。

此特性依赖于 PodGroup API。确保在集群中启用 GenericWorkload 特性门控以及 scheduling.k8s.io/v1alpha2 API 组

工作原理

GangScheduling 插件被启用时,调度器修改 具有 gang 调度策略PodGroup 内 Pod 的生命周期。 每个 PodGroup 的处理过程都遵循以下步骤:

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

    • 引用的 PodGroup 对象存在。
    • 为该 PodGroup 创建的 Pod 数量至少等于 minCount。

    只有同时满足这两个条件,Pod 才会进入 active 调度队列。

  1. 当达到额定数量(quorum)后,调度器尝试为组中的所有 Pod 寻找可调度的节点。 它利用了 PodGroup 调度 周期来做出单一的、原子性的调度决定。GangScheduling 插件实现了一个在每个调度周期中对每个可调度 Pod 进行评估的 Permit 扩展点。这用于通过将成功放置的 Pod 数量与 minCount 值进行比较,来确定是否满足 minCount 约束。
  1. 如果调度器为至少 minCount 数量的 Pod 找到了有效的放置位置, 它允许这些成功放置的 Pod 绑定到它们被分配的节点上。 如果它无法找到足够的放置位置来满足 minCount 要求,则不会调度这些 Pod。 相反,这些 Pod 会被移入不可调度的队列,等待集群资源释放,同时允许其他工作负载被调度。

接下来

最后修改 June 12, 2026 at 2:14 PM PST: [zh-cn]sync service-accounts (c07e5d7a0a)