Kubernetes v1.35 [alpha](disabled by default)Gang scheduling ensures that a group of Pods are scheduled on an "all-or-nothing" basis. If the cluster cannot accommodate the entire group (or a defined minimum number of Pods), none of the Pods are bound to a node.
This feature depends on the Workload API.
Ensure the GenericWorkload
feature gate and the scheduling.k8s.io/v1alpha1
API group are enabled in the cluster.
When the GangScheduling plugin is enabled, the scheduler alters the lifecycle for Pods belonging
to a gang pod group policy within
a Workload.
The process follows these steps independently for each pod group and its replica key:
The scheduler holds Pods in the PreEnqueue phase until:
minCount.Pods do not enter the active scheduling queue until all of these conditions are met.
Once the quorum is met, the scheduler attempts to find placements for all Pods in the group.
It utilizes the PodGroup scheduling cycle to make a single,
atomic scheduling decision. GangScheduling plugin implements a Permit extension point that is evaluated for each
schedulable Pod during the cycle. This is used to determine whether the minCount constraint is satisfied,
by comparing the number of successfully placed pods against the minCount value.
If the scheduler finds valid placements for at least the minCount number of Pods,
it allows those successfully placed Pods to be bound to their assigned nodes.
If it cannot find enough placements to satisfy the minCount requirement, none of the Pods are scheduled.
Instead, they are moved to the unschedulable queue to wait for cluster resources to free up,
allowing other workloads to be scheduled in the meantime.