Volcano batch scheduling for Kubernetes — gang scheduling, VolcanoJobs, queue management, GPU scheduling, and Kubeflow integration. Use when scheduling distributed training or batch workloads. NOT for simple single-pod jobs. See also: kueue.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
Instruções da origem · Visualização somente leitura
name
volcano
description
Volcano batch scheduling for Kubernetes — gang scheduling, VolcanoJobs, queue management, GPU scheduling, and Kubeflow integration. Use when scheduling distributed training or batch workloads. NOT for simple single-pod jobs. See also: kueue.
Volcano
CNCF incubating batch scheduling system for AI/ML, big data, and HPC on Kubernetes. Replaces the default scheduler with gang scheduling, queue-based resource management, and framework-native integrations.
The primary workload CRD. Supports multiple task groups with independent replicas, images, and policies.
apiVersion:batch.volcano.sh/v1alpha1kind:Jobmetadata:name:distributed-trainingspec:minAvailable:4# Gang scheduling: all 4 pods must be schedulableschedulerName:volcanoqueue:training-queuepriorityClassName:high-prioritymaxRetry:3plugins:ssh: [] # Auto-configures SSH between podssvc: [] # Creates headless service for DNS discoveryenv: [] # Injects VK_TASK_INDEX, VK_TASK_NUM env varspolicies:-event:PodEvictedaction:RestartJob-event:TaskCompletedaction:CompleteJobtasks:-name:masterreplicas:1template:spec:containers:-name:trainerimage:training:latestcommand: ["torchrun", "--nproc_per_node=1", "--nnodes=4",
"--node_rank=$(VK_TASK_INDEX)", "train.py"]
resources:requests:nvidia.com/gpu:"1"limits:nvidia.com/gpu:"1"restartPolicy:Never-name:workerreplicas:3policies:-event:TaskCompletedaction:CompleteJobtemplate:spec:containers:-name:trainerimage:training:latestresources:requests:nvidia.com/gpu:"1"limits:nvidia.com/gpu:"1"restartPolicy:Never
Key Fields
minAvailable — Minimum pods schedulable simultaneously (gang scheduling). Set to total replicas for strict gang.
schedulerName: volcano — Routes to Volcano scheduler instead of default.
Queues control multi-tenant resource allocation. Two plugin modes:
Proportion Plugin (weight-based, auto-adjusts)
apiVersion:scheduling.volcano.sh/v1beta1kind:Queuemetadata:name:team-aspec:weight:3# Gets 3/(3+1) = 75% of cluster resourcesreclaimable:true# Allow other queues to reclaim excesscapability:# Hard upper limitcpu:"64"memory:256Ginvidia.com/gpu:"8"
Capacity Plugin (explicit quotas)
apiVersion:scheduling.volcano.sh/v1beta1kind:Queuemetadata:name:team-bspec:deserved:# Expected allocation (reclaimable above this)cpu:"16"memory:64Giguarantee:# Reserved minimum (exclusive to this queue)resource:cpu:"8"memory:32Gicapability:# Hard ceilingcpu:"32"memory:128Gipriority:100reclaimable:true
Rule:guarantee ≤ deserved ≤ capability
proportion plugin: auto-calculates deserved from weights. Best with autoscaling clusters.
capacity plugin: explicit deserved values. More predictable. Use one, not both.
Scheduler Configuration
Configure via volcano-scheduler-configmap. Actions execute in order; plugins provide algorithms.
Use Volcano when: Gang scheduling is critical (MPI, multi-node DDP), need built-in GPU sharing, or want a full scheduler replacement with rich plugins.
Use Kueue when: You want admission-based quota without replacing the scheduler, need ResourceFlavors for heterogeneous hardware, or prefer the SIG-supported K8s-native approach.
LWS defines the workload primitive: leader + N workers managed as a cohesive group with all-or-nothing restarts, HPA scaling, and rolling updates. It is the standard K8s primitive for multi-node inference (vLLM, SGLang, NIM) and long-running training.
Volcano provides the scheduling layer: gang scheduling, queue-based resource quotas, fair-share allocation, and preemption across jobs and tenants.
They can be used together — LWS manages the pod-group lifecycle while Volcano schedules it into a queue. The LWS schedulerName: volcano field routes its pods through Volcano's gang and capacity plugins. If you only need quota management without replacing the scheduler, use the Kueue LWS integration instead.