Kubernetes: Listet alle Pods und ihre Knoten auf


75

Ich habe 3 Knoten, auf denen alle Arten von Pods ausgeführt werden. Ich möchte eine Liste von Knoten und Pods erstellen, zum Beispiel:

NODE1 POD1
NODE1 POD2
NODE2 POD3
NODE3 POD4

Wie kann dies bitte erreicht werden?

Vielen Dank.


kubectl get pod --all-namespaces -o json | jq '.items[] | .spec.nodeName + " " + .metadata.name'
20.

Antworten:


151

Sie können dies mit benutzerdefinierten Spalten tun :

kubectl get pod -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName --all-namespaces

oder nur:

kubectl get pod -o=custom-columns=NODE:.spec.nodeName,NAME:.metadata.name --all-namespaces

1
Vielen Dank. Das habe ich gesucht. Es funktionierte, musste aber --all-Namespaces zum Befehl hinzufügen, damit Pods angezeigt wurden. ZB:kubectl get pod --all-namespaces -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName
TestTester

3
Ich fand es hilfreich, | sortam Ende des zweiten Befehls hinzuzufügen , damit die Ergebnisse nach Knoten gruppiert werden.
Jwadsack

Dies ist eine hervorragende Antwort, um Pods nach Knoten zu finden und zu gruppieren. Hilfreich bei der Suche, welche Knoten welche Pods enthalten
Joy

1
Die Option -o = wide zeigt standardmäßig auch den Knoten an. kubectl get pods -o=wide
Michael

75

kubectl hat ein einfaches, aber nützliches erweitertes Ausgabeformat, das Sie gerne verwenden können

kubectl get pod -o wide

Während benutzerdefinierte Formate in anderen Antworten gut sind, kann dies eine praktische Verknüpfung sein.


Dies ist so viel einfacher als der Rest der Antworten.
Dalmiro Granas

Der vollständige Befehl wäre kubectl get pod --all-namespaces -o wide, dies würde alle Details einschließlich der Knoteninformationen geben. Auflisten von Pods für einen bestimmten Namespace kubectl get pod -n YOUR_NAMESPACE -o wide. Hoffe das hilft.
iamabhishek

6

Sie können verwenden, kubectl get pods --all-namespacesum alle Pods aus allen Namespaces kubectl get nodesaufzulisten und um alle Knoten aufzulisten.


OK danke. Während Ihre Befehle funktionieren und ich sie bisher verwendet habe, besteht das Ziel darin, einen einzigen Befehl zu haben, der die Beziehung zwischen Pods und Knoten ausgibt. Hoffe du kannst bitte helfen. Noch einmal Danke!
TestTester

1
Vielleicht hilft dir das hier: kubectl bekommt Pods -o breit, aber es werden viele Infos gedruckt.
Dina Bogdan

5

Der folgende Befehl macht mehr oder weniger das, was Sie wollten. Es ist jedoch eher ein jqTrick als ein kubectlTrick:

kubectl get pod --all-namespaces -o json | jq '.items[] | .spec.nodeName + " " + .status.podIP'


Vielen Dank! Nach der Installation von "jq" erhalte ich leider einen "Analysefehler: Ungültiges numerisches Literal in Zeile 1, Spalte 10" mit Ihrem obigen Befehl.
TestTester

Dies gibt nur Knoten 'Namen & Pods' IPs
Amine Zaine

@AmineZaine Ersetzen Sie die .status.podip durchkubectl get pod --all-namespaces -o json | jq '.items[] | .spec.nodeName + " " + .metadata.name'
Adiii

4

Nicht genau so, wie Sie es wollten, weil es viel mehr beschreibt, aber Sie können es verwenden

kubectl describe nodes

Jeder Pod pro Knoten im Cluster wird mit den folgenden Informationen angezeigt

Namespace | Name | CPU-Anfragen | CPU-Limits | Speicheranforderungen | Speichergrenzen


Vielen Dank! Wissen Sie bitte, ob es möglich ist, alle zusätzlichen Informationen zu entfernen und die Details gemäß der obigen Frage in einer vereinfachten Tabelle darzustellen? Noch einmal Danke!
TestTester

1

Dadurch erhalten Sie: "nodeName Namespace Pod" im gesamten Cluster:

kubectl get pods --all-namespaces --output 'jsonpath={range .items[*]}{.spec.nodeName}{" "}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.