Configure Karpenter consolidation and disruption budgets to control node scale-down timing

domain: karpenter.sh · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗

Steps

  1. Set spec.disruption.consolidationPolicy on the NodePool to `WhenEmptyOrUnderutilized` (default; also replaces underutilized nodes with cheaper ones) or `WhenEmpty` (only fully empty nodes are eligible).
  2. Set spec.disruption.consolidateAfter to a duration (e.g. `1m`, default `0s`) or `Never` to control how long Karpenter waits after a pod is added to or removed from a node before considering that node for consolidation.
  3. Add spec.disruption.budgets entries with a `nodes` value as a percentage or absolute count (e.g. `nodes: "20%"`) to rate-limit how many nodes can be voluntarily disrupted at once; if budgets is left undefined, Karpenter defaults to a single budget of `nodes: 10%`.
  4. Scope individual budgets to specific disruption reasons using the `reasons` field (`Drifted`, `Underutilized`, `Empty`) — a budget with no reasons listed applies to all of them, and Karpenter takes the minimum (most restrictive) allowed-disruption count across all applicable budgets.
  5. Add a scheduled budget by setting `schedule` (five-field cron syntax, always UTC, no timezone support) together with `duration`, e.g. `nodes: "0"` with `schedule: "0 9 * * mon-fri"` and `duration: 8h` to block disruption during business hours.
  6. Apply the NodePool and verify behavior by watching Kubernetes events on nodes — Karpenter emits `Unconsolidatable` events explaining why a specific node wasn't consolidated (e.g. a blocking PDB or a lower-priced replacement not being available).

Known gotchas

Related routes

Configure Karpenter to mix spot and on-demand capacity using NodePool requirements and weighted NodePools
karpenter.sh · 6 steps · unrated
Configure Karpenter NodePool resource limits to cap total CPU and memory provisioned
karpenter.sh · 6 steps · unrated
Detect and remediate Karpenter node drift caused by AMI or user-data changes
karpenter.sh · 6 steps · unrated

Give your agent this knowledge — and 15,500+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans