回答问题

有没有办法检查 pod 状态是否处于已完成状态?我有一个只想使用一次的 Pod(其中 init 容器不能完全满足我的目的),并且想写一个检查以等待 Completed 状态。

我可以在 Running、Pending 中获得它,但在 Completed 中无法获得。

跑步:

[user@sandbox gcp_kubernetes_installation]$ kubectl get pods --field-selectoru003dstatus.phaseu003dRunning -n mynamespace

名称 就绪 状态 重新开始 年龄

mssql-deployment-795dfcf9f7-l2b44 1/1 运行 0 6m

data-load-pod 1/1 运行 0 5m

待办的:

[user@sandbox gcp_kubernetes_installation]$ kubectl get pods --field-selectoru003dstatus.phaseu003dPending -n mynamespace

名称 就绪 状态 重新开始 年龄

应用部署-0 0/1 待定 0 5m

完全的:

[user@sandbox gcp_kubernetes_installation]$ kubectl 获取 pod -n 命名空间

名称 就绪 状态 重新开始 年龄

mssql-deployment-795dfcf9f7-l2b44 1/1 运行 0 11m

data-load-data-load-pod 0/1 完成 0 10m

应用部署-0 0/1 待定 0 10m

[user@sandbox gcp_kubernetes_installation]$ kubectl get pods --field-selectoru003dstatus.phaseu003dCompleted -n namespace

没有找到资源。

我相信字段选择器中可能存在错误,但只是想知道是否有任何解决方法或解决方法的详细信息。

Answers

已完成 pod 的正确 status.phaseSucceeded

因此,要仅过滤已完成的 pod,您应该使用:

kubectl get pod --field-selector=status.phase=Succeeded

虽然,不建议使用裸豆荚。考虑使用作业控制器:

一个 Job 创建一个或多个 Pod,并确保指定数量的 Pod 成功终止。当 pod 成功完成时,作业会跟踪成功完成。

您可以检查工作条件并等待它们:

kubectl wait --for=condition=complete job/myjob

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