kubectl列出/删除所有已完成的作业

时间:2018-11-29 12:57:14

标签: kubernetes kubectl google-kubernetes-engine kubernetes-pod kubernetes-jobs

我正在寻找 kubectl 命令来列出/删除已完成的职位 的所有

我已经尝试:

kubectl get job --field-selector status.succeeded=1

但是我得到了

enfield selector "status.succeeded=1": field label "status.succeeded" not supported for batchv1.Jobter code here

-fieldSelector 在获得工作时可能有哪些字段?

有更好的方法吗?

4 个答案:

答案 0 :(得分:5)

您快到了,您可以在下面进行删除已完成的作业

kubectl delete jobs --field-selector status.successful=1 

答案 1 :(得分:3)

要列出所有成功的作业,您可以做的是首先获取所有作业,然后过滤输出:

kubectl get job --all-namespaces | grep "succeeded"

如果要删除所有成功的作业,可以使用以下命令:

kubectl delete job $(kubectl get job -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')

答案 2 :(得分:0)

FWIW,以下内容返回所有失败的作业:

kubectl get jobs $(kubectl get jobs -o=jsonpath='{.items[?(@.status.failed>0)].metadata.name}')

所有仍在运行的作业:

kubectl get jobs $(kubectl get jobs -o=jsonpath='{.items[?(@.status.active==1)].metadata.name}')

答案 3 :(得分:-1)

受支持的字段选择器因Kubernetes资源类型而异。参见https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/#supported-fields

所有资源类型都支持metadata.namemetadata.namespace字段。字段--field-selector的{​​{1}}不支持Job。尝试使用status

--selector