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 的处理过程都遵循以下步骤:
调度器在 PreEnqueue 阶段暂存 Pod,直到满足以下条件:
只有同时满足这两个条件,Pod 才会进入 active 调度队列。
GangScheduling 插件实现了一个在每个调度周期中对每个可调度
Pod 进行评估的 Permit 扩展点。这用于通过将成功放置的 Pod 数量与 minCount
值进行比较,来确定是否满足 minCount 约束。minCount 数量的 Pod 找到了有效的放置位置,
它允许这些成功放置的 Pod 绑定到它们被分配的节点上。
如果它无法找到足够的放置位置来满足 minCount 要求,则不会调度这些 Pod。
相反,这些 Pod 会被移入不可调度的队列,等待集群资源释放,同时允许其他工作负载被调度。