100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace

Karpenter (Kubernetes Autoscaling) Cheat Sheet

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
Get a Free Quote

Share this Cheat Sheet