kubectl top în Kubernetes (kubectl)

Interogare resurse kubectl 1.8+ (necesită metrics-server)

Afișează consumul curent de CPU și memorie al nodurilor și pod-urilor.

Sintaxă comandă
kubectl top node|pod [NUME] [-n NS | -A] [--containers] [--sort-by=cpu|memory]

Ce face kubectl top

Comanda kubectl top arată consumul actual de CPU (în milicore, m; 1000m = un nucleu) și memorie pentru noduri sau pod-uri. Este echivalentul rapid al comenzii top din Linux, dar la nivel de cluster.

Important: comanda funcționează doar dacă în cluster este instalat metrics-server (sau o altă implementare a API-ului metrics.k8s.io). Fără el vei primi eroarea Metrics API not available. Pe minikube îl activezi cu minikube addons enable metrics-server.

Valorile sunt eșantionate la câteva zeci de secunde și nu păstrează istoric; pentru grafice în timp ai nevoie de un sistem de monitorizare precum Prometheus. Aceleași metrici sunt folosite și de HorizontalPodAutoscaler (vezi kubectl autoscale).

Opțiuni și argumente

Opțiune / Parametru Descriere
node [NUME] Consumul pe noduri, cu procentul din capacitatea alocabilă.
pod [NUME] Consumul pe pod-uri din namespace-ul curent.
-A, --all-namespaces Pod-urile din toate namespace-urile.
--containers Defalcă consumul pe fiecare container din pod.
--sort-by=cpu|memory Sortează descrescător după CPU sau memorie.
-l, --selector=... Filtrează pod-urile după etichete.

Exemple

Exemplul 1: Consumul nodurilor

kubectl top nodes

Ieșire în terminal

NAME            CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
control-plane   212m         10%    1489Mi          38%
worker-1        1340m        67%    3012Mi          78%
worker-2        485m         24%    1876Mi          48%

Exemplul 2: Pod-urile cele mai „flămânde” după memorie

kubectl top pods -A --sort-by=memory | head -5

Ieșire în terminal

NAMESPACE     NAME                                   CPU(cores)   MEMORY(bytes)
shop          redis-0                                18m          612Mi
shop          api-6f9b8d7c4-lm2vd                    402m         488Mi
monitoring    prometheus-server-0                    95m          455Mi
kube-system   kube-apiserver-control-plane           61m          301Mi

Exemplul 3: Eroarea când lipsește metrics-server

Instalează metrics-server din manifestul oficial, apoi așteaptă un minut până apar primele valori.

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

Ieșire în terminal

error: Metrics API not available
serviceaccount/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
...
deployment.apps/metrics-server created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created

Greșeli frecvente

  • Compararea valorilor din top cu cele din describe node: top arată consumul real, iar describe arată rezervările (requests/limits).
  • Pe clustere locale (kind, kubeadm) metrics-server poate eșua din cauza certificatelor kubelet autosemnate; o soluție de test este argumentul --kubelet-insecure-tls, nerecomandat în producție.

Comenzi înrudite

  • kubectl autoscale: Creează un HorizontalPodAutoscaler (HPA) care ajustează automat numărul de replici după consumul de CPU.
  • kubectl describe: Afișează detaliile complete ale unei resurse, inclusiv evenimentele recente asociate.
  • kubectl get: Listează una sau mai multe resurse, într-un tabel sau în format YAML/JSON.