检查 Kubernetes Pod 状态的 Completed 状态
回答问题 有没有办法检查 pod 状态是否处于已完成状态?我有一个只想使用一次的 Pod(其中 init 容器不能完全满足我的目的),并且想写一个检查以等待 Completed 状态。 我可以在 Running、Pending 中获得它,但在 Completed 中无法获得。 跑步: [user@sandbox gcp_kubernetes_installation]$ kubectl get p
回答问题
有没有办法检查 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.phase 是 Succeeded。
因此,要仅过滤已完成的 pod,您应该使用:
kubectl get pod --field-selector=status.phase=Succeeded
虽然,不建议使用裸豆荚。考虑使用作业控制器:
一个 Job 创建一个或多个 Pod,并确保指定数量的 Pod 成功终止。当 pod 成功完成时,作业会跟踪成功完成。
您可以检查工作条件并等待它们:
kubectl wait --for=condition=complete job/myjob
更多推荐
所有评论(0)