库伯内特: 列出所有的豆荚及其节点

我有三个节点,运行各种各样的豆荚。我想要一个节点和 pods 的列表,例如:

NODE1 POD1
NODE1 POD2
NODE2 POD3
NODE3 POD4

如何才能做到这一点呢?

谢谢。

162104 次浏览

可以使用 kubectl get pods --all-namespaces列出所有名称空间中的所有 pods,使用 kubectl get nodes列出所有节点。

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

kubectl describe nodes

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

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

下面的命令或多或少能够满足您的需要,但是,它更像是一个 jq的技巧而不是 kubectl的技巧:

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

你可以用 自定义列做到这一点:

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

kubectl有一个简单而有用的扩展输出格式,您可以使用

kubectl get pod -o wide

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

这将使您: “ nodeName 名称空间 pod”跨集群:

kubectl get pods --all-namespaces --output 'jsonpath={range .items[*]}{.spec.nodeName}{" "}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}'

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

kubectl get pods -o wide