Skip to content

Cum să configurezi auto-scaling cu HorizontalPodAutoscaler în Kubernetes

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să configurezi auto. We cover key concepts, practical examples, and best practices.

Problema

Aplicația ta primește trafic variabil și fie ai resurse nefolosite (costuri inutile), fie Pod-urile sunt suprasolicitate și aplicația devine lentă sau indisponibilă.

Soluția Pas cu Pas

1. Creează un Deployment cu resource requests

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web-app
  template:
    metadata:
      labels:
        app: web-app
    spec:
      containers:
      - name: app
        image: nginx
        resources:
          requests:
            cpu: 200m
            memory: 256Mi
          limits:
            cpu: 500m
            memory: 512Mi
kubectl apply -f deployment.yaml

2. Creează un HPA pe bază de CPU

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

Output:

horizontalpodautoscaler.autoscaling/web-app-hpa created

3. Verifică starea HPA

kubectl get hpa -w

Output:

NAME          REFERENCE            TARGETS   MINPODS   MAXPODS   REPLICAS
web-app-hpa   Deployment/web-app   30%/60%   2         10        2

4. HPA pe bază de memorie

spec:
  metrics:
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: 70

5. HPA cu metrici custom

spec:
  metrics:
  - type: Pods
    pods:
      metric:
        name: http_requests_per_second
      target:
        type: AverageValue
        averageValue: 100

6. Simulează încărcare pentru a testa

kubectl run -it --rm load-generator --image=busybox -- sh -c "while true; do wget -q -O- http://web-app; done"

Urmărește scalarea:

kubectl get hpa -w

Prevenție

  • Setează întotdeauna resource.requests pe containere — HPA nu funcționează fără ele.
  • Configurează valori realiste pentru minReplicas și maxReplicas.
  • Folosește behavior pentru a controla viteza de scalare (stabilizare, ramp-up, ramp-down).
  • Monitorizează HPA cu kubectl describe hpa pentru evenimente.

Greșeli Comune

  1. Fără resource requests pe containere — HPA nu poate calcula utilizarea.
  2. Metrici server lipsă — Metrics Server trebuie instalat în cluster.
  3. Target prea mic — HPA scalează prea agresiv; target prea mare — nu scalează la timp.
  4. Instabilitate la scalare — Fără perioadă de stabilizare, HPA fluctuează.
  5. MaxReplici prea mare — Poate duce la costuri neașteptate în cloud.

Exercițiu

Creează un Deployment cu CPU request de 100m, un HPA cu target 50% CPU, generează trafic cu un load generator și observă scalarea automată de la 2 la maximum 5 replici.

FAQ

### Ce este Metrics Server?

Metrics Server este un agregator de metrici de utilizare (CPU, memorie) care colectează date de la fiecare nod. HPA are nevoie de el pentru a funcționa.

Cum instalez Metrics Server?

Rulează kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml.

Pot scala pe baza unor metrici personalizate?

Da, folosind type: Pods (metrici la nivel de Pod) sau type: Object (metrici la nivel de obiect, de ex. HTTP requests de la un Ingress). Ai nevoie de un adapter de metrici (Prometheus Adapter, KEDA).

Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează seamless cu Kubernetes pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro