Kubernetes HPA ile Otomatik Ölçekleme: Yük Altında Pod Sayısını Artırma

Kubernetes HPA ile Otomatik Ölçekleme: Yük Altında Pod Sayısını Artırma

Trafik artışlarında manuel olarak replica sayısını artırmak hem yavaş hem de hata yapmaya açıktır. Kubernetes Horizontal Pod Autoscaler (HPA), CPU kullanımı, bellek tüketimi veya özel metriklere göre Pod sayısını otomatik olarak artırıp azaltır. Bu rehberde HPA'yı sıfırdan yapılandırmayı, Metrics Se

E

Elif Demir

Cloud Solutions Architect

21 Mart 202611 dk okuma0

Trafik artışlarında manuel olarak replica sayısını artırmak hem yavaş hem de hata yapmaya açıktır. Kubernetes Horizontal Pod Autoscaler (HPA), CPU kullanımı, bellek tüketimi veya özel metriklere göre Pod sayısını otomatik olarak artırıp azaltır. Bu rehberde HPA'yı sıfırdan yapılandırmayı, Metrics Server kurulumunu ve üretim ortamı için en iyi uygulamaları ele alıyoruz.

HPA Nasıl Çalışır?

HPA, belirli aralıklarla (varsayılan 15 saniye) Metrics API'den Pod metriklerini sorgular. Mevcut metrik değerini hedef değerle karşılaştırır ve gerekli replica sayısını hesaplar. Formül basittir:

💡 Formül: istenenReplica = ceil(mevcutReplica * (mevcutMetrik / hedefMetrik)). Örneğin 3 Pod %80 CPU kullanıyorsa ve hedef %50 ise: ceil(3 * 80/50) = ceil(4.8) = 5 Pod gerekir.

Metrics Server Kurulumu

HPA'nın çalışması için cluster'da Metrics Server kurulu olmalıdır. Metrics Server, kubelet'lerden CPU ve bellek metriklerini toplar ve Metrics API üzerinden sunar.

terminal
# Metrics Server kur
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

# Kurulumu dogrula
kubectl get deployment metrics-server -n kube-system

# Node ve Pod metriklerini kontrol et
kubectl top nodes
kubectl top pods

CPU Tabanlı HPA Yapılandırması

En yaygın HPA senaryosu CPU kullanımına göre ölçeklemedir. Aşağıdaki örnekte ortalama CPU kullanımı %60'ı aştığında Pod sayısı artırılır, düştüğünde azaltılır.

hpa-cpu.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: web-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web-app
  minReplicas: 2
  maxReplicas: 20
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 60

⚠️ Önemli: HPA'nın çalışması için Deployment'taki container'larda resources.requests.cpu tanımlı olmalıdır. CPU request olmadan HPA yüzde hesaplaması yapamaz ve ölçekleme gerçekleşmez.

Bellek ve Çoklu Metrik ile Ölçekleme

CPU yanında bellek kullanımını da hedef olarak ekleyebilirsiniz. HPA birden fazla metrik tanımlandığında en yüksek replica sayısını seçer.

hpa-multi.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: web-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web-app
  minReplicas: 2
  maxReplicas: 30
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 60
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: 75
  behavior:
    scaleDown:
      stabilizationWindowSeconds: 300
      policies:
      - type: Percent
        value: 10
        periodSeconds: 60
    scaleUp:
      stabilizationWindowSeconds: 30
      policies:
      - type: Percent
        value: 50
        periodSeconds: 60

behavior bölümü ölçekleme hızını kontrol eder. scaleDown.stabilizationWindowSeconds: 300 son 5 dakikadaki en yüksek replica sayısını koruyarak ani düşüşleri önler. scaleUp ise daha agresif ayarlanarak hızlı tepki verir.

HPA En İyi Uygulamaları

  • Resource Requests Doğru Ayarlayın CPU ve bellek request değerleri uygulamanın normal yük altındaki tüketimini yansıtmalıdır. Çok düşük request, gereksiz ölçeklemeye; çok yüksek request, yetersiz ölçeklemeye neden olur.
  • Scale Down Stabilizasyonu Kullanın Varsayılan 300 saniye stabilizasyon penceresi çoğu senaryo için uygundur. Kısa süreli trafik düşüşlerinde gereksiz scale down'ı önler.
  • Readiness Probe Tanımlayın Yeni oluşturulan Pod'lar hazır olmadan trafik almamalıdır. Readiness probe olmadan HPA yeni Pod'ları hemen aktif sayar ve yanıt süreleri artar.
  • HPA ile VPA'yı Aynı Metrikte Kullanmayın Vertical Pod Autoscaler (VPA) ve HPA aynı metriği (CPU) hedeflerse çakışma yaşanır. VPA'yı yalnızca bellek için, HPA'yı CPU için kullanın veya Multidimensional Pod Autoscaler tercih edin.
terminal
# HPA durumunu izle
kubectl get hpa web-app-hpa --watch

# HPA detaylarini gor
kubectl describe hpa web-app-hpa

# Yuk testi ile HPA'yi tetikle
kubectl run load-test --image=busybox --restart=Never -- \
  /bin/sh -c "while true; do wget -qO- http://web-app-service; done"

Kubernetes temel kavramları için Kubernetes Giriş rehberimizi, uygulama dağıtımı için Helm Chart rehberimizi inceleyin. İzleme altyapısı için Prometheus + Grafana rehberimize göz atın. Kubernetes HPA resmi dokümantasyonu ve Metrics Server projesi ek kaynak olarak faydalıdır.

Sıkça Sorulan Sorular

HPA ne kadar hızlı ölçekleme yapar?

HPA varsayılan olarak her 15 saniyede metrikleri kontrol eder. Scale up kararı anında uygulanır ancak yeni Pod'ların hazır olması (image pull + startup) 30 saniye ile birkaç dakika arasında sürebilir.

HPA minReplicas 0 olabilir mi?

Standart HPA'da minReplicas en az 1 olmalıdır. Sıfıra ölçekleme için KEDA (Kubernetes Event-Driven Autoscaling) kullanabilirsiniz. KEDA, kuyruk uzunluğu veya HTTP istek sayısı gibi harici metriklere göre 0'dan ölçekleme destekler.

CPU hedefini yüzde kaç olarak ayarlamalıyım?

Genel öneri %50-70 arasıdır. %50 daha agresif ölçekleme sağlar (daha fazla Pod, daha düşük gecikme), %70 daha maliyet verimlidir. Uygulamanızın yanıt süresi gereksinimlerine göre ayarlayın.

Özel metriklerle HPA kullanabilir miyim?

Evet. Prometheus Adapter veya KEDA ile HTTP istek sayısı, kuyruk derinliği, veritabanı bağlantı sayısı gibi özel metriklere göre ölçekleme yapabilirsiniz. autoscaling/v2 API'si custom ve external metrik türlerini destekler.

Sonuç

Kubernetes HPA, trafik dalgalanmalarına otomatik tepki vererek hem performansı hem de maliyet verimliliğini sağlar. Metrics Server kurulumunu yapın, resource requests değerlerini doğru ayarlayın, scale down stabilizasyonu kullanın ve readiness probe tanımlayın. Özel metrikler gerektiğinde Prometheus Adapter veya KEDA ile HPA'yı genişletin.

Otomatik Ölçeklenen Altyapı

Hosted Cloud bulut sunucuları ile Kubernetes cluster'ınızı trafik artışlarına hazır tutun.

Bulut Sunucu Planlarını İncele →
E

Elif Demir

Cloud Solutions Architect

Kurumsal bulut geçiş projeleri ve hibrit altyapı tasarımı konusunda uzman. AWS, Azure ve özel bulut ortamlarında 8 yıllık deneyime sahiptir.

Yorumlar yakında