Skip to content

Latest commit

 

History

History

README.md

Volcano Headlamp Plugin

This Headlamp plugin adds Volcano resources to the Headlamp UI so Kubernetes operators can inspect batch scheduling state with list and detail pages.

Upstream issue: kubernetes-sigs/headlamp#4359

Features

Current Features

  • Volcano Jobs (batch.volcano.sh/v1alpha1)

    • List view with status, queue, scheduling counters, retries, replicas, tasks, and age
    • Detail view with summary info, Pod status, tasks, policies, plugins, conditions, and events
    • Logs viewer with pod/container selection and standard log controls
    • Pod Issues section for actionable runtime blockers
    • Queue and related PodGroup navigation links
    • Suspend and resume actions when supported by the current Job state
  • Volcano Queues (scheduling.volcano.sh/v1beta1)

    • List view with state, weight, parent queue, and workload counters
    • Detail view with queue status, resources, guarantees, reservations, child queues, and events
    • Queue lifecycle actions for opening, closing, and updating weight
    • Parent and child queue navigation links
  • Volcano PodGroups (scheduling.volcano.sh/v1beta1)

    • List view with phase, min member, running count, queue, and age
    • Detail view with progress, conditions, min task member, min resources, and events
    • Queue navigation links
    • Fallback message when conditions are not reported
  • Volcano JobTemplates (flow.volcano.sh/v1alpha1)

    • List view with queue, scheduler, retry settings, task count, and generated Jobs
    • Detail view with tasks, policies, plugins, network topology, related JobFlows, and generated Jobs
  • Volcano JobFlows (flow.volcano.sh/v1alpha1)

    • List view with status, retain policy, flow count, generated Jobs, and phase counts
    • Detail view with flow steps, dependency probes, generated Jobs, conditions, and running histories
  • Plugin Navigation and UX

    • Dedicated Volcano sidebar section in Headlamp
    • Consistent status color rendering across Jobs, Queues, and PodGroups

Planned Features

  • Advanced gang-scheduling visualization
  • Metrics-focused views and additional operational dashboards

Volcano CRDs Supported

CRD API Group
Job batch.volcano.sh/v1alpha1
Queue scheduling.volcano.sh/v1beta1
PodGroup scheduling.volcano.sh/v1beta1
JobTemplate flow.volcano.sh/v1alpha1
JobFlow flow.volcano.sh/v1alpha1

Demo

Video_2026-03-13_01-38-29.mp4

Testing the plugin

Prerequisites

Steps to Test

  1. Clone this repository:

    git clone https://github.com/headlamp-k8s/plugins.git
  2. Navigate to the plugin directory:

    cd volcano
  3. Install dependencies:

    npm install
  4. Start plugin development mode:

    npm run start
  5. Launch Headlamp. You should now see Volcano in the sidebar.

Generate Volcano Resources for Testing

Apply the included test manifests:

kubectl apply -f test-files/deploy/namespace.yaml
kubectl apply -f test-files/deploy/queue.yaml
kubectl apply -f test-files/deploy/job-running.yaml
kubectl apply -f test-files/deploy/job-completed.yaml
kubectl apply -f test-files/deploy/job-unschedulable.yaml
kubectl apply -f test-files/deploy/job-failed.yaml
kubectl apply -f test-files/deploy/jobtemplate-step-a.yaml
kubectl apply -f test-files/deploy/jobtemplate-step-b.yaml
kubectl apply -f test-files/deploy/jobflow.yaml

These manifests create scenarios for:

  • normal/running job
  • completed job
  • unschedulable job (resource pressure)
  • failed job
  • JobTemplates and a dependent JobFlow that generates two Volcano Jobs

Verify from CLI

kubectl get vcjob -n volcano-lab
kubectl get queue volcano-lab-queue
kubectl get podgroups.scheduling.volcano.sh -n volcano-lab
kubectl get jobtemplates.flow.volcano.sh -n volcano-lab
kubectl get jobflows.flow.volcano.sh -n volcano-lab

Verify in Headlamp

  • Open Volcano > Jobs, Volcano > JobTemplates, Volcano > JobFlows, Volcano > Queues, and Volcano > PodGroups.
  • Confirm list pages render expected status/columns.
  • Open detail pages and verify section content and events rendering.
  • Verify cross-links:
    • Job -> Queue
    • Job -> PodGroup (when available)
    • JobFlow -> JobTemplate
    • JobFlow -> generated Job
    • JobTemplate -> JobFlow
    • JobTemplate -> generated Job
    • PodGroup -> Queue

Clean Up Test Resources

kubectl delete -f test-files/deploy/jobflow.yaml
kubectl delete -f test-files/deploy/jobtemplate-step-b.yaml
kubectl delete -f test-files/deploy/jobtemplate-step-a.yaml
kubectl delete -f test-files/deploy/job-failed.yaml
kubectl delete -f test-files/deploy/job-unschedulable.yaml
kubectl delete -f test-files/deploy/job-completed.yaml
kubectl delete -f test-files/deploy/job-running.yaml
kubectl delete -f test-files/deploy/queue.yaml
kubectl delete -f test-files/deploy/namespace.yaml

Development Commands

npm run start
npm run tsc
npm run lint
npm run build

Feedback and Questions

  • Please open an issue in this repository for bugs, feature requests, or feedback.
  • For Headlamp-wide plugin discussions, you can also use the #headlamp channel in Kubernetes Slack.

References