Kubernetes 1.35: Gang Scheduling is here

Evgeny Anikiev December 30, 2025 k8s
Kubernetes 1.35: Gang Scheduling is here

Kubernetes 1.35 just shipped something the community's been asking for: workload aware scheduling.

Here's the thing. Scheduling a single Pod? Easy. Scheduling an entire ML training job where all workers need to land on the same rack? That's chaos without the right tools.

For years, people built custom schedulers to handle this. But with AI workloads exploding, Kubernetes decided to stop treating workloads like second-class citizens.

Three big moves in 1.35:

1. Workload API — A new resource that describes how a group of Pods should be scheduled. It's structured, machine-readable, and sits in the scheduling.k8s.io/v1alpha1 API group.

2. Gang Scheduling — All-or-nothing placement. Your Pods don't start until the entire group can run. No more partial schedules consuming resources and causing deadlocks. The scheduler holds them at a Permit gate until there's room for everyone.

3. Opportunistic Batching — A Beta feature that speeds up scheduling for identical Pods. The scheduler reuses feasibility calculations across the queue. Most users get this automatically, no opt-in needed.

The vision goes deeper. Future work includes workload-level preemption, multi-node DRAM awareness, better autoscaling integration, and lifecycle management. This is just the first wave.

To get started: Enable GenericWorkload on kube-apiserver and kube-scheduler for the Workload API. Enable GangScheduling on kube-scheduler for gang scheduling. Opportunistic batching is on by default in 1.35.

Try it in your test clusters and send feedback to the Kubernetes team via Slack (#sig-scheduling) or GitHub issues. The future of Kubernetes scheduling is being written right now.

Tags:

☁️ AWS Cloud That Saves and Scales

Helping SaaS teams cut costs, speed up releases, and scale securely with DevOps done right

Uncover Bottlenecks & Savings - Free 30-Min Review