Ce face kubectl autoscale
Comanda kubectl autoscale creează un obiect HorizontalPodAutoscaler (HPA) care verifică periodic (la fiecare 15 secunde implicit) consumul mediu de CPU al pod-urilor și crește sau scade automat numărul de replici între --min și --max pentru a menține media aproape de pragul --cpu-percent.
Două condiții obligatorii ca autoscalarea să funcționeze: 1) în cluster trebuie să ruleze metrics-server (verifică cu kubectl top pods); 2) containerele din Deployment trebuie să aibă definit resources.requests.cpu, altfel HPA nu poate calcula procentul și va afișa <unknown>/70%.
Pentru scalare după memorie, după metrici custom (de ex. lungimea unei cozi sau cereri pe secundă) ori pentru configurarea vitezei de scale-down (behavior), creează HPA-ul printr-un manifest YAML cu apiVersion: autoscaling/v2.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
--min=N |
Numărul minim de replici pe care HPA îl va păstra mereu pornit. |
--max=M |
Numărul maxim de replici la care are voie să urce (obligatoriu). |
--cpu-percent=P |
Utilizarea medie țintă de CPU ca procent din requests.cpu (ex. 70). |
--name=NUME_HPA |
Numele obiectului HPA creat (implicit același cu al Deployment-ului). |
Exemple
Exemplul 1: Activarea autoscalării între 2 și 10 replici la 70% CPU
Inspectăm apoi starea cu kubectl get hpa.
kubectl autoscale deployment/api --min=2 --max=10 --cpu-percent=70
kubectl get hpa
Ieșire în terminal
horizontalpodautoscaler.autoscaling/api autoscaled
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
api Deployment/api 42%/70% 2 10 3 45s
Greșeli frecvente
- Lipsa câmpului
resources.requests.cpuîn Deployment: coloanaTARGETSdinkubectl get hparămâne<unknown>/70%și HPA nu scalează. - Păstrarea câmpului
spec.replicasîn fișierul YAML al Deployment-ului atunci când ai HPA: la fiecarekubectl applyvei reseta numărul de replici calculat de HPA.
Comenzi înrudite
kubectl scale: Modifică manual numărul de replici al unui Deployment, StatefulSet sau ReplicaSet.kubectl top: Afișează consumul curent de CPU și memorie al nodurilor și pod-urilor.Obiectul Deployment: Gestionează aplicații stateless replicabile: menține numărul de pod-uri, le înlocuiește când cad și face rolling updates.