Karpenter (Kubernetes Autoscaling) Cheat Sheet
Karpenter node autoprovisioning on Kubernetes covering NodePools, NodeClasses, consolidation, and disruption settings.
2 PagesAdvancedMar 4, 2026
NodePool Definition
A NodePool defines constraints Karpenter uses when provisioning nodes.
yaml
apiVersion: karpenter.sh/v1kind: NodePoolmetadata: name: defaultspec: template: spec: requirements: - key: kubernetes.io/arch operator: In values: ["amd64"] - key: karpenter.sh/capacity-type operator: In values: ["spot", "on-demand"] - key: karpenter.k8s.aws/instance-category operator: In values: ["c", "m", "r"] nodeClassRef: group: karpenter.k8s.aws kind: EC2NodeClass name: default expireAfter: 720h limits: cpu: 1000 memory: 1000Gi disruption: consolidationPolicy: WhenEmptyOrUnderutilized consolidateAfter: 1m
EC2NodeClass (AWS)
Cloud-provider-specific node configuration referenced by a NodePool.
yaml
apiVersion: karpenter.k8s.aws/v1kind: EC2NodeClassmetadata: name: defaultspec: amiFamily: AL2023 role: KarpenterNodeRole-my-cluster subnetSelectorTerms: - tags: karpenter.sh/discovery: my-cluster securityGroupSelectorTerms: - tags: karpenter.sh/discovery: my-cluster blockDeviceMappings: - deviceName: /dev/xvda ebs: volumeSize: 50Gi volumeType: gp3 encrypted: true
Debugging & Common kubectl Commands
Inspect Karpenter's decisions and node lifecycle.
bash
# Watch Karpenter controller logskubectl logs -f -n kube-system -l app.kubernetes.io/name=karpenter# List nodes with Karpenter-managed labelskubectl get nodes -L karpenter.sh/nodepool,karpenter.sh/capacity-type# See NodeClaims (Karpenter's abstraction over provisioned instances)kubectl get nodeclaims# Force drain/consolidate a nodekubectl delete node <node-name># Check why a pod is unschedulable (feeds Karpenter's decision)kubectl describe pod <pod-name> | grep -A5 Events
Disruption & Consolidation Settings
Fields controlling when Karpenter removes or replaces nodes.
- consolidationPolicy: WhenEmptyOrUnderutilized- allows Karpenter to consolidate nodes that are empty or running below capacity
- consolidationPolicy: WhenEmpty- only removes fully empty nodes, safer but less cost-efficient
- consolidateAfter- cooldown before Karpenter acts on an underutilized node
- expireAfter- forces node replacement after a max age, useful for AMI rotation
- terminationGracePeriod- max time Karpenter waits for pods to drain before force-terminating a node
- budgets- limits how many nodes can be disrupted concurrently or on a schedule
Pro Tip
Set `karpenter.sh/do-not-disrupt: "true"` as a pod annotation on stateful or batch jobs you never want evicted mid-run — Karpenter's consolidation will otherwise happily terminate underutilized nodes running them.
Was this cheat sheet helpful?
Explore Topics
#KarpenterKubernetesAutoscaling#KarpenterKubernetesAutoscalingCheatSheet#DevOps#Advanced#NodePoolDefinition#EC2NodeClassAWS#DebuggingCommonKubectlCommands#DisruptionConsolidationSettings#Kubernetes#CheatSheet#SkillVeris
Advertisement
Sri Hayavadhana Info-Tech
Professional Web Designing Services
- Responsive Websites
- E-commerce Solutions
- SEO Friendly Design
- Fast & Secure
- Support & Maintenance