如何通过kubectl field-selector筛选Pod的READY列状态?
关于用field-selector筛选Pod的READY列的问题
不能用field-selector筛选READY列,原因很直接:
- READY列是kubectl为了展示友好,基于Pod的原生状态数据计算出来的衍生值,并非Kubernetes API定义的Pod资源原生字段。
field-selector仅支持过滤API对象中实际存在的字段(比如metadata.namespace、status.phase这类),没法识别这种计算出来的展示列。
如果需要筛选READY状态的Pod,可以用以下替代方法:
方案1:用grep快速过滤
适合简单场景,比如要找所有容器都就绪(格式为N/N)的Pod:
kubectl get pods --all-namespaces --field-selector=metadata.namespace!=kube-system,metadata.namespace!=monitoring,metadata.namespace!=rtf | grep -E "([0-9]+)/\1"
方案2:用jq精确筛选(需提前安装jq工具)
可以精准匹配容器的就绪状态,输出命名空间和Pod名称:
kubectl get pods --all-namespaces --field-selector=metadata.namespace!=kube-system,metadata.namespace!=monitoring,metadata.namespace!=rtf -o json | jq '.items[] | select([.status.containerStatuses[]?.ready] | all) | .metadata.namespace + "/" + .metadata.name'
内容的提问来源于stack exchange,提问作者michaeldpotter
相关产品推荐
相关产品推荐

