AKS集群中kubectl按status.phase=Completed筛选Pod无结果的问题求助
AKS集群中kubectl按status.phase=Completed筛选Pod无结果的问题求助
我目前在使用Kubernetes v1.25.6版本的AKS集群,最近发现有不少Pod处于Completed状态。按照我对K8s的理解,Pod进入这个状态是因为容器内的进程返回了exit 0的退出码,但这些出现Completed状态的Pod,从业务逻辑来说完全不该出现正常退出的情况,这让我很困惑。
之前我还以为,哪怕Pod处于Completed状态,我也可以通过kubectl logs <podname>命令查看它的退出原因,结果执行命令时却收到了“资源无法找到”的提示。无奈之下,我已经打算通过AKS的诊断设置把日志导出到存储账户,看看能不能从那里找到相关的日志数据。
现在我想先把这些Completed状态的Pod清理掉,之前看到有人给出的清理命令是:
kubectl delete pod --field-selector=status.phase==Succeeded
为了先验证筛选范围,我把命令改成了查询形式:
kubectl get pod --field-selector=status.phase==Completed
但执行后却返回了“No resources have been found”,可我直接执行kubectl get pod时,明明能看到近20个处于Completed状态的Pod。
更奇怪的是,我把命令改成筛选Running状态的Pod:
kubectl get pod --field-selector=status.phase==Running
就能正常列出所有运行中的Pod。
想请教一下各位,为什么用status.phase==Completed筛选就没有结果呢?这是AKS集群的问题,还是我用的命令本身就不对?
备注:内容来源于stack exchange,提问作者David Hirst
相关产品推荐
相关产品推荐

