PerfectScalePerfectScale

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.

Aug 30, 202610 min read
Josh Palmer

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 page

TLDR: 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=cpu oder --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-system

Falls 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.yaml

Der 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 nodes

Werden 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 pod

Beispielausgabe:

NAME CPU(cores) MEMORY(bytes)
nginx-6d4cf56db6-xk8rt 2m 15Mi
api-server-7f89c7d9d 25m 120Mi

Flags und Optionen:

Metriken für Pods in einem bestimmten Namespace anzeigen:

kubectl top pod -n production

Nutzung eines einzelnen Pods anzeigen:

kubectl top pod nginx-6d4cf56db6-xk8rt

Sie können Pods auch mit gängigen Shell-Tools nach Ressourcenverbrauch sortieren:

kubectl top pod --sort-by=memory

Weitere 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 --containers

Anwendungsfä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 15Mi
api-server-7f89c7d9d 25m 120Mi

Die 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 --containers

Beispielausgabe:

POD NAME CPU(cores) MEMORY(bytes)
nginx-6d4cf56db6-xk8rt nginx 2m 15Mi

Pod-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-server

Ausgabe:

NAME READY UP-TO-DATE AVAILABLE AGE
metrics-server 1/1 1 1 45d

Metrikerfassung prüfen:

kubectl top nodes

Ausgabe:

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 pod

Ausgabe:

NAME CPU(cores) MEMORY(bytes)
frontend-76d9c7f7f5-qn9p8 65m 210Mi
backend-5c8b7d9f67-jh2wt 220m 580Mi
redis-0 15m 140Mi

3. 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=memory

Ausgabe:

NAME CPU(cores) MEMORY(bytes)
analytics-worker-7f4b7d5c8d 320m 1850Mi
api-server-6b8f4d5f4d 140m 720Mi
frontend-76d9c7f7f5 60m 220Mi

4. 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-6b8f4d5f4d

Ausgabe:

NAME CPU(cores) MEMORY(bytes)
api-server-6b8f4d5f4d 850m 920Mi

Konfigurierte Ressourcen prüfen:

kubectl -n production describe pod api-server-6b8f4d5f4d

Ausgabe (Auszug):

Limits:
cpu: 1
memory: 1Gi
Requests:
cpu: 500m
memory: 512Mi

In 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=web

Ausgabe:

NAME READY STATUS
web-6d7f9d8f8b-7xt2m 1/1 Running
web-6d7f9d8f8b-kq4pn 1/1 Running

Ressourcennutzung dieser Pods prüfen:

kubectl top pod -n production | grep web

Ausgabe:

web-6d7f9d8f8b-7xt2m 35m 120Mi
web-6d7f9d8f8b-kq4pn 42m 135Mi

So 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.