kubectl autoscale în Kubernetes (kubectl)

Deployment-uri și scalare kubectl 1.1+ (autoscaling/v2 stabil în 1.23)

Creează un HorizontalPodAutoscaler (HPA) care ajustează automat numărul de replici după consumul de CPU.

Sintaxă comandă
kubectl autoscale deployment/NUME --min=MIN --max=MAX [--cpu-percent=PROC]

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: coloana TARGETS din kubectl get hpa ră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 fiecare kubectl apply vei 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.