kubectl top pokazuje bieżące zużycie CPU i pamięci w klastrze Kubernetes — albo dla całych węzłów (node), albo dla pojedynczych podów (pod). To twój podstawowy quick look, gdy ktoś dzwoni, że „coś muli”, a ty chcesz w sekundę zobaczyć, kto zżera procesor i RAM, bez odpalania całego Grafany. Uwaga na wstępie: komenda nie działa bez zainstalowanego metrics-server w klastrze — to on zbiera te dane, a kubectl top je tylko czyta.
Składnia i najważniejsze opcje
Podstawowa forma to kubectl top (pod|node) [NAZWA] [flagi]. Bez podania nazwy dostajesz listę wszystkich zasobów danego typu.
-n, --namespace— wskazuje przestrzeń nazw (domyślniedefault); dotyczy tylko podów.-A, --all-namespaces— pokazuje pody ze wszystkich namespace’ów naraz.--containers— rozbija zużycie poda na poszczególne kontenery (tylko dlapod).--sort-by— sortuje wynik po kolumnie, przyjmujecpualbomemory.-l, --selector— filtruje po etykietach, obsługuje=,==i!=.--no-headers— pomija wiersz nagłówka, wygodne przy przetwarzaniu w skrypcie.--sum— dopisuje wiersz z sumą zużycia dla wybranych podów.
Przykłady użycia
kubectl top nodes— pokazuje CPU i pamięć każdego węzła wraz z procentem wykorzystania względem pojemności. Pierwszy strzał, gdy szukasz przeciążonego węzła.kubectl top pods -n produkcja— wypisuje zużycie wszystkich podów w przestrzeniprodukcja.kubectl top pods --all-namespaces --sort-by=memory— zbiera pody z całego klastra i sortuje od najbardziej pamięciożernych. Idealne na polowanie na wyciek pamięci.kubectl top pod nginx-7d9 --containers— rozbija jeden pod na kontenery, żeby zobaczyć, który dokładnie kontener przesadza.kubectl top pods -l app=api --sort-by=cpu— bierze tylko pody z etykietąapp=apii ustawia je wg zużycia CPU.
Częste błędy i pułapki
Najczęstszy zgrzyt to komunikat w stylu „Metrics API not available” albo „error: metrics not available yet”. To prawie zawsze brak metrics-server albo fakt, że dopiero wstał i nie zdążył zebrać próbek (poczekaj 1-2 minuty po starcie poda). Druga sprawa: kubectl top pokazuje realne, chwilowe zużycie, a nie requests ani limits — nie myl tych liczb z tym, co pod ma przydzielone. Pamiętaj też, że --containers i --sum działają wyłącznie dla podów; przy node zostaną zignorowane lub rzucą błąd. I drobiazg: top nie odświeża się jak linuksowy top — to pojedynczy zrzut, więc do podglądu na żywo musisz to zapętlić albo sięgnąć po monitoring.
Powiązane komendy: kubectl describe node, kubectl get pods, kubectl logs, kubectl get –raw /apis/metrics.k8s.io, oraz linuksowe top i htop dla podglądu na samym hoście.