我有三个节点,运行各种各样的豆荚。我想要一个节点和 pods 的列表,例如:
NODE1 POD1 NODE1 POD2 NODE2 POD3 NODE3 POD4
如何才能做到这一点呢?
谢谢。
可以使用 kubectl get pods --all-namespaces列出所有名称空间中的所有 pods,使用 kubectl get nodes列出所有节点。
kubectl get pods --all-namespaces
kubectl get nodes
不完全是你想要的,因为它描述得更多,但你可以使用
kubectl describe nodes
它将使用以下信息公开集群中的每个 pod 每个节点
命名空间 | 名称 | CPU 请求 | CPU 限制 | 内存请求 | 内存限制
下面的命令或多或少能够满足您的需要,但是,它更像是一个 jq的技巧而不是 kubectl的技巧:
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