Karpenter ile EKS node autoscaling: node group olmadan anlık kapasite
Karpenter, EKS kümelerinde node group yönetimi yerine bekleyen podlara göre anlık EC2 kapasitesi sağlar. NodePool, EC2NodeClass, consolidation ve Spot stratejileri.
Karpenter, EKS'te node autoscaling'e farklı bir yaklaşım getiriyor: Cluster Autoscaler'ın aksine node group seviyesinde değil, zamanlanamayan podlar seviyesinde çalışıyor. Bu sayede kapasite kararları önceden yazılmış şablonlara göre değil, gerçek zamanlı talebe göre alınıyor. NodePool kaynağı zamanlama ve disruption politikasını tanımlarken, EC2NodeClass alt yapı ile ilgili AWS detaylarını (subnet, güvenlik grubu, AMI, IAM rolü) yönetiyor; bu ayrım kapasite niyetini bulut altyapısından ayırarak esneklik sağlıyor.
Sistemin asıl değeri günlük işleyişte ortaya çıkıyor: consolidation boş veya az kullanılan node'ları kaldırıp daha uygun boyutlarla değiştirirken, drift mekanizması NodePool veya EC2NodeClass tanımlarından sapan node'ları (örneğin eski AMI kullananları) tespit edip yeniliyor. Ancak consolidation'ın etkinliği tamamen disruption kurallarına bağlı; pod anti-affinity, topology spread ve PodDisruptionBudget gibi ayarlar node'ların birleştirilmesini engelleyebiliyor. Dolayısıyla beklenen tasarruf gerçekleşmiyorsa sorun genellikle Karpenter'da değil, workload politikalarında aranmalı.
Spot instance kullanımı da Karpenter'ın güçlü yönlerinden biri; geniş instance tipi yelpazesinden seçim yapabilme özelliği Spot'u pratik hale getiriyor. Ancak bunun işe yaraması, kesinti durumunda gerçek bir on-demand fallback yolunun tanımlı olmasına bağlı. Sonuç olarak Karpenter, provizyon sürecindeki manuel işi azaltıyor ama instance ailesi, mimari, kapasite tipi ve disruption toleransı gibi kısıtların açıkça tanımlanması gerekliliğini ortadan kaldırmıyor.