ワンクリックで
volcano-job-diagnose
Diagnose Volcano Job status and issues. Check Job phases, task statuses, PodGroup associations, and overall job health.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Diagnose Volcano Job status and issues. Check Job phases, task statuses, PodGroup associations, and overall job health.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Show and ping the gateway of a network interface, on a Kubernetes node or inside a pod's network namespace. Auto-detects the gateway from the routing table (ip -j route), reports interface type (RoCE / Ethernet / IB), and tests reachability with ping. Use for default-route / gateway questions, network reachability checks, RoCE/RDMA data-path validation, and "can this node/pod reach its gateway" investigations.
Retrieve logs from a Kubernetes node. Supports journalctl (systemd units) and file-based logs. Use when you need to inspect node-level logs (containerd, kubelet, etc.). Run via host_script (preferred) or node_script.
Guide for writing and improving Siclaw skills. Read this when creating or modifying a skill. Covers skill directory layout, SKILL.md format, script execution modes, and best practices.
Check node health and diagnose node-level issues (NotReady, DiskPressure, MemoryPressure, PIDPressure). Inspects node conditions, resource allocation, and real-time usage.
Diagnose DNS resolution failures in the cluster (NXDOMAIN, timeouts, SERVFAIL). Checks CoreDNS health, service endpoints, and DNS configuration.
Diagnose NetworkPolicy-related connectivity issues (traffic unexpectedly blocked, default-deny effects, egress blocking DNS). Identifies which NetworkPolicies affect a pod, checks ingress/egress rules, and verifies CNI support.
| name | volcano-job-diagnose |
| description | Diagnose Volcano Job status and issues. Check Job phases, task statuses, PodGroup associations, and overall job health. |
Diagnose Volcano Job (batch.volcano.sh/v1beta1) status and issues. This skill checks Job phases, task statuses, PodGroup associations, and overall job health.
Scope: This skill is for diagnosis only. Once you identify the root cause, report it to the user and stop. Do NOT attempt to modify job specs or restart jobs — that should be left to the user.
bash skills/core/volcano-job-diagnose/scripts/diagnose-job.sh --job <job-name> --namespace <namespace>
| Parameter | Required | Description |
|---|---|---|
--job JOB | yes | Job name to diagnose |
--namespace NS | no | Namespace (default: default) |
--verbose | no | Show detailed task and pod information |
Diagnose a Volcano Job:
bash skills/core/volcano-job-diagnose/scripts/diagnose-job.sh --job my-training-job --namespace training
Verbose mode with task details:
bash skills/core/volcano-job-diagnose/scripts/diagnose-job.sh --job my-training-job --namespace training --verbose
apiVersion: batch.volcano.sh/v1beta1
kind: Job
spec:
schedulerName: volcano
tasks:
- name: worker
replicas: 4
template:
spec:
containers:
- name: worker
resources:
requests:
cpu: "4"
memory: "8Gi"
maxRetry: 3 # Max retries before job is Aborted
policies:
- event: PodFailed
action: RestartJob
Note: Volcano Jobs can also be queried using the short name
vcjob(e.g.,kubectl get vcjob). This is an alias forjob.batch.volcano.sh. Be careful not to confuse with native Kubernetesbatch/v1 Job— always usejob.batch.volcano.shorvcjobfor Volcano Jobs.
| Phase | Meaning |
|---|---|
Pending | Job is waiting for resources or admission |
Running | Job is executing |
Completing | Job tasks are completing |
Completed | Job finished successfully |
Failed | Job failed |
Restarting | Job is being restarted due to policy |
Terminating | Job is being terminated |
Aborted | Job was aborted |
Each task within a job has its own status:
Pending - Task pods not yet scheduledRunning - Task pods are runningCompleted - Task finishedFailed - Task failedGet the Job status:
kubectl get job.batch.volcano.sh <job-name> -n <namespace> -o yaml
Key fields to check:
status.state.phase - Current job phasestatus.failed - Number of failed tasksstatus.succeeded - Number of succeeded tasksstatus.running - Number of running tasksstatus.pending - Number of pending tasksList all tasks and their statuses:
kubectl get pods -n <namespace> -l volcano.sh/job-name=<job-name> -o wide
What to look for:
Find the PodGroup created for this Job:
kubectl get podgroups -n <namespace> -l volcano.sh/job-name=<job-name>
Or check the Job's tasks for PodGroup annotations:
kubectl get pods -n <namespace> -l volcano.sh/job-name=<job-name> \
-o jsonpath='{.items[0].metadata.annotations.scheduling\.volcano\.sh/pod-group}'
Next step: If PodGroup status is problematic, use volcano-diagnose-pod for detailed PodGroup analysis.
Review job policies that may affect behavior:
kubectl get job.batch.volcano.sh <job-name> -n <namespace> -o jsonpath='{.spec.policies}'
Common policies:
PodFailed → RestartJob - Restart entire job on any pod failurePodFailed → RestartTask - Restart only the failed taskPodEvicted → RestartTask - Restart evicted tasksPodEvicted → AbortJob - Abort entire job when a pod is evicted (can cause unexpected aborts during preemption)TaskCompleted → CompleteJob - Complete job when task finishesAlso check maxRetry — when retries are exhausted the job moves to Aborted:
kubectl get job.batch.volcano.sh <job-name> -n <namespace> -o jsonpath='{.spec.maxRetry}'
Check job-related events:
kubectl get events -n <namespace> --field-selector involvedObject.name=<job-name>
Common event patterns:
JobFailed - Job has failedCheck the reason and message for failure details.
JobRestarting - Job is being restartedCheck the restart policy and previous failure reason.
TaskFailed - Individual task failedMay or may not cause entire job to fail depending on policy.
Symptom: Job phase is Pending, no pods created.
Check:
kubectl get podgroups -n <ns>kubectl get queue <queue>kubectl get events -n <ns> | grep <job-name>Likely causes:
Symptom: Partial task scheduling (e.g., 2/4 tasks running).
Check:
Likely causes:
volcano-gang-scheduling)Symptom: Job keeps restarting, never completes.
Check:
kubectl get job.batch.volcano.sh -o jsonpath='{.spec.policies}'kubectl describe pod <pod>kubectl logs <pod>Likely causes:
Symptom: Some tasks succeeded, but job marked as Failed.
Check:
Likely causes:
Symptom: Job was Running, then moved to Aborted.
Check:
# Check maxRetry
kubectl get job.batch.volcano.sh <job> -n <ns> -o jsonpath='{.spec.maxRetry}'
# Check for preemption/eviction events
kubectl get events -n <ns> --field-selector reason=Preempted
kubectl get events -n <ns> --field-selector reason=Evicted
# Check if running pod count dropped below minMember (Gang breakage)
kubectl get podgroup -n <ns> -l volcano.sh/job-name=<job> -o jsonpath='{"running: "}{.items[0].status.running}{"\nminMember: "}{.items[0].spec.minMember}'
Likely causes:
maxRetry exhausted — job restarted too many timesPodEvicted → AbortJob policyminMember, tearing down the entire groupPodEvicted → AbortJob when RestartTask would be more appropriateVolcano controls task coordination through lifecycle policies, not explicit task dependencies.
spec:
tasks:
- name: master
replicas: 1
policies:
- event: TaskCompleted
action: CompleteJob
- name: worker
replicas: 4
policies:
- event: PodFailed
action: RestartTask
Diagnosis:
# Check per-task status counts
kubectl get job.batch.volcano.sh <job> -o jsonpath='{.status.taskStatusCount}'
# Check configured policies
kubectl get job.batch.volcano.sh <job> -o jsonpath='{.spec.tasks[*].policies}'
Look for mismatched events/actions that could cause unexpected restarts or premature completion.
Use this skill in combination with others:
# 1. Job-level diagnosis
bash skills/core/volcano-job-diagnose/scripts/diagnose-job.sh --job my-job --namespace training
# 2. If PodGroup issues found → Pod-level diagnosis
bash skills/core/volcano-diagnose-pod/scripts/diagnose-pod.sh --pod my-job-worker-0 --namespace training
# 3. If Gang issues → Gang scheduling analysis
# (refer to volcano-gang-scheduling skill)
# 4. If Queue issues → Queue diagnosis
bash skills/core/volcano-queue-diagnose/scripts/diagnose-queue.sh --queue training-queue
# 5. Check scheduler logs for decisions
bash skills/core/volcano-scheduler-logs/scripts/get-scheduler-logs.sh --pod my-job-worker-0 --since 1h
| Variable | Default | Description |
|---|---|---|
VOLCANO_NAMESPACE | default | Default namespace for job lookup |
volcano-diagnose-pod - Pod-level scheduling diagnosisvolcano-gang-scheduling - Gang scheduling constraint analysisvolcano-queue-diagnose - Queue resource analysisvolcano-scheduler-logs - Scheduler decision logsdeployment-rollout-debug - (Similar concept for Deployments)