Kubernetes v1.36 [alpha](默认禁用)工作负载感知的抢占引入了一种专门为 PodGroup 设计的抢占机制。 当 PodGroup 无法被调度时,调度器会使用抢占逻辑,尝试使该 PodGroup 的调度成为可能。 此方法仅在 PodGroup 调度期间使用,并替代给定 PodGroup 中 Pod 的默认抢占机制。
当此特性被启用时,调度器将 PodGroup 视为单个抢占者单元,而不是孤立地评估 PodGroup 中的各个 Pod。 为了给组中悬决的 Pod 腾出空间,它会在整个集群中搜索被抢占者, 并知道如何根据其他 PodGroup 的干扰模式将其作为被抢占者来处理和抢占。
此特性依赖于编组调度和
Workload API。确保在集群中启用了
GenericWorkload
和 GangScheduling
特性门控以及 scheduling.k8s.io/v1alpha2 API 组。
工作负载感知的抢占过程遵循与默认抢占相同的原则, 但存在以下差异:
被抢占者重要性层级:调度器使用严格的层级来决定哪些抢占单元(单个 Pod 或 PodGroup)更为关键、应当被豁免抢占:
当调度单个 Pod 时,适用默认的 Pod 抢占机制。
从 1.36 版本开始,当调度器为单个 Pod 执行默认抢占并尝试抢占属于某个 PodGroup 的 Pod 时,
它不会考虑该 PodGroup 的 priority 或 disruptionMode 字段。