kubesphere-volcano
KubeSphere Volcano job management Skill
Install / Use
npx skills add kubesphere/kubesphere --skill kubesphere-volcanoInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of kubesphere-volcano
kubesphere-volcano scores 82/100 on our quality scale, 1125th of 2,399 Development & Engineering skills we index (top 47%).
Its SKILL.md is 22 KB long, well organised into 88 sections with 23 code examples: a thorough specification that gives an agent plenty to work with.
With 17,059 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated about 2 months ago, so kubesphere-volcano is actively maintained.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 88/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
kubesphere-volcano compared with similar skills
All 4 of these similar skills score higher than kubesphere-volcano; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| kubesphere-volcano (this skill)by kubesphere | 82 | 17.1k | 2mo ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 85.6k | 11d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 73.9k | today | CLAUDE.md |
| ai-job-searchby MadsLorentzen | 100 | 44.0k | 5d ago | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 41.7k | today | CLAUDE.md |
Frequently asked questions
- How do I install kubesphere-volcano?
- Run
npx skills add kubesphere/kubesphere --skill kubesphere-volcano. The install tabs above show the steps for each supported agent. - Which AI agents does kubesphere-volcano work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is kubesphere-volcano safe to use?
- It declares no license and scores 88/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is kubesphere-volcano still maintained?
- The repository was last updated about 2 months ago, so kubesphere-volcano is actively maintained.
Skill content
View source on GitHubname: kubesphere-volcano description: KubeSphere Volcano job management Skill. Use when user asks to create, list, update, delete Jobs (Volcano Jobs), manage Queues, create PyTorch/TensorFlow/MPI training jobs, or troubleshoot Volcano scheduling issues in KubeSphere. Includes built-in YAML templates, scheduling policy recommendations, and best practices for resource configuration. Handles both KubeSphere API and kubectl operations.
KubeSphere Volcano Management
Environment (this KubeSphere instance):
- KubeSphere: Set
KS_HOSTenvironment variable (e.g., http://<kubesphere-host>:30880) - Username: admin (default)
- Password: Set
KS_PASSWORDenvironment variable - Clusters: Run
kubectl get clustersorks_api GET /kapis/cluster.kubesphere.io/v1alpha1/clusters - Volcano Extension: Run
kubectl get extension volcano -n kubesphere-systemor check via KubeSphere console
Use this skill for the full Volcano lifecycle in KubeSphere:
- Create, list, update, delete Volcano Jobs
- Manage Queues for job scheduling
- Generate YAML templates for PyTorch, TensorFlow, MPI, and batch jobs
- Troubleshoot job pending, pod creation, and scheduling issues
Out of scope by default:
- Advanced Volcano CRDs not requested by the user, such as
JobFlow,JobTemplate, orCommand - Deep scheduler configuration without cluster evidence
- Volcano system installation (assume extension is already installed)
If the user explicitly asks for those, acknowledge that they are Volcano capabilities but treat them as a follow-up task.
Response Rules
- Prefer executable output:
JobYAML,QueueYAML, kubectl commands, or a short ordered procedure. - Use
kind: Job(not VolcanoJob), the correct resource type in this KubeSphere environment. - Use
kubectl get jobs.batch.volcano.shor short namevcjob/vjto query jobs. - For uninstall/delete requests, warn that deleting Job resources will terminate running pods.
- Omit optional fields instead of guessing values.
IMPORTANT: The resource type is Job (short: vcjob, vj), NOT VolcanoJob. Use these names in all kubectl commands.
API Usage
This skill supports two approaches for API operations. See Discovery Commands section below for detailed commands.
API Endpoints
KubeSphere provides two API paths for Volcano Job:
Option 1: KubeSphere Extension API (/kapis) - Recommended
Uses volcanojobs resource name:
# Job CRUD (namespace-scoped)
GET /kapis/batch.volcano.sh/v1alpha1/namespaces/{namespace}/volcanojobs
POST /kapis/batch.volcano.sh/v1alpha1/namespaces/{namespace}/volcanojobs
GET /kapis/batch.volcano.sh/v1alpha1/namespaces/{namespace}/volcanojobs/{name}
DELETE /kapis/batch.volcano.sh/v1alpha1/namespaces/{namespace}/volcanojobs/{name}
# Job CRUD (cluster-scoped)
GET /kapis/batch.volcano.sh/v1alpha1/volcanojobs
DELETE /kapis/batch.volcano.sh/v1alpha1/volcanojobs
# PodGroup CRUD (namespace-scoped)
GET /kapis/batch.volcano.sh/v1alpha1/namespaces/{namespace}/podgroups
# Queue CRUD (user-scoped)
GET /kapis/scheduling.volcano.sh/v1beta1/users/{user}/queues
POST /kapis/scheduling.volcano.sh/v1beta1/users/{user}/queues
DELETE /kapis/scheduling.volcano.sh/v1beta1/users/{user}/queues/{name}
Option 2: Kubernetes Native API (/apis)
Uses jobs resource name:
# Job CRUD (namespace-scoped)
GET /apis/batch.volcano.sh/v1alpha1/namespaces/{namespace}/jobs
POST /apis/batch.volcano.sh/v1alpha1/namespaces/{namespace}/jobs
GET /apis/batch.volcano.sh/v1alpha1/namespaces/{namespace}/jobs/{name}
DELETE /apis/batch.volcano.sh/v1alpha1/namespaces/{namespace}/jobs/{name}
# Job CRUD (cluster-scoped)
GET /apis/batch.volcano.sh/v1alpha1/jobs
DELETE /apis/batch.volcano.sh/v1alpha1/jobs
# Queue CRUD (cluster-scoped)
GET /apis/scheduling.volcano.sh/v1beta1/queues
POST /apis/scheduling.volcano.sh/v1beta1/queues
DELETE /apis/scheduling.volcano.sh/v1beta1/queues/{name}
Note: Both paths work. Use
/kapisfor KubeSphere extension API (multi-cluster support), use/apisfor standard Kubernetes API.
Note: Queue API has two views:
/kapis/.../users/{user}/queuesreturns queues visible to that user (user-scoped)/apis/.../queuesreturns all queues in the cluster (cluster-scoped)
# Query Parameters
page - Page number (default: 1)
limit - Items per page
ascending - Sort direction (default: false)
sortBy - Sort field (e.g., createTime)
Discovery Commands
This section provides two approaches for querying Volcano status:
- KubeSphere API (curl) - for extension management and multi-cluster queries
- kubectl - for direct Kubernetes resource operations
Option 1: Using KubeSphere API (curl)
Environment Variables:
export KS_HOST="http://<kubesphere-host>:30880" # KubeSphere console URL (required)
export KS_USERNAME="admin" # Username (default)
export KS_PASSWORD="<password>" # Password (optional if KS_TOKEN is set)
export KS_TOKEN="<token>" # Pre-generated OAuth token (optional, takes priority)
# Get OAuth token - prefer KS_TOKEN if set, otherwise use password
ks_token() {
# Use KS_TOKEN if it's set and non-empty
if [ -n "${KS_TOKEN}" ]; then
echo "$KS_TOKEN"
return
fi
# Fall back to password-based token
if [ -z "${KS_PASSWORD}" ]; then
echo "Error: KS_TOKEN or KS_PASSWORD must be set" >&2
return 1
fi
curl -s -X POST "${KS_HOST}/oauth/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password&username=${KS_USERNAME:-admin}&password=$KS_PASSWORD&client_id=kubesphere&client_secret=kubesphere" | jq -r '.access_token'
}
# Make API call (supports multi-cluster with optional cluster parameter)
ks_api() {
local method=$1
local path=$2
local cluster=${3:-host} # Default to host cluster. Pass 3rd arg for member clusters.
local body=$4
local token=$(ks_token)
# Check if token is empty
if [ -z "$token" ]; then
echo "Error: Failed to obtain authentication token. Please check KS_TOKEN or KS_PASSWORD." >&2
return 1
fi
# Prepend cluster path if not already present and not a user-scope path
if [[ ! "$path" =~ ^/clusters/ ]] && [[ ! "$path" =~ ^/kapis/scheduling.volcano.sh/v1beta1/users ]]; then
path="/clusters/${cluster}${path}"
fi
curl -s -X "$method" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
${body:+-d "$body"} \
"${KS_HOST}$path"
}
Usage:
# Option 1: Use pre-generated token (recommended for automation)
export KS_HOST="http://<kubesphere-host>:30880"
export KS_TOKEN="eyJh…[redacted]"
# Option 2: Use password (will fetch token each time)
export KS_HOST="http://<kubesphere-host>:30880"
export KS_PASSWORD="your-password"
Query Commands:
# List Jobs in namespace (host cluster)
ks_api GET /kapis/batch.volcano.sh/v1alpha1/namespaces/default/volcanojobs
# List all Jobs (cluster-wide)
ks_api GET /kapis/batch.volcano.sh/v1alpha1/volcanojobs
# List Jobs in member cluster (specify cluster explicitly)
ks_api GET /kapis/batch.volcano.sh/v1alpha1/namespaces/default/volcanojobs member-4
# List Queues (user-scoped, no cluster prefix needed)
ks_api GET /kapis/scheduling.volcano.sh/v1beta1/users/admin/queues
# List PodGroups in namespace
ks_api GET /kapis/batch.volcano.sh/v1alpha1/namespaces/default/podgroups
# Check Volcano extension status
ks_api GET /kapis/kubesphere.io/v1alpha1/extensions/volcano
# List available Volcano extension versions
ks_api GET /kapis/kubesphere.io/v1alpha1/extensionversions | jq '.items[] | select(.metadata.name | contains("volcano"))'
# List clusters
ks_api GET /kapis/cluster.kubesphere.io/v1alpha1/clusters
Option 2: Using kubectl (Direct Cluster Access)
# List all Volcano Jobs
kubectl get jobs.batch.volcano.sh -A
kubectl get vcjob -A
kubectl get vj -A
# List Jobs in specific namespace
kubectl get vcjob -n <namespace>
# List all Queues
kubectl get queue -A
# List all PodGroups
kubectl get podgroup -A
# Check Volcano CRDs
kubectl get crd | grep volcano
# Check Volcano extension
kubectl get extension volcano
kubectl get extensionversion | grep volcano
Option 3: Multi-Cluster Query (kubeconfig extraction)
For querying member clusters, extract the kubeconfig from the Cluster resource:
# Get kubeconfig for a member cluster
CLUSTER_NAME=member-4
KUBECONFIG_ENCODED=$(kubectl get cluster.cluster.kubesphere.io $CLUSTER_NAME -o jsonpath='{.spec.connection.kubeconfig}')
echo "$KUBECONFIG_ENCODED" | base64 -d > /tmp/${CLUSTER_NAME}-kubeconfig
# Query member cluster
export KUBECONFIG=/tmp/${CLUSTER_NAME}-kubeconfig
kubectl get jobs.batch.volcano.sh -A
kubectl get queue -A
# Switch back to host cluster
export KUBECONFIG=""
When to Use Which Approach
| Scenario | Recommended Approach | |----------|---------------------| | Query KubeSphere extension status | KubeSphere API (curl) | | List available clusters | KubeSphere API (curl) | | Query host cluster Kubernetes resources | kubectl | | Query member cluster Kubernetes resources | kubeconfig extraction | | Create/apply Job/Queue manifests | kubectl |
Common Operations
List Jobs
# List in specific namespace
ks_api GET /kapis/batch.volcano.sh/v1alpha1/namespaces/default/volcanojobs
# List all (cluster-wide)
ks_api GET /kapis/batch.volcano.sh/v1alpha1/volcanojobs
# With kubectl
kubectl get jobs.batch.volcano.sh -A
kubectl get vcjob -A
kubectl get vj -A
kubectl get vcjob -n <namespace>
Get Job Details
# Via API
ks_api GET /kapis/batch.volcano.sh/v1alpha1/namespaces/default/volcanojobs/my-job
# Via kubectl
kubectl get vcjob my-job -n <namespace> -o yaml
kubectl describe vcjob my-job -n <namespace>
# View logs (get pod name first, then logs)
kubectl get pods -n <namespace> -l volcano.sh/job-name=my-job
kubectl logs <pod-name> -n <namespace>
kubectl logs -f <pod-name> -n <namespace> # follow mode
Create Job
# Via API (POST with JSON body - use heredoc for readability)
read -r -d '' JOB_JSON <<'EOF'
{
"apiVersion": "batch.volcano.sh/v1alpha1",
"kind": "Job",
"metadata": {"name": "my-job", "namespace": "default"},
"spec": {
"schedulerName": "volcano",
"queue": "default",
"tasks": [{
"replicas": 1,
"name": "worker",
"template": {
"spec": {
"containers": [{"name": "job", "image": "busybox", "command": ["echo", "hello"]}],
"restartPolicy": "Never"
}
}
}]
}
}
EOF
ks_api POST /kapis/batch.volcano.sh/v1alpha1/namespaces/default/volcanojobs "$JOB_JSON"
# Via kubectl (apply YAML)
kubectl apply -f - <<'EOF'
apiVersion: batch.volcano.sh/v1alpha1
kind: Job
metadata:
name: my-job
namespace: default
spec:
schedulerName: volcano
queue: default
tasks:
- replicas: 1
name: worker
template:
spec:
containers:
- name: job
image: busybox
command:
- echo
- hello
restartPolicy: Never
EOF
Delete Job
⚠️ WARNING: Deleting a Job will terminate all running pods associated with it. This action cannot be undone.
# Via API
ks_api DELETE /kapis/batch.volcano.sh/v1alpha1/namespaces/default/volcanojobs/my-job
# Via kubectl
kubectl delete vcjob my-job -n <namespace>
List Queues
# Via API
ks_api GET /kapis/scheduling.volcano.sh/v1beta1/users/admin/queues
# Via kubectl
kubectl get queue -A
Create Queue
# Via kubectl (using YAML)
kubectl apply -f - <<'EOF'
apiVersion: scheduling.volcano.sh/v1beta1
kind: Queue
metadata:
name: ml-queue
spec:
weight: 50
capability:
cpu: "16"
memory: "64Gi"
EOF
Update Queue
# Via kubectl
kubectl patch queue ml-queue -p '{"spec":{"weight":60}}' --type merge
`
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
85.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
73.9kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
44.0kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.7kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
