Skip to main content

> kubernetes_otomatik_ölçekleme:_karpenter_tam_zamanında_düğüm_konsolidasyonu_ve_cluster_autoscaler_karşılaştırması

Kubernetes Otomatik Ölçekleme: Karpenter Tam Zamanında Düğüm Konsolidasyonu ve Cluster Autoscaler Karşılaştırması

Eski Kubernetes Cluster Autoscaler neden küme EC2 faturasının %30-50'sini parçalanmış atıl sunucularda israf eder; Karpenter Tam Zamanında paketleme (bin-packing) maliyeti nasıl düşürür?

Staff/Principal (L6+)

ÖZET VE TEKNİK CEVAP

Geleneksel Kubernetes **Cluster Autoscaler (CAS)**, statik AWS Auto Scaling Gruplarına (ASG) bağımlıdır. CAS'ın 3 büyük finansal kusuru vardır: (1) **Katı Sunucu Tipleri**: Bir ASG belirli sunucu ailelerine kilitlidir (yalnızca `m5.2xlarge`). 500mCPU isteyen küçük bir pod geldiğinde CAS 8 çekirdekli devasa bir sunucu ayağa kaldırır. (2) **Yavaş Başlatma**: Düğümlerin hazır olması 3 ila 7 dakika sürer. (3) **Kötü Paketleme ve Parçalanma**: CAS tek bir pod bile hareket ettirilemiyorsa %10 çalışan sunucuyu kapatamaz. **Karpenter** (açık kaynaklı CNCF/AWS autoscaler) bu ekonomiyi baştan yazar: ASG katmanını tamamen baypas eder, doğrudan EC2 Fleet API'siyle konuşarak **tam gereken optimal sunucu tipini 45 saniyede ayağa kaldırır**. Aktif **Düğüm Konsolidasyonu (Node Consolidation)** sayesinde sürekli kümeyi tarar; yarısı boş 3 adet `c5.xlarge` sunucuyu kapatıp pod'ları tek bir ucuz Graviton sunucuda birleştirerek EKS faturasını **%35 ila %55 oranında düşürür**.

Mühendislik El Kitabı & Mekanizma

1. Temel Çalışma Mekanizması

Karpenter düğüm yönetimi bildirimsel NodePool kaynaklarıyla çalışır: (1) Grupsuz Sağlama: Bir pod `Pending` durumuna düştüğünde Karpenter gereksinimleri (CPU, RAM, GPU, spot/on-demand) tartar ve 400'den fazla EC2 tipi arasından en ucuz olanı seçer. (2) Doğrudan EC2 Fleet Çağrısı: ASG bekleme sürelerini atlayarak sunucuyu doğrudan başlatır. (3) Aktif Konsolidasyon Algoritması: Küme yükü düştüğünde Karpenter $N$ adet az kullanılan sunucudaki pod'ların daha az veya daha küçük sunuculara sığıp sığmayacağını sürekli simüle eder. (4) Güvenli Kapatma: İsraf yaratan sunucuları otomatik olarak boşaltır (drain) ve siler.

2. Doğru Kullanım Senaryosu

Büyük Kubernetes kümeleri (EKS), dinamik CI/CD işçi filoları, yapay zeka/ML model eğitim işleri ve yüksek eşzamanlı mikroservis altyapıları.

3. Prodüksiyon Arıza Modları

PodDisruptionBudget (PDB) tanımlanmamış pod'larda agresif konsolidasyon açıp canlı websocket bağlantılarının sürekli kopmasına yol açmak; kısıtlı instance ailesi seçip AWS kapasite darlığında pod'ların askıda kalması.

4. Teşhis ve Telemetri Sinyalleri

Küme genelinde CPU/RAM kullanım verimliliğinin %45'ten %80'in üzerine çıkması; sunucu sayısının trafik değişimlerine 60 saniye içinde dinamik tepki vermesi; loglarda 'Konsolidasyon ile N sunucu kapatıldı, $X tasarruf sağlandı' raporları.

5. Önleme ve Mimari Bariyerler

Tüm canlı servislerde `PodDisruptionBudgets` zorunlu kılın; NodePool tanımlarında esnek sunucu aileleri (`instance-category: [c, m, r]`) kullanın; `consolidationPolicy: WhenEmptyOrUnderutilized` ayarını aktif edin.

