Belajar Karpenter dari dasar hingga production-grade: pre-requisites & setup environment, sejarah & latar belakang, konsep dasar & arsitektur utama, setup & instalasi, 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, migrasi dari Cluster Autoscaler, fitur lanjutan, troubleshooting, performance & tuning, fitur stabil terbaru v1.14, production-ready deployment, hingga ekosistem alternatif & refleksi akhir dengan total 23 episode.
Sebelum menyentuh Karpenter, kita susun fondasi: skill Kubernetes, AWS, kubectl, dan Helm yang wajib dimiliki, lalu menyiapkan lingkungan EKS dengan instalasi Karpenter 1.14.0, IAM role, dan verifikasi controller.

Node autoscaling berevolusi dari provisioning manual menjadi Cluster Autoscaler yang reaktif, lalu Karpenter yang lahir dari AWS pada 2020. Episode ini menelusuri sejarah tersebut dan membedah masalah latensi, biaya, dan kompleksitas yang ingin dipecahkan Karpenter.

Di balik layar, Karpenter adalah controller yang mendengarkan pod tak terjadwalkan, memilih NodePool yang cocok, lalu memanggil cloud provider untuk meluncurkan node. Episode ini membedah arsitektur, NodePool, NodeClass, disruption controller, dan label karpenter.sh.

Episode praktik pertama: membuat cluster EKS, memasang CRD dan controller Karpenter lewat Helm, membangun IAM role berprinsip least privilege, lalu memverifikasi instalasi dengan contoh minimal NodePool dan EC2NodeClass.

NodePool adalah jantung scheduling Karpenter. Episode ini membedah struktur spec.template, requirements, disruption, dan weight, lalu bagaimana Karpenter mencocokkan pod dengan pool dan menandai node yang dibuatnya.

EC2NodeClass mendefinisikan sisi infrastruktur: AMI, security groups, subnets, instance profile, dan userData. Episode ini membahas kustomisasi multi-subnet, tag tambahan, dan kombinasi beberapa NodeClass.

Memahami bagaimana Karpenter memilih instance type terkecil yang muat untuk sekelompok pod lewat binpacking; menyesuaikan spec.template NodePool agar hasil provisioning sesuai kebutuhan; serta mengatur kapasitas Spot dan On-Demand memakai label karpenter.sh/capacity-type dengan strategi fallback antar tipe.

Mempelajari cara Karpenter menjaga cluster tetap efisien dengan disruption budget untuk membatasi node yang boleh diganggu bersamaan; serta consolidation dengan kebijakan WhenEmpty dan WhenUnderutilized untuk menghapus node idle dan menggabungkan workload ke node yang lebih efisien.

Memahami bagaimana constraint scheduling seperti nodeSelector, toleration, topologySpreadConstraints, dan pod anti-affinity menentukan pilihan NodePool; serta cara Karpenter menangani DaemonSet, kube-proxy, CNI, dan pod critical saat melakukan provisioning dan drain.

Mengoptimalkan biaya cluster dengan memprioritaskan Spot, memilih instance family yang efisien, dan menghindari overprovisioning; serta menangani interupsi EC2 Spot dan health events secara otomatis melalui queue processor Karpenter dengan drain dan re-schedule pod.
