Kubernetes' default scheduler wasn't built for your GPU cluster
Volcano replaces kube-scheduler to actually handle batch, ML, and HPC workloads without pretending every pod is a stateless microservice.

What it does Volcano is a drop-in batch scheduler for Kubernetes that replaces the standard kube-scheduler when you’re running jobs that actually matter — AI training, Spark pipelines, genomics workflows, MPI clusters. It treats multi-pod jobs as atomic units, handles gang scheduling, and manages queueing and preemption with the assumption that your workload isn’t just 12-factor apps.
The interesting bit The scheduler descends from kube-batch, but the project has accumulated fifteen years of operational scar tissue from running high-performance workloads at scale. That history shows up in practical integrations: Spark runs it as a built-in option, NVIDIA publishes GPU fragmentation guides for it, and it’s the default scheduler for a surprising slice of Chinese cloud providers and recommendation engines.
Key highlights
- Gang scheduling: all-or-nothing allocation for distributed training jobs that die if one worker lands on a congested node
- Topology-aware scheduling for LLM training, including explicit talks on KubeCon 2024 about accelerating multi-GPU layouts
- Queue and preemption semantics that the default scheduler simply doesn’t expose
- CNCF incubating project with documented production use at ING Bank, iQIYI, Xiaohongshu, and in meteorological HPC
- Broad framework integrations: Ray, Flink, Kubeflow, Argo, Horovod, PaddlePaddle, Cromwell, KubeGene
Caveats
- The README’s Kubernetes compatibility table is truncated, so supported version claims are incomplete in the source
- Local development install is x86_64-only “temporarily” — unclear how temporary
- The ecosystem list is extensive but integration depth varies; some links point to single example YAML files rather than maintained documentation
Verdict If you’re running distributed training or batch analytics on Kubernetes and have outgrown “just add more nodes,” Volcano is the scheduler you should have been using already. If your workloads are stateless web services with no pod-to-pod dependencies, you’re not the target audience and shouldn’t add the complexity.
Frequently asked
- What is volcano-sh/volcano?
- Volcano replaces kube-scheduler to actually handle batch, ML, and HPC workloads without pretending every pod is a stateless microservice.
- Is volcano open source?
- Yes — volcano-sh/volcano is open source, released under the Apache-2.0 license.
- What language is volcano written in?
- volcano-sh/volcano is primarily written in Go.
- How popular is volcano?
- volcano-sh/volcano has 5.8k stars on GitHub.
- Where can I find volcano?
- volcano-sh/volcano is on GitHub at https://github.com/volcano-sh/volcano.