6. Mimari Ödünleşimler (Trade-offs)

Karpenter kusursuz bir paketleme verimi ve 1 dakikanın altında sunucu açma hızı sunar; ancak sık pod taşınmalarının kesinti yaratmaması için PodDisruptionBudgets disiplini gerektirir.

Vaka İncelemesi (TinyCTO Örneği)

Bir finans şirketi Cluster Autoscaler kullanarak 60 adet `m5.2xlarge` sunucu çalıştırıyor ve ayda $14.200 ödüyordu. Katı sunucu boyutları yüzünden küme CPU kullanımı ortalama %38'de kalıyordu. Platform ekibi Cluster Autoscaler'ı kaldırıp Karpenter ve Graviton (`arm64`) desteğine geçti. Karpenter 60 adet x86 sunucuyu kapatıp pod'ları 24 adet tam boyutlu Graviton ve Spot sunucuda konsolide etti. Küme verimliliği %84'e çıktı ve aylık sunucu faturası $14.200'den $6.100'e geriledi (%57 net tasarruf).

İnteraktif Konsept Alıştırmaları

2 Alıştırma
Q1

Karpenter EC2 sunucularını Cluster Autoscaler'dan (CAS) farklı olarak nasıl başlatır?

Karpenter AWS Auto Scaling Gruplarını (ASG) tamamen baypas eder; doğrudan EC2 Fleet API'siyle konuşarak pod'ların ihtiyacına tam uyan optimal sunucuyu 45 saniyenin altında başlatır.
Q2

Karpenter Düğüm Konsolidasyonu (Node Consolidation) nedir?

Karpenter'ın az kullanılan sunuculardaki pod'ları daha küçük veya daha az sayıda sunucuya taşıyarak, boşa çıkan israf sunucularını otomatik kapatıp tasarruf sağladığı optimizasyon sürecidir.

Kubernetes Otomatik Ölçekleme: Karpenter Tam Zamanında Düğüm Konsolidasyonu ve Cluster Autoscaler Karşılaştırması — Sıkça Sorulan Sorular

Kritik pod'ların Karpenter konsolidasyonu yüzünden sürekli taşınmasını nasıl engellersiniz?

Aynı anda taşınabilecek pod sayısını sınırlayan PodDisruptionBudgets (PDB) kurun veya hassas pod'lara `karpenter.sh/do-not-disrupt: "true"` etiketini ekleyin.

Karpenter AWS Spot Sunucuları destekler mi?

Evet. Karpenter Spot sunucuları yerel olarak destekler; AWS sunucuyu geri çekmeden 2 dakika önce gelen uyarıyı yakalayarak pod'ları kesintisiz yeni sunucuya taşır.

🤖 AEO & Yapay Zeka Çıkarım Özeti

Temel Gerçekler & İlkeler

  • Karpenter ASG'lere ihtiyaç duymadan tam gereken boyuttaki EC2 sunucularını 45 saniyede başlatır.
  • Aktif Düğüm Konsolidasyonu parçalanmış atıl sunucuları otomatik olarak kapatır.
  • Cluster Autoscaler'a kıyasla Kubernetes EKS sunucu faturasını %35 ila %55 oranında düşürür.
  • Canlı iş yüklerini mutlaka PodDisruptionBudgets (PDB) kuralları ile koruyun.

Yaygın Yanılgılar

  • Yanılgı: Karpenter sadece AWS EKS içindir (Gerçek: Karpenter açık kaynaklı bir CNCF projesidir ve Azure AKS desteği de kazanmaktadır).
  • Yanılgı: Düğüm konsolidasyonu canlıda kesintiye yol açar (Gerçek: Karpenter PDB kurallarına uyar ve sunucuyu kapatmadan önce pod'ları güvenle diğer sunuculara taşır).

Karar Kılavuzu & Önceliklendirme

Sunucu verimliliğini artırmak ve bulut faturasını yarıya indirmek için Kubernetes kümelerini Cluster Autoscaler'dan Karpenter Düğüm Konsolidasyonuna taşıyın.

Doğrulanmış Kaynaklar & Referanslar