MCPcopy Index your code
hub / github.com/volcano-sh/volcano

github.com/volcano-sh/volcano @v1.15.0 sqlite

repository ↗ · DeepWiki ↗ · release v1.15.0 ↗
8,587 symbols 32,486 edges 1,136 files 4,443 documented · 52%
README


Build Status Go Report Card RepoSize Release LICENSE CII Best Practices OpenSSF Scorecard Gurubase

Volcano is a Kubernetes-native batch scheduling system, extending and enhancing the capabilities of the standard kube-scheduler. It provides a comprehensive set of features specifically designed to manage and optimize various batch and elastic workloads, including Artificial Intelligence (AI) / machine learning (ML) / deep learning (DL), bioinformatics / genomics, and other "Big Data" applications.

These workloads commonly leverage AI, Big Data, and HPC frameworks such as Spark, Flink, Ray, TensorFlow, PyTorch, Argo, MindSpore, PaddlePaddle, Kubeflow, MPI, Horovod, MXNet, KubeGene, and others, with which Volcano offers robust integration.

Volcano incorporates over fifteen years of collective experience in operating diverse high-performance workloads at scale across multiple systems and platforms. It combines proven best practices and innovative concepts from the open-source community to deliver a powerful and flexible scheduling solution.

As of 2025, Volcano has seen widespread adoption across numerous industries globally, including Internet/Cloud, Finance, Manufacturing, and Medical sectors. Many organizations and institutions are not only end-users but also active contributors to the project. Hundreds of contributors actively participate in code commits, pull request reviews, issue discussions, documentation updates, and design proposals. We encourage your participation in the ongoing development and growth of the Volcano project.

[!NOTE] the scheduler is built based on kube-batch; refer to #241 and #288 for more detail.

cncf_logo

Volcano is an incubating project of the Cloud Native Computing Foundation (CNCF). Please consider joining the CNCF if you are an organization that wants to take an active role in supporting the growth and evolution of the cloud native ecosystem.

Overall Architecture

volcano

Talks

Ecosystem

Use Cases

Quick Start Guide

Prerequisites

  • Kubernetes 1.12+ with CRD support

You can try Volcano by one of the following two ways.

[!NOTE] * For Kubernetes v1.17 and above, use CRDs under config/crd/bases (recommended) * For Kubernetes v1.16 and below, use CRDs under config/crd/v1beta1 (deprecated)

Install with YAML files

Install Volcano on an existing Kubernetes cluster. This way is both available for x86_64 and arm64 architecture.

kubectl apply -f https://raw.githubusercontent.com/volcano-sh/volcano/release-1.15/installer/volcano-development.yaml

Enjoy! Volcano will create the following resources in volcano-system namespace.

NAME                                       READY   STATUS      RESTARTS   AGE
pod/volcano-admission-5bd5756f79-dnr4l     1/1     Running     0          96s
pod/volcano-controllers-687948d9c8-nw4b4   1/1     Running     0          96s
pod/volcano-scheduler-94998fc64-4z8kh      1/1     Running     0          96s

NAME                                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/volcano-admission-service   ClusterIP   10.98.152.108   <none>        443/TCP   96s

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/volcano-admission     1/1     1            1           96s
deployment.apps/volcano-controllers   1/1     1            1           96s
deployment.apps/volcano-scheduler     1/1     1            1           96s

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/volcano-admission-5bd5756f79     1         1         1       96s
replicaset.apps/volcano-controllers-687948d9c8   1         1         1       96s
replicaset.apps/volcano-scheduler-94998fc64      1         1         1       96s

NAME                               COMPLETIONS   DURATION   AGE
job.batch/volcano-admission-init   1/1           48s        96s

Install via helm

To install official release, please visit helm-charts for details.

helm repo add volcano-sh https://volcano-sh.github.io/helm-charts
helm install volcano volcano-sh/volcano -n volcano-system --create-namespace

Install from source code for developers:

helm install volcano installer/helm/chart/volcano --namespace volcano-system --create-namespace

# list helm release
helm list -n volcano-system

Install from code

If you don't have a kubernetes cluster, try one-click install from code base:

./hack/local-up-volcano.sh

This way is only available for x86_64 temporarily.

Install volcano agent

Please follow the guide Volcano Agent to install volcano agent.

Install monitoring system

If you want to get prometheus and grafana volcano dashboard after volcano installed, try following commands:

kubectl create -f installer/volcano-monitoring.yaml

Install dashboard

Please follow the guide Volcano Dashboard to install volcano dashboard.

