THE MIGRATION LINE
INCIDENT // NETFLIX-2026 SHIPPED

Netflix built Compute Managed Batch in 2018 because nothing in the Kubernetes ecosystem did what it needed. Seven years later, the open-source Kueue project did all of that and the features CMB never shipped — so Netflix moved millions of batch jobs onto it in a four-week production migration.

NETFLIX · 2026 · INFRA / KUBERNETES / BATCH / SCHEDULING
System stress over time Breach at T+5
2018 CMB built
4 weeks Production migration
millions of jobs Workloads today
significant increase Utilization
BASELINE

CMB: built in 2018, before Kubernetes had an answer

Netflix built Compute Managed Batch (CMB) in 2018, “before or alongside many of the open-source batch compute offerings available today,” to run workloads to completion on top of Titus, Netflix’s container platform. CMB organized work through a tenant hierarchy — internal tenants for grouping, leaf tenants that actually hold queues — with each tenant assigned weighted, fair-shared capacity split between reserved and shared pools.

The shared pool was fair-shared, but only at admission time: once CMB let a job in, “it ran to completion regardless of shifts in fair-share demand,” because CMB had no preemption at all.

REQUIREMENTS

What the replacement had to do natively

The team wanted the features CMB “offered or strived to offer” — fair sharing, hierarchical tenants, capacity management, priority queuing — plus the ones CMB had never managed to ship natively: preemption, all-or-nothing scheduling, topology-aware scheduling. The migration itself had its own bar: zero lift for CMB’s end users, no regression in container launch rate or overall throughput, and a full replacement of CMB’s queuing and scheduling logic, not a bolt-on.

THE OPTIONS

Kueue, YuniKorn, or Volcano

The team evaluated Kueue against alternatives like YuniKorn and Volcano. Both of those replace pod scheduling by the kube-scheduler outright, and Netflix worried that swapping out Titus’s own scheduling profiles for someone else’s could fragment job placement and hurt efficiency. Kueue took a narrower job: it queues and admits work but leaves pod scheduling to the existing scheduler, letting it integrate with Titus’s scheduling profiles instead of replacing them. It also had adoption momentum, could operate on primitives like v1.Pod and batch/v1.Job with room to grow into RayJob/RayCluster later, and supported the multi-tenant quota management Netflix needed across heterogeneous hardware.

THE CALL

Migrate the engine, keep the front door the same

Netflix built “Netflix Batch” on top of Kueue, running inside each Kueue-enabled Titus cell, with a custom router directing jobs from Titus federation to the right cell. For operators, migrating a tenant became “as simple as clicking a button” in the UI — internal tenants converted to Cohorts, leaf tenants to a ClusterQueue plus LocalQueue, and the old capacity configuration mapped onto resource flavors and nominal quotas. The same button gave instant rollback.

The team migrated its largest, most complex customer first rather than last, to build confidence before touching everyone else — a bet that paid off, since the production migration lasted only 4 weeks. They also had to run Kueue at far higher QPS, burst, and groupKindConcurrency than its defaults to hit Netflix’s throughput needs, something they derisked early with load tests in a development environment built to mimic Titus.

CONSEQUENCES

Millions of jobs later, preemption finally works

Kueue is now fully rolled out in production, managing millions of batch workloads. Netflix has since productionized Preemption-based Fair Sharing: tenants can lend idle reserved capacity to others while keeping their own reservation semantics, and higher-priority workloads can preempt lower-priority ones instead of waiting behind them — the exact capability CMB never had. Compute has seen a “significant increase in average resource utilization” as a result, though the post doesn’t attach a number to it.

When an open-source project catches up to everything your homegrown system does, and adds the features you never got around to building, the harder call is admitting the build was right for its year — not for this one.

Source — read the original

https://netflixtechblog.com/how-netflix-simplified-batch-compute-with-kueue-87860682629c

A plain-language, AI-drafted and human-edited retelling of the article published on netflixtechblog.com, reorganized and explained in our own structure and words, with original analysis in the editor's note above. The facts, numbers, and decisions belong to the original author and are not altered. For the full depth, read the source.

← All systems