Volcano

A Cloud Native Batch System (Project under CNCF)

Last verified:

Visit Volcano

What is Volcano?

Volcano is a cloud-native batch scheduling system designed for compute-intensive workloads on Kubernetes. Accepted by the Cloud Native Computing Foundation (CNCF) as its first and only official container batch scheduling project, Volcano extends Kubernetes' standard kube-scheduler with advanced capabilities for high-performance computing (HPC), AI/ML training, and big data processing. It supports popular frameworks including Spark, TensorFlow, PyTorch, Flink, Argo, MindSpore, PaddlePaddle, and Ray through its VolcanoJob abstraction.

Key features include gang scheduling to ensure all tasks start simultaneously, heterogeneous device scheduling for GPU/NPU resources with both CUDA and MIG modes, network topology-aware scheduling for communication-intensive distributed training, queue-based resource management with multi-dimensional quotas, and online-offline workload colocation. Volcano also provides NUMA-aware scheduling, multi-cluster scheduling capabilities, dynamic descheduling, and a dashboard for graphical monitoring and operations.

Volcano is designed for organizations running AI/ML model training, big data analytics, genomics/bioinformatics, and other high-performance batch workloads on Kubernetes. It targets data scientists, ML engineers, platform teams, and DevOps engineers who need efficient resource utilization and advanced scheduling for distributed training jobs. The tool is particularly valuable for enterprises managing thousands of simultaneous jobs across large GPU clusters.

As an open-source CNCF incubating project under Apache-2.0 license, Volcano is completely free to use with no paid tiers or subscription plans. Users self-host Volcano on their own Kubernetes clusters, paying only for their infrastructure costs. The project is maintained by an active community with regular releases (currently v1.12.0 as of 2025).

Volcano pricing

Pricing model: Freemium

Volcano is completely free and open-source under the Apache-2.0 license. It is a CNCF incubating project with no paid tiers, subscriptions, or commercial licensing fees. Users self-host Volcano on their own Kubernetes clusters and only pay for their infrastructure costs (cloud compute, on-premise hardware, etc.). Official Docker images are available on DockerHub at no cost. Helm charts and YAML installation files are freely available from the volcano-sh GitHub repository. The project is maintained by a community-driven open-source model with regular releases.

Volcano pros

  • CNCF incubating project with strong community support and backing
  • Gang scheduling ensures all distributed training tasks start simultaneously
  • Supports GPU virtualization with both software vCUDA and hardware MIG modes
  • Network topology-aware scheduling reduces communication overhead in AI training
  • Native support for major AI/ML frameworks: PyTorch, TensorFlow, Spark, Flink, Ray
  • Multi-dimensional queue resource quotas for CPU, memory, and GPU management
  • Online and offline workload colocation improves cluster utilization without QoS loss
  • NUMA-aware scheduling optimizes memory access for multi-core processors
  • Multi-cluster scheduling enables cross-cluster job distribution and load balancing
  • Dynamic descheduling optimizes cluster load distribution and system stability
  • Volcano Dashboard provides graphical interface for resource visualization and operations
  • Supports multiple architectures: x86, Arm, Kunpeng, and Ascend NPUs
  • Fine-grained GPU sharing allows multiple containers to securely share a single GPU
  • Resource preemption and reclaim based on queue priorities and quotas
  • Complete logging system with rich monitoring metrics for observability
  • Kubernetes API inheritance makes it easy to integrate with existing Kubernetes tools

Volcano cons

  • Requires Kubernetes 1.12+ with CRD support as a prerequisite
  • Steeper learning curve compared to Kubernetes default scheduler
  • Self-hosted open-source tool with no managed cloud service option
  • GPU virtualization requires NVIDIA driver > 440 and nvidia-docker > 2.0
  • MIG mode requires specific MIG-capable GPUs like A100 or H100
  • Multi-cluster scheduling requires separate volcano-global component setup
  • Dashboard project is separate from main Volcano repository
  • Some advanced features like network topology-aware scheduling are still in Alpha
  • Documentation can be fragmented across multiple versions (v1.7 to v1.12)
  • GPU scheduling assessment may not always match actual hardware utilization in some scenarios

Frequently asked questions about Volcano

What is Volcano and what does it do?

Volcano is a cloud-native batch scheduling system for compute-intensive workloads on Kubernetes. It is the CNCF's first and only official container batch scheduling project. Volcano extends Kubernetes' standard scheduler with advanced capabilities like gang scheduling, GPU virtualization, network topology-aware scheduling, and queue-based resource management. It supports AI/ML frameworks (PyTorch, TensorFlow, Spark, Flink, Ray) through VolcanoJob and is designed for high-performance computing scenarios including distributed training, big data analytics, and genomics.

Is Volcano free to use?

Yes, Volcano is completely free and open-source under the Apache-2.0 license. It is a CNCF incubating project with no paid tiers or commercial licensing fees. Users self-host Volcano on their own Kubernetes clusters, paying only for infrastructure costs. Official images are available on DockerHub and installation files (Helm charts, YAML) are freely available from GitHub.

What are the prerequisites for installing Volcano?

Volcano requires Kubernetes 1.12+ with CRD support. For GPU virtualization features, you need NVIDIA driver > 440, nvidia-docker > 2.0, Docker configured with nvidia as the default runtime, Kubernetes >= 1.16, and Volcano >= 1.9. MIG mode additionally requires MIG-capable GPUs (A100, H100) and requires running 'sudo nvidia-smi -mig 1' on GPU nodes.

How do I install Volcano?

Volcano can be installed in three ways: (1) Install with YAML files using 'kubectl apply -f https://raw.githubusercontent.com/volcano-sh/volcano/master/installer/volcano-development.yaml' - works on x86_64 and arm64; (2) Install from code using './hack/local-up-volcano.sh' - x86_64 only; (3) Install with Helm using 'helm repo add volcano-sh https://volcano-sh.github.io/helm-charts' followed by 'helm install volcano volcano-sh/volcano -n volcano-system --create-namespace'. The Helm method is recommended as the easiest way to get started.

What scheduling policies does Volcano support?

Volcano supports rich scheduling policies including: Gang Scheduling (all tasks start simultaneously), Binpack Scheduling (compact task allocation), Heterogeneous Device Scheduling (GPU/NPU with CUDA and MIG modes), Proportion/Capacity Scheduling (queue-based resource sharing/preemption), NodeGroup Scheduling (queue-node affinity), DRF Scheduling (fair multi-dimensional resource sharing), SLA Scheduling (service quality guarantees), Task-topology Scheduling (communication-intensive optimization), and NUMA Aware Scheduling (multi-core processor optimization). Custom plugins and actions can implement additional algorithms.

How does Volcano handle GPU virtualization?

Volcano supports two primary GPU sharing modes: (1) HAMI-core (Software-based vGPU) uses VCUDA CUDA API hijacking for software-level GPU slicing, compatible with all GPU types and ideal for fine-grained sharing; (2) Dynamic MIG (Hardware-level GPU Slicing) uses NVIDIA's MIG technology for hardware-level isolation with performance guarantees, requiring MIG-capable GPUs like A100 or H100. Both modes provide dedicated memory and compute allocation, multi-container sharing, and unified monitoring.

Which AI/ML frameworks does Volcano support?

Volcano supports popular computing frameworks including PyTorch, TensorFlow, Spark, Flink, Argo, Ray, MindSpore, PaddlePaddle, OpenMPI, Horovod, MXNet, Kubeflow, KubeGene, and Cromwell. These frameworks are integrated through VolcanoJob, which provides complete support for running distributed training and big data workloads with advanced scheduling capabilities.

What is Volcano's queue system and how does it work?

Volcano's queue system provides multi-dimensional resource quota control for CPU, memory, GPU, and other resources. It supports multi-level queue structure with resource inheritance, resource borrowing/reclaiming/preemption between queues, and multi-tenant resource isolation with priority control. Queues support capacity scheduling with elastic capacity, priority scheduling strategies, and affinity scheduling between queues and nodes. This enables fair resource sharing across teams and projects.

Does Volcano support multi-cluster scheduling?

Yes, Volcano supports cross-cluster job scheduling through a separate component called volcano-global, which is a federation scheduler designed for multi-cluster Kubernetes environments. Volcano-global combines Karmada and Volcano capabilities to efficiently manage AI/ML and big data workloads across multiple clusters, enabling larger-scale resource pool management and load balancing. It supports single/multiple template tasks and inherits Volcano's single-cluster queue management and AI job scheduling capabilities.

What monitoring and observability features does Volcano provide?

Volcano provides a complete logging system, rich monitoring metrics, and a dashboard for graphical interface operations. Scheduler metrics are available at 'http://<volcano-scheduler-ip>:8080/metrics' and device plugin metrics at 'http://<plugin-pod-ip>:9394/metrics'. Metrics include GPU utilization, pod memory usage, and limits. The Volcano Dashboard (available at github.com/volcano-sh/dashboard) provides cluster overview with job counts and statuses, resource visualization, and graphical operations for users.

Categories

Use cases

Browse all AI tools on NeedAnAI