Kubernetes compatibility

Kubernetes 1.35 Kubernetes 1.34 Kubernetes 1.33 Kubernetes 1.32 Kubernetes 1.31 Kubernetes 1.30 Kubernetes 1.29 Kubernetes 1.28 Kubernetes 1.27 Kubernetes 1.26 Kubernetes 1.25 Kubernetes 1.24 Kubernetes 1.23 Kubernetes 1.22 Kubernetes 1.21
Volcano HEAD (master) - -
Volcano v1.15 - -
Volcano v1.14 - - -
Volcano v1.13 - - - -
Volcano v1.12 - - -
Volcano v1.11 - - - -
Volcano v1.10 -

Extension points exported contracts — how you extend this code

Binder (Interface)
Binder interface for binding task and hostname [6 implementers]
pkg/scheduler/cache/interface.go
Controller (Interface)
Controller is the interface of all controllers. [10 implementers]
pkg/controllers/framework/interface.go
Binder (Interface)
Binder interface for binding task and hostname [6 implementers]
pkg/agentscheduler/cache/interface.go
GenericInformer (Interface)
GenericInformer is type of SharedIndexInformer which will locate and delegate to other sharedInformers based on type [15 …
staging/src/volcano.sh/apis/pkg/client/informers/externalversions/generic.go
Eviction (Interface)
(no doc) [7 implementers]
pkg/agent/utils/eviction/eviction.go
TC (Interface)
go:generate mockgen -destination ./mocks/mock_tc.go -package mocks -source tc.go just support linux, related bug: https [3 …
pkg/networkqos/tc/tc.go
Getter (Interface)
Getter is used to get cpu/memory usage of current node. [2 implementers]
pkg/resourceusage/resource_usage_getter.go
ResGroup (Interface)
ResGroup interface for resource group [2 implementers]
pkg/webhooks/admission/pods/mutate/factory.go

Core symbols most depended-on inside this repo

BuildResourceList
called by 1535
pkg/scheduler/api/test_utils.go
BuildNode
called by 608
pkg/scheduler/util/test_utils.go
BuildPod
called by 584
pkg/scheduler/util/test_utils.go
Equal
called by 543
pkg/scheduler/api/resource_info.go
Add
called by 453
pkg/controllers/cache/interface.go
Get
called by 387
pkg/controllers/cache/interface.go
CoreV1
called by 385
test/e2e/util/scheduler_injector.go
Error
called by 366
pkg/scheduler/api/unschedule_info.go

Shape

Method 3,836
Function 3,404
Struct 960
Interface 211
TypeAlias 105
FuncType 71

Languages

Go100%

Modules by API surface

pkg/scheduler/api/job_info.go92 symbols
third_party/kubernetes/pkg/scheduler/backend/queue/scheduling_queue.go84 symbols
pkg/scheduler/cache/cache.go80 symbols
staging/src/volcano.sh/apis/pkg/apis/openapi/zz_generated.openapi.go79 symbols
pkg/scheduler/framework/session_plugins.go79 symbols
pkg/scheduler/cache/event_handlers.go75 symbols
staging/src/volcano.sh/apis/pkg/apis/scheduling/v1beta1/zz_generated.conversion.go70 symbols
pkg/agentscheduler/cache/cache.go65 symbols
pkg/scheduler/util/test_utils.go64 symbols
pkg/scheduler/capabilities/volumebinding/binder.go55 symbols
third_party/kubernetes/pkg/scheduler/backend/queue/active_queue.go54 symbols
third_party/kubernetes/pkg/scheduler/backend/queue/scheduling_queue_test.go53 symbols

Dependencies from manifests, versioned

cel.dev/exprv0.25.1 · 1×
cyphar.com/go-pathrsv0.2.1 · 1×
github.com/AdaLogics/go-fuzz-headersv0.0.0-2024080614160 · 1×
github.com/Azure/go-ansitermv0.0.0-2023012417243 · 1×
github.com/JeffAshton/win_pdhv0.0.0-2016110914355 · 1×
github.com/MakeNowJust/heredocv1.0.0 · 1×
github.com/Masterminds/semver/v3v3.4.0 · 1×
github.com/Microsoft/go-winiov0.6.2 · 1×
github.com/Microsoft/hnslibv0.1.2 · 1×
github.com/NYTimes/gziphandlerv1.1.1 · 1×
github.com/antlr4-go/antlr/v4v4.13.0 · 1×

For agents

$ claude mcp add volcano \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact