Kubernetes:列出所有Pod及其节点


80

我有3个节点,可以运行各种Pod。我想举一个节点和吊舱的列表,例如:

NODE1 POD1
NODE1 POD2
NODE2 POD3
NODE3 POD4

请问如何实现?

谢谢。


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

Answers:


156

您可以使用自定义列来做到这一点:

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

要不就:

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

1
谢谢。这就是我想要的。它可以工作,但是需要在命令中添加--all-namespaces以便显示pod。例如:kubectl get pod --all-namespaces -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName
testTester

3
我发现| sort在第二个命令的末尾添加有助于将结果按节点分组。
jwadsa​​ck

这是按节点查找和分组pod的绝佳答案。有助于查找哪些节点包含哪些吊舱
Joy

1
-o = wide选项也会默认显示节点。kubectl get pods -o=wide
迈克尔

84

kubectl 具有简单但有用的扩展输出格式,您可以像

kubectl get pod -o wide

因此,尽管其他答案中提供的自定义格式很好,但这可能是一个方便的快捷方式。


1
这比其余答案要简单得多。
达米罗·格拉纳斯(Dalmiro Granas)

1
完整的命令将是kubectl get pod --all-namespaces -o wide,这将提供所有详细信息,包括节点信息。列出特定名称空间的Pod kubectl get pod -n YOUR_NAMESPACE -o wide。希望这可以帮助。
iamabhishek

让我的生活变得轻松
Abdullah Danyal

6

您可以kubectl get pods --all-namespaces用来列出所有名称空间中的所有Pod以及kubectl get nodes列出所有节点。


好,谢谢。当您的命令正常工作时,到目前为止,我一直在使用这种命令,目的是只有一个命令来输出pods / nodes关系。希望可以帮到您。再次感谢!
testTester

1
也许这对您有帮助:kubectl的豆荚过宽,但是会打印很多信息。
Dina Bogdan

5

以下命令或多或少地执行了您想要的操作。但是,这jq绝不是kubectl技巧:

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


谢谢!安装“ jq”后,不幸的是,在上面的命令中,我收到“解析错误:第1行第10列的无效数字文字”。
testTester

这仅提供节点的名称和Pod的IP
Amine Zaine

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

4

并非完全如您所愿,因为它描述的更多,但是您可以使用

kubectl describe nodes

它将使用以下信息公开集群中每个节点的每个Pod

命名空间| 姓名| CPU请求| CPU限制| 内存请求| 内存限制


非常感谢!您是否知道是否可以删除所有多余的信息,并根据上面的问题将详细信息显示在简化表中?再次感谢!
testTester

2

这将使您:跨集群的“ nodeName名称空间容器”:

kubectl get pods --all-namespaces --output 'jsonpath={range .items[*]}{.spec.nodeName}{" "}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.