Description
This issue is for an LXF mentorship project. A paid 12 week program. See https://mentorship.lfx.linuxfoundation.org/project/5ca70394-f568-4bbf-a88d-4e5af8b235cf There you can learn more and apply if interested. Please do not start this issue, as it is reserved for that project.
Karpenter is a dynamic Kubernetes node autoscaler that provisions compute resources in response to real-time workload demands. While Karpenter is powerful, it lacks a native UI for visualizing its autoscaling behavior and managing its custom resources. This plugin will integrate Karpenter-specific insights into Headlamp, leveraging Headlamp’s existing CRD support to provide a focused, user-friendly interface for understanding and managing Karpenter’s decisions.
Expected Outcome:
A Headlamp plugin that provides:
- Visualization of Karpenter Provisioners, NodePools, and NodeClasses, including their constraints and current status.
- Real-time display of scaling decisions, such as which pods triggered provisioning and why.
- A dashboard for pending pods with unmet scheduling requirements, highlighting why they couldn’t be scheduled.
- Integration with Kubernetes events and Karpenter metrics (via Prometheus, if available) to show provisioning latency, node lifecycle events, and cost efficiency.
- A configuration editor for Karpenter CRDs using Headlamp’s existing CRD facilities, with validation and diffing support.
Additional info
- Karpenter was requested: https://kubernetes.slack.com/archives/C01FXB5E8ER/p1731505844846419 Also in that thread is an example of how a NodePool list could work.
- See existing plugins like the Flux headlamp plugin as examples.