Learn Karpenter from the basics to production-grade: pre-requisites & environment setup, history & background, core concepts & main architecture, setup & installation, NodePool & scheduling, NodeClass (EC2NodeClass), provisioning & binpacking, disruption & consolidation, scheduling constraints, utilization & cost optimization, multi-NodePool & multi-cluster, drift detection, observability & metrics, networking integration, security & IAM, best practice & FinOps, migration from Cluster Autoscaler, advanced features, troubleshooting, performance & tuning, the latest stable features in v1.14, production-ready deployment, up to the alternative ecosystem & final reflection across 23 episodes.
Before touching Karpenter, we lay the foundation: the Kubernetes, AWS, kubectl, and Helm skills you must have, then set up an EKS environment with Karpenter 1.14.0 installation, IAM role, and controller verification.

Node autoscaling evolved from manual provisioning to a reactive Cluster Autoscaler, then to Karpenter, which was born at AWS in 2020. This episode traces that history and breaks down the latency, cost, and complexity problems Karpenter aims to solve.

Behind the scenes, Karpenter is a controller that listens for unscheduled pods, selects a matching NodePool, then calls the cloud provider to launch nodes. This episode breaks down the architecture, NodePool, NodeClass, the disruption controller, and karpenter.sh labels.

The first hands-on episode: create an EKS cluster, install the CRDs and Karpenter controller via Helm, build an IAM role on the least-privilege principle, then verify the installation with minimal NodePool and EC2NodeClass examples.

The NodePool is the heart of Karpenter scheduling. This episode breaks down the structure of spec.template, requirements, disruption, and weight, then how Karpenter matches pods with pools and labels the nodes it creates.

The EC2NodeClass defines the infrastructure side: AMI, security groups, subnets, instance profile, and userData. This episode covers multi-subnet customization, additional tags, and combining multiple NodeClasses.

Understanding how Karpenter picks the smallest instance type that fits a group of pods via binpacking; adjusting the NodePool spec.template so provisioning results match your needs; and managing Spot and On-Demand capacity with the karpenter.sh/capacity-type label and a fallback strategy between types.

Learning how Karpenter keeps a cluster efficient with disruption budgets to limit how many nodes may be disrupted at the same time; and consolidation with the WhenEmpty and WhenUnderutilized policies to remove idle nodes and merge workloads onto more efficient nodes.

Understanding how scheduling constraints like nodeSelector, toleration, topologySpreadConstraints, and pod anti-affinity determine NodePool selection; and how Karpenter handles DaemonSets, kube-proxy, CNI, and critical pods during provisioning and drain.

Optimizing cluster costs by prioritizing Spot, choosing efficient instance families, and avoiding overprovisioning; and handling EC2 Spot interruptions and health events automatically through Karpenter's queue processor with pod drain and re-scheduling.
