În perioadele de vârf de trafic (de exemplu campanii de Black Friday sau promoții masive), un număr fix de 3 pod-uri poate deveni rapid supraîncărcat, ducând la căderea serviciilor. Pe de altă parte, menținerea permanentă a 20 de pod-uri pe durata nopții risipește inutil mii de euro pe infrastructură cloud.
Mecanismul Horizontal Pod Autoscaler (HPA) monitorizează continuu metricile de consum prin Metrics Server și ajustează dinamic numărul de pod-uri între o limită minimă și una maximă definită de utilizator.
Când consumul mediu de CPU depășește pragul setat (de exemplu 75%), HPA adaugă automat pod-uri noi în câteva secunde; când traficul scade, scade treptat numărul de replici conform politicii de stabilizare (cooldown period), protejând bugetul companiei.
Sintaxă, opțiuni și concepte cheie
| Opțiune / Concept | Descriere practică |
|---|---|
kubectl autoscale deployment ... |
Comanda CLI rapidă pentru crearea unei resurse HPA. |
--min= |
Numărul minim și maxim garantat de pod-uri între care sistemul poate scala. |
--cpu-percent= |
Pragul mediu de încărcare a procesorului care declanșează adăugarea de pod-uri noi. |
behavior.scaleDown.stabilizationWindowSeconds |
Perioada de grație (uzual 300s) ce previne oscilațiile rapide de adăugare/ștergere (flapping). |
Exemple practice și cod
Exemplul 1: Configurarea autoscalării între 2 și 10 pod-uri la atingerea a 70% CPU
Crearea resursei HPA din consolă și verificarea stării.
# 1. Activăm autoscalarea automată pe deploymentul de plăți:
$ kubectl autoscale deployment plati-service --min=2 --max=10 --cpu-percent=70
horizontalpodautoscaler.autoscaling/plati-service autoscaled
# 2. Inspectăm starea HPA-ului în timp real:
$ kubectl get hpa plati-service
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
plati-service Deployment/plati-service 42%/70% 2 10 2 5m
# La creșterea bruscă a traficului, HPA scalează automat la 6 sau 8 replici!
Rezultat & Impact
Reziliență automată la vârfuri de trafic cu optimizarea costurilor pe infrastructură.
Greșeli frecvente și bune practici
- Încercarea de a folosi HPA pe un Deployment unde pod-urile nu au definită secțiunea `resources.requests.cpu`, caz în care HPA nu poate calcula procentul și rămâne în stare `
`. - Setarea unei valori minime de 1 pod pe servicii critice de producție, riscând căderea totală dacă acel pod unic eșuează pe durata unui restart.