Kubernetes:列出所有pod及其节点

tes*_*ter 47 kubernetes

我有3个节点,运行各种pod.我想节点一个节点和pod的列表,例如:

NODE1 POD1
NODE1 POD2
NODE2 POD3
NODE3 POD4
Run Code Online (Sandbox Code Playgroud)

怎么能实现这个目标?

谢谢.

Nic*_*lay 84

您可以使用自定义列执行此操作:

kubectl get pod -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName --all-namespaces
Run Code Online (Sandbox Code Playgroud)

要不就:

kubectl get pod -o=custom-columns=NODE:.spec.nodeName,NAME:.metadata.name --all-namespaces
Run Code Online (Sandbox Code Playgroud)

  • 我发现添加`| 很有帮助 sort` 在第二个命令的末尾,以便结果按节点分组。 (4认同)
  • -o=wide 选项也会默认显示节点。```kubectl get pods -o=wide```` (4认同)

Rad*_*nka 41

kubectl有一个简单但有用的扩展输出格式,你可以使用kubectl get pod -o wide,所以虽然在其他答案中提供的自定义格式是好的,这可能是一个方便的快捷方式.

  • 这比其他答案要简单得多。 (5认同)
  • 完整的命令是“kubectl get pod --all-namespaces -o Wide”,这将提供包括节点信息在内的所有详细信息。要列出特定名称空间的 pod,请执行“kubectl get pod -n YOUR_NAMESPACE -o Wide”。希望这可以帮助。 (2认同)

小智 9

也许答案有点旧,现在你可以简单地启动这个:

kubectl get pods -o wide
Run Code Online (Sandbox Code Playgroud)


小智 8

这会让你:整个集群的“nodeName命名空间pod”:

kubectl get pods --all-namespaces --output 'jsonpath={range .items[*]}{.spec.nodeName}{" "}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}'
Run Code Online (Sandbox Code Playgroud)


Din*_*dan 7

您可以使用kubectl get pods --all-namespaces来列出所有命名空间中的所有 pod 并kubectl get nodes列出所有节点。


lan*_*ng2 6

以下命令或多或少地执行您想要的操作。然而,这更像是一个jq技巧而不是kubectl技巧:

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


Ami*_*der 5

不完全是你想要的因为它描述的更多,但你可以使用

kubectl describe nodes

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

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