use*_*669 0 kubernetes kubectl
我试图获取所有pod中所有非READY容器的列表,以调试我的集群中的网络问题.
是否可以使用kubectl获取所有容器中所有容器的清单及其状态(READY/..)?
我目前正在使用
$ kubectl get pods
Run Code Online (Sandbox Code Playgroud)
但是,输出可能很大,并且很难知道哪些容器是READY以及哪些容器有问题.
谢谢.
kubectl get pods -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .status.containerStatuses[*]}{.ready}{", "}{end}{end}'
改编自这个文档:https://kubernetes.io/docs/tasks/access-application-cluster/list-all-running-container-images/#list-containers-by-pod
编辑以描述jsonpath正在做什么:
根据我对jsonpath的理解,range会迭代通过获取pod返回的所有.items [*].\n被添加以将结果拆分为每行一个,否则结果将变为一行.要查看其余的工作方式,您应该选择一个pod并运行:
kubectl get pod podname -o yaml
.metadata.name对应
apiVersion: v1
kind: Pod
metadata:
name: podname
Run Code Online (Sandbox Code Playgroud)
类似地,.status.containerStatuses [*]对应于应该位于底部的容器状态列表.