Karpenter
Buoy detects Karpenter through its two groups: karpenter.sh (NodePool, NodeClaim) and the cloud-provider classes (karpenter.k8s.aws EC2NodeClass, AKSNodeClass, GCENodeClass). When any of these kinds are present, Buoy surfaces dedicated tabs that walk the NodePool, NodeClaim, and Node graph, and the scheduling explainer evaluates per-pool fit.
The sidebar’s cluster-scoped section lists NodePools, NodeClaims, and any NodeClass kinds when present, so you can jump in without typing.
The Karpenter Object Graph
EC2NodeClass ◄── nodeClassRef ── NodePool ── produces ──► NodeClaim ── becomes ──► Node
Karpenter sets two labels Buoy reads everywhere:
karpenter.sh/nodepool=<name>on every NodeClaim and on every Node the claim produces.karpenter.sh/nodeclaim=<name>on the Node, when set.
NodeClaim names usually match the Node name they produce, and the NodeClaim records the exact Node it became.
On a NodePool
The detail view exposes the standard Overview, YAML, Timeline, and Related tabs, plus two fleet tabs:
| Tab | Contents |
|---|---|
| Related | An upstream link to the referenced NodeClass, plus a compact NodeClaims list and a Nodes list. Each section header shows the count, total CPU, and total memory. |
| NodeClaims | A full table of the NodeClaims this pool produced. |
| Nodes | A full table of the Nodes those claims became. |
The Related tab is the right place to glance at fleet health; the NodeClaims and Nodes tabs are for sorting, filtering, and selecting rows to act on. Anything you can do to a Node from its own detail view (cordon, drain, delete) applies through bulk actions on the Nodes tab.
On a NodeClass
EC2NodeClass, AKSNodeClass, and GCENodeClass all use the same renderer. There is no direct label on NodeClaims or Nodes that points at a NodeClass; the link runs through the NodePools that reference it.
| Tab | Contents |
|---|---|
| Related | The NodePools whose node class reference points at this class, plus the combined NodeClaim and Node lists for every matching pool. Empty when nothing references the class. |
| NodeClaims | A full table of the NodeClaims across every pool that references this class. |
| Nodes | The Nodes those claims became. |
If no NodePool references the class, the fleet tabs show an empty state (“no NodePools reference this NodeClass”) rather than the entire cluster’s nodes.
On a NodeClaim
NodeClaim is 1:1 with a Node, so it does not get the fleet tabs. The Related tab links upstream to the parent NodePool and NodeClass, and downstream to the Node it produced.
Pool Requirements
A NodePool’s requirements constrain what nodes it can provision. Buoy renders them in a readable form on the Overview tab:
karpenter.sh/capacity-type in [on-demand, spot]
node.kubernetes.io/instance-type in [m6i.large, m6i.xlarge]
kubernetes.io/arch in [amd64]
karpenter.sh/nodepool not in [reserved]
The same requirements drive the scheduling explainer’s pool-fit verdicts.
Cross-Link from Scheduling
The Pod Scheduling tab’s NodePools sub-tab checks each Karpenter NodePool against the pod’s constraints to estimate whether the pool could provision a fitting node. See scheduling.md for what the verdicts mean and the instance-type caveat on fresh clusters.