联合调度 (Gang Scheduling)

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

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

此功能依赖于 PodGroup API。请确保集群中已启用 GenericWorkload 特性门控和 scheduling.k8s.io/v1alpha2 API 组

工作原理

当启用 GangScheduling 插件时,调度器会改变属于具有 gang 调度策略PodGroup 的 Pod 的生命周期。对于每个 PodGroup,处理过程遵循以下步骤:

  1. 调度器在 PreEnqueue 阶段保持 Pod,直到:

    • 所引用的 PodGroup 对象存在。
    • PodGroup 创建的 Pods 数量至少等于 minCount

    只有满足这两个条件,Pods 才会进入活跃调度队列。

  2. 一旦达到仲裁数量,调度器就会尝试为组内的所有 Pod 寻找放置位置。它利用 PodGroup 调度 周期来做出单一的、原子的调度决策。GangScheduling 插件实现了一个 Permit 扩展点,该扩展点在周期内为每个可调度的 Pod 进行评估。这用于通过比较已成功放置的 pod 数量与 minCount 值,来确定是否满足 minCount 约束。

  3. 如果调度器为至少 minCount 数量的 Pod 找到了有效的放置位置,它将允许这些成功放置的 Pod 绑定到其分配的节点。如果无法找到足够的放置位置来满足 minCount 要求,则不会调度任何 Pod。相反,它们会被移动到不可调度队列中,等待集群资源释放,在此期间允许调度其他工作负载。

接下来


最后修改于 2026 年 4 月 9 日上午 9:20(太平洋标准时间): 处理反馈 (cb3ce08585)