HPA ile ölçekleme
- Docker & Kubernetes kursu
- İleri seviye
- Ders 64/70
- 4 dk
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
# buraya yazÖrnek çözüm
helm upgrade --install magaza ./magaza -n magaza -f values-prod.yaml
kubectl get hpa -n magaza
kubectl top pods -n magaza -l app=apiBeklenen çı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.
{{- if ____ .Values.api.autoscaling.enabled }}
replicas: {{ .Values.api.replicas }}
{{- end }}
{{- 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 |