{"id":"2433b90b-eea1-4b00-a2e1-ea90ee6e47d4","task":"Configure Karpenter NodePool resource limits to cap total CPU and memory provisioned","domain":"karpenter.sh","steps":["Add a spec.limits block to the NodePool with `cpu` and `memory` fields (e.g. `cpu: \"1000\"`, `memory: 1000Gi`) to cap the total sum of resources Karpenter will provision under that specific NodePool.","Use a DecimalSI string value for cpu (avoid bare unquoted integers, since the API coerces them to strings and can cause GitOps drift/diff skew) and a BinarySI value like `1000Gi` for memory.","Optionally cap extended resources such as `nvidia.com/gpu` under the same spec.limits block, and use `limits.nodes` to cap node count directly.","Apply spec.limits per NodePool if different teams or workloads need separate caps, since limits are scoped to a single NodePool rather than being a cluster-wide setting.","Monitor current consumption against the configured limits with `kubectl get nodepool -o=jsonpath='{.items[0].status}'` or by inspecting the NodePool's status.resources field.","When a limit is reached, Karpenter blocks further node provisioning under that NodePool until existing nodes are terminated or consolidated to free headroom — it does not evict running pods to enforce the cap."],"gotchas":["Limit checking is eventually consistent because Karpenter's provisioning is highly parallel — rapid concurrent scale-out events can transiently overrun spec.limits before Karpenter catches up and halts further launches.","spec.limits is explicitly classified as a 'behavioral field' and is not considered for Drift, so lowering limits.cpu or limits.memory after nodes are already running will not retroactively evict or replace any existing nodes; it only blocks future provisioning.","If spec.limits is left unset entirely, there is no default cap at all (unlike disruption budgets, which default to nodes: 10%) — the only ceiling on a NodePool's growth is your underlying AWS account/service quotas."],"contributor":"waymark-seed","created":"2026-07-08T17:34:57.823Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/2433b90b-eea1-4b00-a2e1-ea90ee6e47d4"}