Geleneksel Kubernetes Cluster Autoscaler (CAS), sabit AWS Auto Scaling Groups (ASG) veya statik düğüm gruplarına bağımlıdır. Bekleyen (pending) podlar için yeni bir düğüm ayağa kaldırmak 3 ila 6 dakika sürer ve sabit sunucu tipleri nedeniyle kümedeki CPU ve RAM'in %30-%50'si parçalanmış (fragmented) şekilde israf edilir. Açık kaynaklı Karpenter v1 ise düğüm gruplarını tamamen ortadan kaldırır; podların tam ihtiyacına göre doğrudan bulut API'sinden en ucuz Spot veya On-Demand örneği <45 saniyede ayağa kaldırır. Akıllı konsolidasyon (bin-packing) ile gereksiz düğümleri birleştirerek bulut sunucu faturanızda %45 ila %65 tasarruf sağlayın.
Sabit düğüm grupları yerine podların gerçek CPU/RAM talebine göre anında tam boyutlandırılmış örnekler ayağa kaldırır.
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: default-general-purpose
spec:
template:
spec:
nodeClassRef:
group: karpenter.k8s.aws
kind: EC2NodeClass
name: default
requirements:
# Spot ve On-Demand akıllı karma stratejisi
- key: karpenter.sh/capacity-type
operator: In
values: ["spot", "on-demand"]
# Modern x86_64 ve ARM64 (Graviton) CPU desteği
- key: kubernetes.io/arch
operator: In
values: ["amd64", "arm64"]
# c6i, m6i, r6i, c7g, m7g ailelerinden en ucuzunu seçer
- key: karpenter.k8s.aws/instance-category
operator: In
values: ["c", "m", "r"]
disruption:
# Boşta kalan veya küçülebilecek düğümleri otomatik birleştirir (Bin-Packing)
consolidationPolicy: WhenUnderutilized
consolidateAfter: 30s
limits:
cpu: "1000"
memory: 2000GiKubernetes kümelerini yöneten mühendislik ekiplerinin en büyük maliyet ve performans darboğazlarından biri düğüm ölçeklemesidir. Standart Cluster Autoscaler (CAS) mantığı gereği doğrudan Kubernetes API'sine değil, bulut sağlayıcısının Auto Scaling Group (ASG) mekanizmasına komut gönderir. Bu dolaylı katman nedeniyle:
ASG tetiklenmesi, EC2 örneğinin başlatılması ve Kubelet'in kümeye katılması ortalama 3-6 dakika sürer. Trafik patlamalarında kullanıcılar uzun süre kuyrukta bekler veya 503/504 hataları oluşur. Karpenter ise doğrudan EC2 API çağrısıyla düğümleri <45 saniyede hazır hale getirir.
Sabit düğüm gruplarında (ör. sadece m5.xlarge) 1 çekirdek isteyen küçük bir pod için koskoca sunucu ayağa kalkar. Geri kalan 3 çekirdek boşta kalarak ayda binlerce dolar israfa yol açar. Karpenter, bekleyen tüm podları analiz eder ve en ideal boyuttaki tek bir sunucuyu ayağa kaldırır.
Cluster Autoscaler az kullanılan düğümleri küçültmekte çok tutucudur. Karpenter ise consolidationPolicy: WhenUnderutilized ile boşta kalan podları otomatik olarak diğer düğümlere taşır ve gereksizleşen pahalı sunucuları anında sonlandırır.
amd64 ve arm64 desteği olan podları en ucuz Graviton (c7g/m7g) sunucularına yerleştirir (%20 ek tasarruf).NodePool bildirimsel YAML dosyası yeterlidir.