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.

Selamat datang di series Belajar Karpenter. Series ini dirancang untuk Platform Engineer, DevOps Engineer, SRE, dan Kubernetes Administrator yang ingin membangun node autoscaling yang cepat, efisien, dan hemat biaya untuk cluster Kubernetes di AWS. Sepanjang series kita akan membahas arsitektur, NodePool dan NodeClass, consolidation, drift detection, hingga deployment ke production.
Episode 0 ini adalah gerbang masuk. Sebelum kalian bisa menjalankan Karpenter, ada dua hal yang harus disiapkan: skill yang menjadi prasyarat dan environment tempat Karpenter berjalan. Kalau keduanya belum lengkap, episode praktik berikutnya akan terasa berat. Karena itu episode ini belum membahas Karpenter secara mendalam — fokusnya memastikan fondasi kalian kokoh dulu.
Karpenter adalah controller yang sadar scheduling dan berinteraksi langsung dengan API Kubernetes serta AWS. Ada tiga kelompok skill yang wajib kalian miliki.
Pahami lifecycle pod — dari Pending, Running, hingga Completed — terutama kondisi Unschedulable yang menjadi pemicu utama Karpenter. Kalian juga harus terbiasa dengan taints dan tolerations serta nodeSelector. Tanpa ketiganya, sulit memahami bagaimana Karpenter memutuskan node seperti apa yang harus dibuat.
Karpenter memanggil AWS API langsung untuk meluncurkan instance. Kalian perlu memahami: EKS sebagai control plane, instance types dan AMI EC2, security groups, subnets di dalam VPC, serta IAM role. Semua konsep ini akan muncul berulang kali — terutama di episode 5 saat membahas EC2NodeClass.
Karpenter dipasang lewat Helm chart dan dikelola lewat kubectl. Kalian juga harus paham bagaimana pod ditolak scheduler ketika tidak ada node yang cocok — misalnya lewat output dari kubectl describe pod. Kebiasaan membaca event dan status inilah yang akan sangat membantu saat men-debug Karpenter.
Tip
Belum yakin dengan taints dan tolerations? Sempatkan menyelesaikan series Belajar Kubernetes di situs ini sebelum melanjutkan. Karpenter sangat bergantung pada pemahaman scheduling, dan kedua konsep itu akan sering muncul dalam contoh NodePool.
Berikut daftar alat yang harus terpasang di mesin lokal kalian.
| Alat | Kegunaan |
|---|---|
| eksctl | Membuat dan mengelola cluster EKS |
| aws CLI | Autentikasi AWS dan inspeksi resource |
| kubectl | Mengelola resource Kubernetes |
| Helm | Memasang chart Karpenter |
| docker | Membangun image workload pengujian |
Verifikasi satu per satu dengan perintah berikut:
eksctl version
aws --version
kubectl version --client
helm version
docker versionPastikan kredensial AWS sudah dikonfigurasi dan memiliki hak untuk membuat EKS, EC2, dan IAM. Jalankan aws sts get-caller-identity untuk memastikan sesi valid sebelum melanjutkan.
Karpenter 1.14.0 mendukung Kubernetes 1.29 sampai 1.36. Buat cluster EKS dengan satu vended nodegroup kecil — nodegroup ini hanya akan menjalankan sistem, sementara workload nanti ditangani oleh Karpenter.
eksctl create cluster \
--name learn-karpenter \
--version 1.32 \
--region ap-southeast-1 \
--nodegroup-name system \
--node-type m5.large \
--nodes 1 \
--managedProses ini biasanya memakan 10-15 menit. Setelah selesai, kubeconfig ter-update otomatis. Verifikasi dengan kubectl cluster-info dan kubectl get nodes sampai semua node berstatus Ready.
Karpenter memerlukan izin untuk meluncurkan instance, membuat security group, dan mengelola resource EC2. Praktik terbaiknya adalah memakai IRSA (IAM Roles for Service Accounts) dengan kebijakan minimal — bukan menyimpan access key AWS di dalam cluster.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:RunInstances",
"ec2:CreateFleet",
"ec2:TerminateInstances",
"ec2:DescribeInstances",
"ec2:DescribeSubnets"
],
"Resource": "*"
}
]
}Setelah kebijakan dibuat, hubungkan ke service account Karpenter dengan eksctl:
eksctl create iamserviceaccount \
--cluster learn-karpenter \
--namespace karpenter \
--name karpenter \
--role-name karpenter-irsa \
--attach-policy-arn arn:aws:iam::ACCOUNT_ID:policy/KarpenterControllerPolicy \
--approveGanti ACCOUNT_ID dengan nomor akun AWS kalian. Terraform atau CloudFormation juga bisa dipakai untuk membuat role ini — kuncinya tetap satu: prinsip least privilege.
Karpenter dipasang lewat Helm chart karpenter yang didistribusikan dari OCI registry di ghcr.io. Chart ini sekaligus memasang CRD NodePool dan EC2NodeClass.
helm upgrade --install karpenter oci://ghcr.io/aws/karpenter/charts/karpenter \
--namespace karpenter \
--create-namespace \
--set serviceAccount.annotations."eks\.amazonaws\.com/role-arn"=arn:aws:iam::ACCOUNT_ID:role/karpenter-irsa \
--version 1.14.0Important
Urutan yang benar: buat IAM role dulu, baru install controller. Karpenter juga membutuhkan security group dan subnet yang bisa ia temui lewat tag discovery, misalnya karpenter.sh/discovery: learn-karpenter. Detail tag ini akan dibahas tuntas di episode 5.
Pastikan controller berjalan dan versinya benar:
kubectl get pods -n karpenter
kubectl logs -n karpenter deployment/karpenter --tail=20Jika sehat, kalian akan melihat pod controller berstatus Running. Cek juga bahwa CRD terdaftar:
kubectl get crd nodepools.karpenter.sh
kubectl get crd ec2nodeclasses.karpenter.k8s.awsTerakhir, siapkan workload pengujian untuk dipakai di episode-episode berikutnya:
kubectl create deployment nginx --image=nginx
kubectl rollout status deployment/nginxEpisode 0 ini membekali kalian dengan fondasi skill dan lingkungan kerja. Kalian sudah mengecek tools lokal, membuat cluster EKS dengan eksctl, membangun IAM role berprinsip least privilege, memasang Karpenter 1.14.0 lewat Helm, dan memverifikasi bahwa controller serta CRD berjalan dengan benar.
Inti yang harus dibawa pulang:
kubectl get pods -n karpenter yang sehat menandakan controller siap bekerja.Di episode 1 kita akan mundur sejenak dan menjawab pertanyaan besar: mengapa Karpenter ada. Kita akan menelusuri sejarah node autoscaling, membandingkan Cluster Autoscaler dengan Karpenter, dan melihat masalah latensi, biaya, serta kompleksitas yang ingin dipecahkan. Sampai jumpa di episode berikutnya!