HPA și incidentul controlat
Vom produce o degradare repetabilă, o vom observa, apoi vom reveni la configurația normală. Scopul nu este doar să vedem grafice, ci să formulăm și să verificăm o ipoteză.
1. Starea inițială
Într-un terminal păstrați port-forward-ul API:
kubectl port-forward service/ticketing-api -n cc-lab5 8080:80
În alt terminal urmăriți HPA și podurile:
kubectl get hpa,pods -n cc-lab5 --watch
Inspectați decizia HPA:
kubectl describe hpa ticketing-api -n cc-lab5
Observați că utilizarea CPU este raportată ca procent din request-ul de 25m, nu din
capacitatea totală a nodului.
2. Trafic de referință
DURATION=120 CONCURRENCY=8 ./scripts/load.sh
Urmăriți dashboard-ul și notați:
- request rate
- error rate
- p95
- numărul de replici
- CPU pe pod.
3. Activarea incidentului
Fișierul values-incident.yaml introduce:
700 mslatență artificială- probabilitate
0.25pentru răspunsuri503 40 msde lucru CPU pe cerere.
helm upgrade ticketing charts/ticketing \
--namespace cc-lab5 \
--values charts/ticketing/values-lab5.yaml \
--values charts/ticketing/values-incident.yaml \
--wait --timeout 5m
Porniți din nou trafic, cu o concurență mai mare:
DURATION=180 CONCURRENCY=12 ./scripts/load.sh
4. Investigația
Folosiți sursele în această ordine:
Simptomul
În dashboard verificați creșterea p95 și a ratei 5xx. În Prometheus verificați alertele.
Reacția platformei
kubectl get hpa,pods -n cc-lab5
kubectl describe hpa ticketing-api -n cc-lab5
kubectl top pods -n cc-lab5
kubectl get events -n cc-lab5 --sort-by=.metadata.creationTimestamp | tail -n 20
Dovezile din loguri
kubectl logs deployment/ticketing-api -n cc-lab5 --since=5m \
| grep -E '"status":503|"duration_ms"'
Ipoteza
Formulați o explicație care leagă valorile configurate de semnalele observate. De exemplu:
Creșterea latenței și a erorilor a apărut imediat după rollout-ul configurației incident. HPA a adăugat replici din cauza CPU, dar nu a eliminat erorile injectate în fiecare pod.
5. Recuperarea
Eliminați overlay-ul incidentului printr-un nou upgrade cu valorile normale:
helm upgrade ticketing charts/ticketing \
--namespace cc-lab5 \
--values charts/ticketing/values-lab5.yaml \
--wait --timeout 5m
Generați încă un minut de trafic și verificați că rata de erori și latența revin la normal. HPA va reduce replicile numai după fereastra de stabilizare configurată.
Autoscaling-ul poate adăuga capacitate când resursa limitativă este CPU. Nu repară automat o dependență defectă, un bug, erori injectate în toate replicile sau o bază de date saturată.