CodeBlanks Logo Icon CodeBlanks

HPA ile ölçekleme

HPA ile otomatik ölçekleme yazarsın.

HPA ile ölçekleme

API, yük arttığında HPA ile ölçeklenir. HPA açıkken Deployment şablonu replicas alanını yazmamalıdır; aksi hâlde her helm upgrade kopya sayısını sıfırlar:

# templates/api-deployment.yaml
spec:
  {{- if not .Values.api.autoscaling.enabled }}
  replicas: {{ .Values.api.replicas }}
  {{- end }}

# templates/api-hpa.yaml
{{- if .Values.api.autoscaling.enabled }}
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: api
spec:
  scaleTargetRef: {apiVersion: apps/v1, kind: Deployment, name: api}
  minReplicas: {{ .Values.api.autoscaling.min }}
  maxReplicas: {{ .Values.api.autoscaling.max }}
  metrics:
    - type: Resource
      resource:
        name: cpu
        target: {type: Utilization, averageUtilization: {{ .Values.api.autoscaling.cpu }}}
{{- end }}

Kaynak istekleri zorunlu

HPA'nın CPU yüzdesini hesaplayabilmesi için API container'ında requests.cpu olmalıdır. İstekler de values'tan gelir:

          resources:
            {{- toYaml .Values.api.resources | nindent 12 }}

# values.yaml
api:
  resources:
    requests: {cpu: 200m, memory: 256Mi}
    limits:   {memory: 512Mi}

toYaml ve nindent, bir değer bloğunu doğru girintiyle şablona yerleştirir.

Uygulama HPA'yı yükselt ve izle

Üç komut yaz: ./magaza'yı magaza release'i olarak magaza namespace'inde, yoksa kurarak, values-prod.yaml ile yükselt; magaza'daki HPA'ları listele; magaza'da app=api etiketli pod'ların kaynak kullanımını göster.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
helm upgrade --install magaza ./magaza -n magaza -f values-prod.yaml
kubectl get hpa -n magaza
kubectl top pods -n magaza -l app=api

Beklenen çıktı

Release "magaza" has been upgraded. Happy Helming!
NAME   REFERENCE        TARGETS        MINPODS   MAXPODS   REPLICAS
api    Deployment/api   cpu: 41%/70%   2         10        2
NAME                  CPU(cores)   MEMORY(bytes)
api-7f8c9d6b5-abcde   82m          201Mi
api-7f8c9d6b5-fghij   79m          198Mi

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 HPA 6 kopyaya çıkardıktan sonra replicas: 1 yazan bir şablonla helm upgrade yapılırsa ne olur?

  • Hiçbir şey olmaz
  • HPA silinir
  • Yükseltme başarısız olur
  • Kopya sayısı kısa süreliğine 1'e düşer, sonra HPA yeniden yükseltir Doğru cevap

Açıklama: Bu ani düşüş yük altında kesintiye yol açar.

2 Koşulu tersine çevir.

Soru
  {{- if ____ .Values.api.autoscaling.enabled }}
  replicas: {{ .Values.api.replicas }}
  {{- end }}
Cevap
  {{- if not .Values.api.autoscaling.enabled }}
  replicas: {{ .Values.api.replicas }}
  {{- end }}

Açıklama: Go şablonlarında olumsuzlama not fonksiyonudur.

3 Eşleştir.

Kavram Anlamı
if not autoscaling replicas yalnızca HPA kapalıyken
toYaml Değeri YAML'a çevir
nindent 12 Yeni satır ve girinti
requests.cpu HPA hesabı için

İleri seviye bölümündeki tüm dersler