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.

testTester
quelle
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
Nickgryg
quelle
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.

Radek 'Goblin' Pieczonka
quelle
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.

Dina Bogdan
quelle
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'

lang2
quelle
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

Ami Hollander
quelle
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}'
Michael Sinz
quelle