related-skills: cncf-argo, cncf-artifact-hub, cncf-aws-eks, cncf-azure-aks
Volcano in Cloud-Native Engineering
Category: Scheduling & Orchestration
Status: Active
Stars: 2,800
Last Updated: 2026-04-22
Primary Language: Go
Documentation: Batch scheduling infrastructure for Kubernetes
Purpose and Use Cases
Volcano is a core component of the cloud-native ecosystem, serving as for Kubernetes
What Problem Does It Solve?
Volcano addresses the challenge of batch job scheduling in Kubernetes. It provides advanced scheduling, gang scheduling, and queue management.
When to Use This Project
Use Volcano when need batch scheduling, require gang scheduling, or manage ML workloads. Not ideal for simple deployments or when ML training jobs, batch processing, or complex scheduling requirements.
Key Use Cases
- ML Training Job Scheduling
- Batch Job Management
- Gang Scheduling
- Queue-based Resource Management
- Multi-tenant Job Scheduling
Architecture Design Patterns
Core Components
- Scheduler: Core scheduling engine
- Job Controller: Job lifecycle management
- Queue Controller: Queue management
- Scheduler Plugin: Extensible scheduling plugins
- Resource Manager: Resource allocation
Component Interactions
- Job → Scheduler: Job requests scheduling
- Scheduler → Node: Scheduler allocates nodes
- Queue → Scheduler: Queue enforces resource limits
- Job → Pod: Job creates pods
Data Flow Patterns
- Job Submission: Job created → Job controller → Scheduler
- Scheduling Decision: Scheduler evaluates → Allocates nodes
- Pod Creation: Job creates pods → Pods scheduled
- Queue Enforcement: Queue enforces limits → Scheduler respects
Design Principles
- Batch Support: Full batch job support
- Gang Scheduling: All-or-nothing scheduling
- Extensible: Plugin-based architecture
- Fairness: Fair resource sharing
Integration Approaches
Integration with Other CNCF Projects
- Kubernetes: Core platform
- Kube-batch: Scheduling backend
- PyTorch: ML workloads
- TensorFlow: ML workloads
API Patterns
- Job CRD: Job definition
- Queue CRD: Queue definition
- Scheduling Profile: Scheduling profile
- Scheduler Plugin: Plugin interface
Configuration Patterns
- Volcano Config: Volcano configuration
- Queue Config: Queue configuration
- Job Config: Job configuration
- Scheduler Config: Scheduler settings
Extension Mechanisms
- Custom Scheduler Plugins: Add scheduling plugins
- Custom Queues: Custom queue logic
- Custom Job Types: Custom job definitions
Common Pitfalls and How to Avoid Them
Misconfigurations
- Queue Resource: Queue resource limits not enforced
- How to Avoid: Configure queue resources, monitor usage
- Priority Issues: Priority inversion
- How to Avoid: Configure priorities, check queue priorities
Performance Issues
- Job Status: Job status not updating
- How to Avoid: Check job controller, verify pod statuses
- Queue Conflict: Queue conflicts
- How to Avoid: Configure queue priorities, avoid conflicts
Operational Challenges
- Plugin Issues: Plugin loading issues
- How to Avoid: Verify plugin configuration, check logs
- Scaling Issues: Scheduler scalability
- How to Avoid: Scale scheduler, optimize configuration
Security Pitfalls
Coding Practices
Idiomatic Configuration
- Job Design: Design jobs for batch scheduling
- Queue Management: Manage queues effectively
- Priority Configuration: Configure job priorities
API Usage Patterns
- volcano: Volcano CLI
- kubectl apply: Apply job configurations
- volcano schedctl: Scheduler CLI
- kubectl describe: Describe job status
Observability Best Practices
- Job Metrics: Track job performance
- Scheduler Metrics: Monitor scheduler health
- Queue Metrics: Track queue utilization
Testing Strategies
- Integration Tests: Test job scheduling
- Gang Tests: Test gang scheduling
- Performance Tests: Validate scheduling performance
Development Workflow
- Local Development: Use kind or minikube
- Debug Commands: Check volcano logs
- Test Environment: Set up test cluster
- CI/CD Integration: Automate testing
- Monitoring Setup: Configure observability
- Documentation: Maintain documentation
Fundamentals
Essential Concepts
- Job: Batch job definition
- Queue: Resource queue
- Scheduler: Scheduling engine
- Gang: Gang scheduling group
- Priority: Priority level
- Queue: Resource queue
- Plugin: Scheduling plugin
- Profile: Scheduling profile
Terminology Glossary
- Job: Batch job
- Queue: Resource queue
- Gang: Gang group
- Priority: Priority level
- Scheduler: Scheduler engine
Data Models and Types
- Job: Job definition
- Queue: Queue definition
- SchedulingProfile: Scheduling profile
- Plugin: Scheduler plugin
Lifecycle Management
- Job Submission: Job created → Job controller → Scheduled → Running
- Scheduling: Job submitted → Scheduler evaluates → Nodes allocated
- Gang Scheduling: Gang all ready → Gang started
- Queue Enforcement: Job submitted → Queue checks → Job scheduled
State Management
- Job State: Pending, running, or completed
- Queue State: Active or paused
- Scheduler State: Running or degraded
- Pod State: Scheduled, running, or pending
Scaling and Deployment Patterns
Horizontal Scaling
- Scheduler Scaling: Scale scheduler replicas
- Job Scaling: Scale jobs across queues
- Node Scaling: Add nodes to cluster
High Availability
- Scheduler HA: Multiple scheduler replicas
- Job HA: Job replica management
- Queue HA: Queue redundancy
Production Deployments
- Cluster Setup: Deploy volcano cluster
- Queue Configuration: Configure queues
- Network Configuration: Configure network
- Security Setup: Enable RBAC
- Monitoring Setup: Configure metrics
- Logging Setup: Centralize logs
- Resource Quotas: Set resource limits
- Performance Tuning: Optimize scheduling
Upgrade Strategies
- Volcano Upgrade: Upgrade volcano components
- Queue Migration: Migrate queue configurations
- Testing: Verify functionality
Resource Management
- CPU Resources: CPU limits
- Memory Resources: Memory limits
- Storage Resources: Storage configuration
- Network Resources: Network configuration
Additional Resources
- Official Documentation: https://volcano.sh/docs/
- GitHub Repository: Check the project's official documentation for repository link
- CNCF Project Page: cncf.io/projects/cncf-volcano/
- Community: Check the official documentation for community channels
- Versioning: Refer to project's release notes for version-specific features
Troubleshooting
Common Issues
Deployment Failures
- Check pod logs for errors
- Verify configuration values
- Ensure network connectivity
Performance Issues
- Monitor resource usage
- Adjust resource limits
- Check for bottlenecks
Configuration Errors
- Validate YAML syntax
- Check required fields
- Verify environment-specific settings
Integration Problems
- Verify API compatibility
- Check dependency versions
- Review integration documentation
Getting Help
- Check official documentation
- Search GitHub issues
- Join community channels
- Review logs and metrics
Content generated automatically. Verify against official documentation before production use.
Examples
Basic Configuration
# Basic configuration example
apiVersion: v1
kind: ConfigMap
metadata:
name: {{project_name}}-config
namespace: default
data:
# Configuration goes here
config.yaml: |
# Base configuration
# Add your settings here
Kubernetes Deployment
# Kubernetes deployment for {{project_name}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{project_name}}
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: {{project_name}}
template:
metadata:
labels:
app: {{project_name}}
spec:
containers:
- name: {{project_name}}
image: {{project_name}}:latest
ports:
- containerPort: 8080
resources:
limits:
memory: "128Mi"
cpu: "500m"
Kubernetes Service
# Kubernetes service for {{project_name}}
apiVersion: v1
kind: Service
metadata:
name: {{project_name}}
namespace: default
spec:
selector:
app: {{project_name}}
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP
When to Use
Use this skill when:
- Integrating a CNCF project into Kubernetes infrastructure — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster
- Designing cloud-native architecture — You are selecting and integrating CNCF tools to solve specific infrastructure challenges
- Resolving operational issues — A CNCF component is misbehaving, underperforming, or needs configuration changes
Core Workflow
Assess Requirements — Understand the use case, scale, integration needs, and existing infrastructure. Checkpoint: Document requirements, constraints, and success criteria.
Design Architecture — Plan component interactions, data flow, and deployment strategy using cloud-native best practices. Checkpoint: Verify the architecture addresses all requirements and follows CNCF conventions.
Implement & Configure — Create manifests, configurations, and deployment scripts. Include resource limits, health checks, and observability hooks. Checkpoint: Validate all YAML against schema and test in a staging environment.
Deploy & Monitor — Apply manifests to the cluster, verify component health, and confirm observability is working. Checkpoint: Confirm all pods/services are running, probes passing, and metrics/alerts configured.
Constraints
MUST DO
- Include at least one complete working YAML manifest example
- Note when content is auto-generated vs. manually verified
- Reference relevant CNCF project documentation
MUST NOT DO
- Deploy manifests without testing in a staging environment first
- Use deprecated API versions (e.g., apps/v1beta1)
- Omit resource limits and requests in Kubernetes manifests
1---2name: volcano3description: "Configures volcano in batch scheduling infrastructure for kubernetes for cloud-native deployment and infrastructure management."4license: MIT5---678910 related-skills: cncf-argo, cncf-artifact-hub, cncf-aws-eks, cncf-azure-aks1112131415# Volcano in Cloud-Native Engineering1617**Category:** Scheduling & Orchestration 18**Status:** Active 19**Stars:** 2,800 20**Last Updated:** 2026-04-22 21**Primary Language:** Go 22**Documentation:** [Batch scheduling infrastructure for Kubernetes](https://volcano.sh/docs/) 2324---2526## Purpose and Use Cases2728Volcano is a core component of the cloud-native ecosystem, serving as for Kubernetes2930### What Problem Does It Solve?3132Volcano addresses the challenge of batch job scheduling in Kubernetes. It provides advanced scheduling, gang scheduling, and queue management.3334### When to Use This Project3536Use Volcano when need batch scheduling, require gang scheduling, or manage ML workloads. Not ideal for simple deployments or when ML training jobs, batch processing, or complex scheduling requirements.3738### Key Use Cases3940- ML Training Job Scheduling41- Batch Job Management42- Gang Scheduling43- Queue-based Resource Management44- Multi-tenant Job Scheduling4546---4748## Architecture Design Patterns4950### Core Components5152- **Scheduler**: Core scheduling engine53- **Job Controller**: Job lifecycle management54- **Queue Controller**: Queue management55- **Scheduler Plugin**: Extensible scheduling plugins56- **Resource Manager**: Resource allocation5758### Component Interactions59601. **Job → Scheduler**: Job requests scheduling611. **Scheduler → Node**: Scheduler allocates nodes621. **Queue → Scheduler**: Queue enforces resource limits631. **Job → Pod**: Job creates pods6465### Data Flow Patterns66671. **Job Submission**: Job created → Job controller → Scheduler681. **Scheduling Decision**: Scheduler evaluates → Allocates nodes691. **Pod Creation**: Job creates pods → Pods scheduled701. **Queue Enforcement**: Queue enforces limits → Scheduler respects7172### Design Principles7374- **Batch Support**: Full batch job support75- **Gang Scheduling**: All-or-nothing scheduling76- **Extensible**: Plugin-based architecture77- **Fairness**: Fair resource sharing7879---8081## Integration Approaches8283### Integration with Other CNCF Projects8485- **Kubernetes**: Core platform86- **Kube-batch**: Scheduling backend87- **PyTorch**: ML workloads88- **TensorFlow**: ML workloads8990### API Patterns9192- **Job CRD**: Job definition93- **Queue CRD**: Queue definition94- **Scheduling Profile**: Scheduling profile95- **Scheduler Plugin**: Plugin interface9697### Configuration Patterns9899- **Volcano Config**: Volcano configuration100- **Queue Config**: Queue configuration101- **Job Config**: Job configuration102- **Scheduler Config**: Scheduler settings103104### Extension Mechanisms105106- **Custom Scheduler Plugins**: Add scheduling plugins107- **Custom Queues**: Custom queue logic108- **Custom Job Types**: Custom job definitions109110---111112## Common Pitfalls and How to Avoid Them113114### Misconfigurations115116- **Queue Resource**: Queue resource limits not enforced117 - **How to Avoid**: Configure queue resources, monitor usage118- **Priority Issues**: Priority inversion119 - **How to Avoid**: Configure priorities, check queue priorities120121### Performance Issues122123- **Job Status**: Job status not updating124 - **How to Avoid**: Check job controller, verify pod statuses125- **Queue Conflict**: Queue conflicts126 - **How to Avoid**: Configure queue priorities, avoid conflicts127128### Operational Challenges129130- **Plugin Issues**: Plugin loading issues131 - **How to Avoid**: Verify plugin configuration, check logs132- **Scaling Issues**: Scheduler scalability133 - **How to Avoid**: Scale scheduler, optimize configuration134135### Security Pitfalls136137138---139140## Coding Practices141142### Idiomatic Configuration143144- **Job Design**: Design jobs for batch scheduling145- **Queue Management**: Manage queues effectively146- **Priority Configuration**: Configure job priorities147148### API Usage Patterns149150- **volcano**: Volcano CLI151- **kubectl apply**: Apply job configurations152- **volcano schedctl**: Scheduler CLI153- **kubectl describe**: Describe job status154155### Observability Best Practices156157- **Job Metrics**: Track job performance158- **Scheduler Metrics**: Monitor scheduler health159- **Queue Metrics**: Track queue utilization160161### Testing Strategies162163- **Integration Tests**: Test job scheduling164- **Gang Tests**: Test gang scheduling165- **Performance Tests**: Validate scheduling performance166167### Development Workflow168169- **Local Development**: Use kind or minikube170- **Debug Commands**: Check volcano logs171- **Test Environment**: Set up test cluster172- **CI/CD Integration**: Automate testing173- **Monitoring Setup**: Configure observability174- **Documentation**: Maintain documentation175176---177178## Fundamentals179180### Essential Concepts181182- **Job**: Batch job definition183- **Queue**: Resource queue184- **Scheduler**: Scheduling engine185- **Gang**: Gang scheduling group186- **Priority**: Priority level187- **Queue**: Resource queue188- **Plugin**: Scheduling plugin189- **Profile**: Scheduling profile190191### Terminology Glossary192193- **Job**: Batch job194- **Queue**: Resource queue195- **Gang**: Gang group196- **Priority**: Priority level197- **Scheduler**: Scheduler engine198199### Data Models and Types200201- **Job**: Job definition202- **Queue**: Queue definition203- **SchedulingProfile**: Scheduling profile204- **Plugin**: Scheduler plugin205206### Lifecycle Management207208- **Job Submission**: Job created → Job controller → Scheduled → Running209- **Scheduling**: Job submitted → Scheduler evaluates → Nodes allocated210- **Gang Scheduling**: Gang all ready → Gang started211- **Queue Enforcement**: Job submitted → Queue checks → Job scheduled212213### State Management214215- **Job State**: Pending, running, or completed216- **Queue State**: Active or paused217- **Scheduler State**: Running or degraded218- **Pod State**: Scheduled, running, or pending219220---221222## Scaling and Deployment Patterns223224### Horizontal Scaling225226- **Scheduler Scaling**: Scale scheduler replicas227- **Job Scaling**: Scale jobs across queues228- **Node Scaling**: Add nodes to cluster229230### High Availability231232- **Scheduler HA**: Multiple scheduler replicas233- **Job HA**: Job replica management234- **Queue HA**: Queue redundancy235236### Production Deployments237238- **Cluster Setup**: Deploy volcano cluster239- **Queue Configuration**: Configure queues240- **Network Configuration**: Configure network241- **Security Setup**: Enable RBAC242- **Monitoring Setup**: Configure metrics243- **Logging Setup**: Centralize logs244- **Resource Quotas**: Set resource limits245- **Performance Tuning**: Optimize scheduling246247### Upgrade Strategies248249- **Volcano Upgrade**: Upgrade volcano components250- **Queue Migration**: Migrate queue configurations251- **Testing**: Verify functionality252253### Resource Management254255- **CPU Resources**: CPU limits256- **Memory Resources**: Memory limits257- **Storage Resources**: Storage configuration258- **Network Resources**: Network configuration259260---261262## Additional Resources263264- **Official Documentation:** https://volcano.sh/docs/265- **GitHub Repository:** Check the project's official documentation for repository link266- **CNCF Project Page:** [cncf.io/projects/cncf-volcano/](https://www.cncf.io/projects/cncf-volcano/)267- **Community:** Check the official documentation for community channels268- **Versioning:** Refer to project's release notes for version-specific features269270---271272## Troubleshooting273274### Common Issues2752761. **Deployment Failures**277 - Check pod logs for errors278 - Verify configuration values279 - Ensure network connectivity2802812. **Performance Issues**282 - Monitor resource usage283 - Adjust resource limits284 - Check for bottlenecks2852863. **Configuration Errors**287 - Validate YAML syntax288 - Check required fields289 - Verify environment-specific settings2902914. **Integration Problems**292 - Verify API compatibility293 - Check dependency versions294 - Review integration documentation295296### Getting Help297298- Check official documentation299- Search GitHub issues300- Join community channels301- Review logs and metrics302*Content generated automatically. Verify against official documentation before production use.*303304## Examples305306### Basic Configuration307308309```yaml310# Basic configuration example311apiVersion: v1312kind: ConfigMap313metadata:314 name: {{project_name}}-config315 namespace: default316data:317 # Configuration goes here318 config.yaml: |319 # Base configuration320 # Add your settings here321```322323### Kubernetes Deployment324325326```yaml327# Kubernetes deployment for {{project_name}}328apiVersion: apps/v1329kind: Deployment330metadata:331 name: {{project_name}}332 namespace: default333spec:334 replicas: 1335 selector:336 matchLabels:337 app: {{project_name}}338 template:339 metadata:340 labels:341 app: {{project_name}}342 spec:343 containers:344 - name: {{project_name}}345 image: {{project_name}}:latest346 ports:347 - containerPort: 8080348 resources:349 limits:350 memory: "128Mi"351 cpu: "500m"352```353354### Kubernetes Service355356357```yaml358# Kubernetes service for {{project_name}}359apiVersion: v1360kind: Service361metadata:362 name: {{project_name}}363 namespace: default364spec:365 selector:366 app: {{project_name}}367 ports:368 - protocol: TCP369 port: 80370 targetPort: 8080371 type: ClusterIP372```373374---375376## When to Use377378Use this skill when:379380- **Integrating a CNCF project into Kubernetes infrastructure** — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster381- **Designing cloud-native architecture** — You are selecting and integrating CNCF tools to solve specific infrastructure challenges382- **Resolving operational issues** — A CNCF component is misbehaving, underperforming, or needs configuration changes383---384385## Core Workflow3863871. **Assess Requirements** — Understand the use case, scale, integration needs, and existing infrastructure. **Checkpoint:** Document requirements, constraints, and success criteria.3883892. **Design Architecture** — Plan component interactions, data flow, and deployment strategy using cloud-native best practices. **Checkpoint:** Verify the architecture addresses all requirements and follows CNCF conventions.3903913. **Implement & Configure** — Create manifests, configurations, and deployment scripts. Include resource limits, health checks, and observability hooks. **Checkpoint:** Validate all YAML against schema and test in a staging environment.3923934. **Deploy & Monitor** — Apply manifests to the cluster, verify component health, and confirm observability is working. **Checkpoint:** Confirm all pods/services are running, probes passing, and metrics/alerts configured.394395---396397## Constraints398399### MUST DO400- Include at least one complete working YAML manifest example401- Note when content is auto-generated vs. manually verified402- Reference relevant CNCF project documentation403404### MUST NOT DO405- Deploy manifests without testing in a staging environment first406- Use deprecated API versions (e.g., apps/v1beta1)407- Omit resource limits and requests in Kubernetes manifests