PerfectScale
Kubectl top pod: CPU- und Speicherverbrauch in Kubernetes im Blick behalten
Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.
About Josh Palmer
Head of Content
I'm Josh Palmer, Head of Content at DoiT, where I split my time across multiple business units including DoiT Cloud Intelligence, PerfectScale (Kubernetes cost optimization), and SELECT (Snowflake, Databricks, and BigQuery cost optimization). Before DoiT, I spent four and a half years at OnBoard building content for a board intelligence platform used by 6,000+ organizations, and before that, two years as Content Marketing Manager at Zylo, a SaaS management platform.
My personal pageTLDR: kubectl top pod liefert eine Live-Momentaufnahme des CPU- (Millicores) und Speicherverbrauchs (Mi/Gi) pro Pod, bereitgestellt durch den Metrics Server. Nutzen Sie den Befehl, um ressourcenhungrige Pods aufzuspüren, sortieren Sie mit --sort-by=cpu/--sort-by=memory, schlüsseln Sie den Verbrauch mit --containers pro Container auf und vergleichen Sie die tatsächliche Nutzung mit den konfigurierten Requests/Limits – so erkennen Sie Über- oder Unterprovisionierung, bevor es zu Throttling oder OOM-Kills kommt.
In diesem Artikel:
Was ist kubectl top pod?
Mit dem Befehl kubectl top pod sehen Sie den CPU- und Speicherverbrauch der Pods in Ihrem Kubernetes-Cluster. Er dient als "Live"-Momentaufnahme, mit der Sie ressourcenhungrige Workloads identifizieren oder nachvollziehen können, wie Ihr Horizontal Pod Autoscaler (HPA) seine Entscheidungen trifft.
Voraussetzungen:
Um diesen Befehl zu nutzen, muss der Metrics Server in Ihrem Cluster installiert sein und laufen. Ob er aktiv ist, prüfen Sie, indem Sie im Namespace kube-system nach dem Deployment metrics-server suchen.
Häufig verwendete Befehle:
- Pods im aktuellen Namespace anzeigen:
kubectl top pod - Alle Pods über alle Namespaces hinweg anzeigen:
kubectl top pod -A - Pods in einem bestimmten Namespace anzeigen:
kubectl top pod -n <namespace-name> - Metriken einzelner Container innerhalb von Pods anzeigen:
kubectl top pod --containers - Nach einer bestimmten Ressource sortieren:
kubectl top pod --sort-by=cpuoder--sort-by=memory
So lesen Sie die Ausgabe:
| Spalte | Bedeutung |
|---|---|
| NAME | Der Name des Pods. |
| CPU(cores) | CPU-Nutzung in "Millicores" (m). 1000m entsprechen 1 Core. |
| MEMORY(bytes) | Speichernutzung, üblicherweise in Megabyte (Mi) oder Gigabyte (Gi) angegeben. |
Dieser Beitrag ist Teil einer Artikelserie zum Thema Kubernetes-Performance.
Voraussetzungen für die Nutzung von kubectl top pod
Bevor Sie kubectl top pod verwenden können, muss der Metrics Server im Kubernetes-Cluster installiert sein und laufen. Der Metrics Server sammelt CPU- und Speichernutzungsdaten von den Kubelets auf jedem Node und stellt sie über die Kubernetes Metrics API bereit. Ohne ihn liefert der Befehl einen Fehler wie Metrics API not available.
Ob der Metrics Server installiert ist, prüfen Sie mit:
kubectl get deployment metrics-server -n kube-systemFalls er nicht installiert ist, stellen Sie ihn über das offizielle Kubernetes-Components-Repository bereit:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yamlDer Benutzer, der den Befehl ausführt, benötigt außerdem die Berechtigung, auf Pod-Metriken zuzugreifen. In Clustern mit aktivierter rollenbasierter Zugriffskontrolle (RBAC) muss das Konto Zugriff auf die API metrics.k8s.io haben.
Um zu bestätigen, dass Metriken verfügbar sind, führen Sie folgenden Befehl aus:
kubectl top nodesWerden die Node-Metriken erfolgreich angezeigt, stehen in der Regel auch die Pod-Metriken zur Verfügung.
Grundlegende Syntax von kubectl top pod
Die grundlegende Syntax des Befehls lautet:
kubectl top pod [POD_NAME] [flags]So zeigen Sie die Ressourcennutzung aller Pods im aktuellen Namespace an:
kubectl top podBeispielausgabe:
NAME CPU(cores) MEMORY(bytes)nginx-6d4cf56db6-xk8rt 2m 15Miapi-server-7f89c7d9d 25m 120MiFlags und Optionen:
Metriken für Pods in einem bestimmten Namespace anzeigen:
kubectl top pod -n productionNutzung eines einzelnen Pods anzeigen:
kubectl top pod nginx-6d4cf56db6-xk8rtSie können Pods auch mit gängigen Shell-Tools nach Ressourcenverbrauch sortieren:
kubectl top pod --sort-by=memoryWeitere nützliche Flags:
--containers— Zeigt Metriken für die einzelnen Container innerhalb jedes Pods--all-namespaces— Zeigt Pods über alle Namespaces hinweg--no-headers— Entfernt die Spaltenüberschriften aus der Ausgabe
Beispiel mit Metriken auf Container-Ebene:
kubectl top pod nginx-6d4cf56db6-xk8rt --containersAnwendungsfälle für kubectl top pod
Die folgende Tabelle zeigt, wie Sie gängige Cluster-Aufgaben mit dem Befehl kubectl top pod erledigen.
| Anwendungsfall | Befehl | Hinweise und Tipps |
|---|---|---|
| Ressourcennutzung aller Pods im aktuellen Namespace anzeigen | kubectl top pod |
Zeigt CPU- und Speicherverbrauch aller Pods im aktiven Namespace. |
| Ressourcennutzung von Pods in einem bestimmten Namespace anzeigen | kubectl top pod -n staging |
Mit -n oder --namespace zielen Sie auf einen bestimmten Namespace. |
| Metriken für alle Namespaces anzeigen | kubectl top pod --all-namespaces |
Hilfreich, um ressourcenhungrige Workloads im gesamten Cluster zu identifizieren. |
| Nutzung eines einzelnen Pods anzeigen | kubectl top pod frontend-5f76c7b9d8-rxk92 |
Zeigt Metriken ausschließlich für den angegebenen Pod. |
| Metriken einzelner Container innerhalb eines Pods anzeigen | kubectl top pod frontend-5f76c7b9d8-rxk92 --containers |
Hilft bei Multi-Container-Pods zu erkennen, welcher Container die Ressourcen verbraucht. |
| Metriken auf Container-Ebene für alle Pods anzeigen | kubectl top pod --all-namespaces --containers |
Bietet detaillierte Einblicke in die Container-Ressourcennutzung im gesamten Cluster. |
| Pods nach CPU-Nutzung sortieren | kubectl top pod --sort-by=cpu |
Zeigt die Pods mit dem höchsten CPU-Verbrauch ganz oben in der Ausgabe. |
| Pods nach Speichernutzung sortieren | kubectl top pod --sort-by=memory |
Hilfreich, um speicherintensive Workloads schnell zu identifizieren. |
| Spaltenüberschriften für Skripte oder Automatisierung entfernen | kubectl top pod --no-headers |
Erleichtert die Weiterverarbeitung der Ausgabe mit Tools wie awk, grep oder Skripten. |
| Die ressourcenintensivsten Pods identifizieren | kubectl top pod --sort-by=memory | head |
Kombiniert Sortierung mit Shell-Tools, um nur die Top-Ergebnisse anzuzeigen. |
| Pod-Metriken kontinuierlich überwachen | watch kubectl top pod |
Aktualisiert die Metriken in regelmäßigen Abständen und liefert damit eine nahezu Echtzeit-Sicht auf CPU- und Speichertrends. |
So lesen Sie die Ausgabe von kubectl top pod
Die Ausgabe von kubectl top pod ist eine Momentaufnahme der aktuellen CPU- und Speichernutzung der Pods. Wer die Bedeutung der einzelnen Spalten kennt, kann ressourcenhungrige Workloads leichter identifizieren und Performance-Problemen auf den Grund gehen.
Beispielausgabe:
NAME CPU(cores) MEMORY(bytes)nginx-6d4cf56db6-xk8rt 2m 15Miapi-server-7f89c7d9d 25m 120MiDie Spalten bedeuten:
- NAME — Der Name des Pods
- CPU (cores) — Aktuelle CPU-Nutzung
- MEMORY (bytes) — Aktueller Speicherverbrauch
CPU-Werte werden üblicherweise in Millicores (m) angegeben:
- 1000m entsprechen 1 CPU-Core
- 250m entsprechen 0,25 CPU-Cores
Zum Beispiel:
- 2m bedeutet, dass der Pod nur sehr wenig CPU nutzt
- 500m bedeutet, dass der Pod einen halben CPU-Core beansprucht
Speicherwerte werden in binären Einheiten angezeigt:
- Ki = Kibibyte
- Mi = Mebibyte
- Gi = Gibibyte
Die angezeigten Werte sind aktuelle Nutzungsmetriken, die der Metrics Server erfasst. Es handelt sich nicht um historische Durchschnittswerte – zwischen zwei Befehlsausführungen können sie sich ändern. kubectl top pod eignet sich daher am besten für schnelle operative Prüfungen und nicht für langfristiges Monitoring.
Ausgabe für Container:
Mit dem Flag --containers enthält die Ausgabe Metriken für jeden Container innerhalb des Pods:
kubectl top pod nginx-6d4cf56db6-xk8rt --containersBeispielausgabe:
POD NAME CPU(cores) MEMORY(bytes)nginx-6d4cf56db6-xk8rt nginx 2m 15MiPod-Probleme mit der top-pod-Ausgabe diagnostizieren:
Wenn Sie ungewöhnlichen Ressourcenverbrauch festgestellt haben, vergleichen Sie die tatsächliche Nutzung mit den konfigurierten Requests und Limits. So erkennen Sie, ob Pods korrekt dimensioniert sind oder nachjustiert werden müssen, um Performance und Ressourceneffizienz zu verbessern.
Best Practices für kubectl top pod
Die folgenden Praxistipps helfen Ihnen beim Einsatz des Befehls.
1. Sicherstellen, dass der Metrics Server installiert und funktionsfähig ist
Bevor Sie sich auf kubectl top pod verlassen, prüfen Sie, ob der Metrics Server in Ihrem Cluster installiert ist und einwandfrei funktioniert. Den Status prüfen Sie mit kubectl get deployment metrics-server -n kube-system und einem Blick in die Logs auf Fehler.
Ist der Metrics Server falsch konfiguriert oder nicht funktionsfähig, liefert kubectl top pod möglicherweise unvollständige Daten oder schlägt komplett fehl. Überwachen Sie den Zustand des Metrics Servers regelmäßig, damit die Ressourcenmetriken den aktuellen Zustand Ihrer Workloads widerspiegeln.
Beispiel:
kubectl --namespace=kube-system get deployment metrics-serverAusgabe:
NAME READY UP-TO-DATE AVAILABLE AGEmetrics-server 1/1 1 1 45dMetrikerfassung prüfen:
kubectl top nodesAusgabe:
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%worker-node-1 420m 21% 3120Mi 39%worker-node-2 365m 18% 2875Mi 36%2. Immer den richtigen Namespace prüfen
Kubernetes-Cluster umfassen häufig mehrere Namespaces, jeweils mit unterschiedlichen Workloads oder Umgebungen. Wenn Sie nicht im Default-Namespace arbeiten, geben Sie bei kubectl top pod den richtigen Namespace mit dem Flag -n an.
Wer den Namespace nicht angibt, übersieht schnell Probleme oder zieht falsche Schlüsse zur Ressourcennutzung. So könnte Ihnen etwa eine Ressourcenspitze in einer Staging-Umgebung entgehen, wenn Sie nur den Default-Namespace prüfen.
Beispiel:
kubectl --namespace production top podAusgabe:
NAME CPU(cores) MEMORY(bytes)frontend-76d9c7f7f5-qn9p8 65m 210Mibackend-5c8b7d9f67-jh2wt 220m 580Miredis-0 15m 140Mi3. Nach CPU oder Speicher sortieren, um auffällige Pods schneller zu finden
Durch das Sortieren nach CPU- oder Speichernutzung treten die Pods mit dem höchsten Ressourcenverbrauch sofort hervor. Nutzen Sie --sort-by=cpu oder --sort-by=memory, um die ressourcenintensivsten Pods an den Anfang der Ausgabe zu bringen. Die Analyse der Pods nach Ressourcenverbrauch hilft, Engpässe zu beheben, und unterstützt die Kapazitätsplanung.
Beispiel:
kubectl top pods -n production --sort-by=memoryAusgabe:
NAME CPU(cores) MEMORY(bytes)analytics-worker-7f4b7d5c8d 320m 1850Miapi-server-6b8f4d5f4d 140m 720Mifrontend-76d9c7f7f5 60m 220Mi4. Nutzung mit Requests und Limits abgleichen
Um die Ressourcenmetriken richtig zu interpretieren, vergleichen Sie die von kubectl top pod gemeldete tatsächliche Nutzung mit den in den Pod-Spezifikationen definierten Requests und Limits. Nähert sich ein Pod häufig seinen Ressourcen-Limits, drohen Throttling oder Eviction. Eine im Verhältnis zu den Requests dauerhaft niedrige Nutzung deutet auf Überprovisionierung hin. Dieser Abgleich hilft Teams, Ressourcenzuweisungen anzupassen und Probleme wie OOMKills oder CPU-Throttling zu vermeiden.
Beispiel:
Aktuelle Nutzung anzeigen:
kubectl -n production top pod api-server-6b8f4d5f4dAusgabe:
NAME CPU(cores) MEMORY(bytes)api-server-6b8f4d5f4d 850m 920MiKonfigurierte Ressourcen prüfen:
kubectl -n production describe pod api-server-6b8f4d5f4dAusgabe (Auszug):
Limits: cpu: 1 memory: 1GiRequests: cpu: 500m memory: 512MiIn diesem Beispiel nähert sich der Pod sowohl dem CPU- als auch dem Speicher-Limit und muss möglicherweise nachjustiert werden.
5. Labels für Prüfungen auf Workload-Ebene nutzen
Mit Kubernetes-Labels lassen sich Pods nach Anwendung, Umgebung oder eigenen Schlüsseln filtern und gruppieren. Kombinieren Sie kubectl top pod mit dem Flag -l, um die Ressourcennutzung eines bestimmten Workloads, Teams oder Microservices zu überwachen.
Beispiel:
Pods mit einem bestimmten Label abrufen:
kubectl -n production get pods -l app=webAusgabe:
NAME READY STATUSweb-6d7f9d8f8b-7xt2m 1/1 Runningweb-6d7f9d8f8b-kq4pn 1/1 RunningRessourcennutzung dieser Pods prüfen:
kubectl top pod -n production | grep webAusgabe:
web-6d7f9d8f8b-7xt2m 35m 120Miweb-6d7f9d8f8b-kq4pn 42m 135MiSo können Betriebsteams den Ressourcenverbrauch einer bestimmten Anwendung oder eines Dienstes schnell bewerten, ohne nicht relevante Workloads durchsehen zu müssen.
Kontinuierliches Right-Sizing von Pod-Ressourcen mit PerfectScale
kubectl top pod liefert Ihnen zwar eine Live-Momentaufnahme des CPU- und Speicherverbrauchs – doch daraus die passenden Requests und Limits für Hunderte von Workloads abzuleiten, bleibt eine ständige manuelle Aufgabe. Die Performance-Optimierungslösung von PerfectScale verbessert die Kubernetes-Performance durch autonomes Right-Sizing von Workloads, verhindert Ausfälle und optimiert den Ressourceneinsatz für 99,99 % Verfügbarkeit. So werden aus den Nutzungsmustern, die Sie mit kubectl top pod entdecken, direkt sichere, datenbasierte Konfigurationsänderungen.
Zentrale Funktionen von PerfectScale:
- Automatische Problembehebung: Erkennt und behebt Resilienzrisiken sofort – einschließlich Unterprovisionierung wie OOM, CPU-Throttling und Eviction –, um maximale Verfügbarkeit zu gewährleisten und Latenzen zu eliminieren.
- Autonomes Right-Sizing von CPU und Speicher: Analysiert Ihre Workloads kontinuierlich und passt CPU- und Speicher-Requests und -Limits auf Basis des tatsächlichen Bedarfs an. Das reduziert das Throttling-Risiko, senkt die Cloud-Kosten und behebt genau die Über- und Unterprovisionierung, die Sie mit kubectl top pod aufspüren.
- Härtung der Infrastruktur: Bietet ganzheitliche Transparenz über Ihre Nodes, um Fehlkonfigurationen proaktiv aufzudecken, Node-Überbuchung durch präzise Empfehlungen für Speicher-Limits zu verhindern, Node-Affinitäten und Taints zu validieren und die passendsten Node-Typen für Ihre Pods auszuwählen.
- Priorisierung nach Auswirkung: Behebt kritische Probleme in Echtzeit dank automatischer Priorisierung, richtet das Alerting an Ihren SLAs/SLOs aus, sendet Sofortbenachrichtigungen über Kanäle wie Slack, MS Teams oder Datadog und eskaliert Probleme mit einem Klick in ein Ticket.
Bereit für den Schritt von manuellen Momentaufnahmen zur autonomen Optimierung? Erfahren Sie, wie PerfectScale die Kubernetes-Performance steigert.
FAQ
Warum liefert kubectl top pod die Meldung "Metrics API not available"?
Der Metrics Server ist in Ihrem Cluster nicht installiert oder nicht funktionsfähig. Prüfen Sie dies mit kubectl get deployment metrics-server -n kube-system und installieren Sie ihn bei Bedarf über das offizielle Components-Manifest.
Was bedeutet die Spalte CPU(cores) eigentlich? Sie wird in Millicores (m) angegeben. 1000m entsprechen einem vollen CPU-Core, 250m sind also ein Viertel Core und 2m eine vernachlässigbare CPU-Menge.
Eignet sich kubectl top pod für langfristiges Monitoring?
Nein. Es handelt sich um eine Live-Momentaufnahme des Metrics Servers, nicht um einen historischen Durchschnitt – der Befehl eignet sich daher für schnelle operative Prüfungen, nicht für Trendanalysen. Nutzen Sie für langfristiges Monitoring Prometheus/Grafana oder vergleichbare Tools.
Wie sehe ich Metriken pro Container statt pro Pod?
Fügen Sie das Flag --containers hinzu: kubectl top pod <pod-name> --containers.
Wie finde ich die auffälligsten Pods in einem Namespace?
Mit kubectl top pod -n <namespace> --sort-by=cpu oder --sort-by=memory sortieren Sie die Pods nach Verbrauch, den höchsten zuerst.
Woran erkenne ich, ob ein Pod unter- oder überprovisioniert ist?
Vergleichen Sie die Live-Nutzung aus kubectl top pod mit den konfigurierten Requests und Limits des Pods (sichtbar über kubectl describe pod). Liegt die Nutzung dauerhaft nahe am Limit, besteht das Risiko einer Unterprovisionierung; liegt sie weit unter dem Request, deutet das auf Überprovisionierung hin.