Skip to content
Innovation & Growth

In a Kueue cluster, a pending job may be waiting on policy, not failing

A new Headlamp plugin separates Kueue's admission decision from Pod scheduling, so teams ask the right system first

W
WebPulse Newsroom
AI-assisted · 4 min read
Share on X LinkedIn
In a Kueue cluster, a pending job may be waiting on policy, not failing

Photo: SHOX ART / Pexels

In brief
  • The Kubernetes project describes a pending job in a Kueue-managed cluster as possibly normal: Kueue may still be deciding whether the job can use the requested resources.
  • Two separate systems can hold a job: Kueue's admission decision and the Kubernetes scheduler. Asking the wrong one can send engineers down the wrong path.
  • Ask your platform team who owns queue quota and how fast on-call can tell which system is holding a stuck job.

An engineer submits a job and waits. A minute passes, then another. There may be no Pods, no application logs and nothing to inspect. The natural conclusion is that something is broken. In a cluster managed by Kueue, the Kubernetes project says this can be "completely normal."

That is the idea worth taking from a Kubernetes blog post published on October 14, 2026. A waiting job is often a decision, not a failure. The costly mistake is asking the wrong system to explain it.

Two gatekeepers, two different questions

The post describes two separate checks. Kueue is a job-queueing system for Kubernetes. It decides whether a workload should start now, given queue policy, quota, resource types, admission checks and other waiting work.

The Kubernetes scheduler comes second. Once Kueue admits the job, the scheduler decides which machines can run its Pods.

The post turns this into a plain rule. If Kueue has not admitted the workload, stay with Kueue's resources. If Kueue has admitted it and Pods still sit in Pending, the problem moves to the job, the Pods, the nodes and the scheduler. In our view, teams that skip this split can spend their time reading scheduler events for a job the scheduler has never seen.

How a job gets held

When a job is submitted to a queue, Kueue creates a Workload. That is a record of the job's total resource request and its admission state. Conditions on that record tell the story. One called QuotaReserved shows whether Kueue has set aside capacity. Another called Admitted shows whether the job may resume.

The totals matter. The post gives a job with three Pods, each requesting one CPU. Kueue sees a request for three CPUs, not one. Reading a single Pod's template would understate the demand.

Requests flow through a chain. A LocalQueue is the entry point inside a namespace. It connects to a ClusterQueue, which holds the cluster-level quota and policy. A ResourceFlavor describes a class of compute, such as GPU machines. A Cohort lets several ClusterQueues share unused quota.

3 CPUs, 3 Pod slots
Resources the example job requested
Source: Kubernetes blog, Tracing Kueue Admission with Headlamp (October 14, 2026)
2 CPUs, 2 Pod slots
Nominal quota of the example ClusterQueue
Source: Kubernetes blog, Tracing Kueue Admission with Headlamp (October 14, 2026)

In the post's worked example, the request is larger than the quota. The condition message reports insufficient quota, the LocalQueue is active, and the ClusterQueue offers only two of each. Kueue therefore leaves the job suspended. The post states this is an admission-capacity problem, not evidence that the scheduler failed to find a machine.

What the plugin adds, and what it does not

The Headlamp plugin puts this chain in one interface. A person starts at the Workload, reads its condition message, and follows links through each queue and resource type. The post stresses that the plugin invents no new status. It draws on the same Kubernetes API objects other tools use and lays the related pieces out together.

0.1.0-alpha
Plugin release described
Source: Kubernetes blog, Tracing Kueue Admission with Headlamp (October 14, 2026)

The limits are real. This alpha is read-only. It offers no create, edit, pause, resume or delete flows. Workload owner references appear as text and cannot be clicked. The plugin also relies on the Kubernetes permissions of the identity Headlamp runs as, so access gaps can limit what a person sees. For scripts, exact object output or changes, the authors say command-line tools such as kubectl and kueuectl remain the right choice.

This is one alpha release, not a trend. Its value to a leader is the framing it makes concrete. Queue quota is a policy someone set. A job held by that policy is the system working as configured.

Questions to put to your platform team

The lesson here is that a delay has an owner. When a job waits on quota, the fix is a decision about capacity or priority, and that decision belongs to whoever sets the queues. It is not a debugging task.

Ask who owns each ClusterQueue's quota and how requests for more are handled. Ask whether on-call staff can tell within minutes if a stuck job is waiting on admission or on scheduling. Ask whether the people who investigate have permission to read Kueue resources at all.

Finally, ask whether your runbooks start with the right question. The Kubernetes post puts it simply: first, has Kueue admitted the Workload? A team that asks that first can tell a quota decision from a real fault before anyone starts reading logs.

Produced by the WebPulse Newsroom with AI assistance from the original reporting credited below, and checked against that source by our editorial review. How we use AI.
Original reporting: Kubernetes.

Share this insight