// the find
aws/karpenter-provider-aws
Karpenter is a Kubernetes Node Autoscaler built for flexibility, performance, and simplicity.
Karpenter is AWS's node autoscaler for Kubernetes — it watches for unschedulable pods and provisions right-sized EC2 instances directly, skipping the node-group/ASG abstraction that Cluster Autoscaler relies on. It's for teams running EKS (or self-managed K8s on AWS) who want faster scale-up and tighter bin-packing than Cluster Autoscaler gives them.
Provisions nodes per-pod-requirement instead of picking from a fixed node group, so bin-packing and instance-type selection are actually optimized rather than constrained by pre-defined ASGs. Consolidation logic actively re-evaluates and repacks running workloads onto cheaper nodes, not just scale-up. The CRD API (NodePool, EC2NodeClass, NodeClaim) is genuinely declarative and GitOps-friendly, with CEL validation baked into the CRDs. Test infrastructure is unusually thorough for an infra project — separate e2e suites for scale, soak, upgrade, and version-compatibility testing, not just unit tests.
It's AWS-only by design (this is the provider split from core Karpenter), so there's no portability story if you're multi-cloud — you'd need a different controller per cloud. Operationally it's not simple despite the tagline: you're managing multiple CRDs, IAM permissions for EC2 fleet APIs, and webhook validation, which is a real learning curve for teams used to ASG-based autoscaling. Aggressive consolidation is a known sharp edge — it can evict and reschedule pods more often than teams expect if disruption budgets aren't tuned, causing churn on latency-sensitive workloads. The chart history (going back to 0.1.x) shows a project that's iterated through several breaking API versions (v1alpha, v1beta1, v1), so upgrading across major versions isn't always trivial.