我正在使用带有 Kubernetes v1.25.6 的 AKS,并且我开始看到许多具有“已完成”状态的 Pod。据我所知,这些是在 Pod 正在运行的进程上返回退出 0 代码时生成的,这对于有问题的 Pod 来说毫无意义。我还觉得完成状态允许我使用以下命令:kubectl 日志 podname回顾一下为什么 pod “完成”。
但是,我被告知找不到该资源。因此,我决定使用诊断设置从 AKS 设置登录到存储帐户,看看是否可以从那里找到数据。
所以我的下一步是基本上清理所有已完成的 pod,并且我看到给出了以下命令:
kubectl delete pod --field-selector=status.phase==Succeeded
我将此命令更新为以下内容(查看在交换到删除之前会选择什么)
kubectl get pod --field-selector=status.phase==Completed
然而,尽管 kubectl get pod 命令显示了近 20 个已完成的 pod,但我被告知“未找到资源”。
如果我将命令改为:
kubectl get pod --field-selector=status.phase==Running
我看到了所有正在运行的 Pod。为什么这对已完成的 Pod 不起作用?这是 AKS 问题还是命令不正确?
答案1
因此事实证明“完成”被认为是失败而不是成功,这似乎不太直观,因为完成并不意味着错误或失败。
更改为
kubectl get pod --field-selector=status.phase==Failed
返回受影响的 pod(包括其他“失败”的 pod)。这足以让我进行清理,但不允许我出于其他原因专门单独选择“已完成”,但它尽可能接近我需要的。