kubectl list / 删除所有已完成的作业
Posted
技术标签:
【中文标题】kubectl list / 删除所有已完成的作业【英文标题】:kubectl list / delete all completed jobs 【发布时间】:2019-05-01 13:10:45 【问题描述】:我正在寻找一个 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在找工作时可能有哪些字段?
有没有更好的方法来做到这一点?
【问题讨论】:
如果您在 pod 上附加了一个通用标签,您可以使用 #kubectl delete job -l app=myjob 【参考方案1】:列出所有成功的作业可以做的是首先获取所有作业,然后过滤输出:
kubectl get job --all-namespaces | grep "succeeded"
如果要删除所有成功的作业,可以使用以下命令:
kubectl delete job $(kubectl get job -o=jsonpath='.items[?(@.status.succeeded==1)].metadata.name')
【讨论】:
第一个命令不起作用。我们可能有不同的 kubectl 版本。第二个命令工作得很好!谢谢! 第一个命令不像@should_be_working 指出的那样工作。这是因为在默认的kubectl get job
列表中没有将作业状态描述为“成功”的字段。
如果使用 powershell,列出所有成功作业的命令是:kubectl get job --all-namespaces | select-string "succeeded"
【参考方案2】:
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】:你快到了,你可以在下面删除已完成的作业
kubectl delete jobs --field-selector status.successful=1
【讨论】:
太棒了,你有文档说明为什么会这样吗?我只在kubernetes.io/docs/concepts/overview/working-with-objects/… 中发现“支持的字段选择器因 Kubernetes 资源类型而异”,并且鉴于作业在其 yaml 中有status.succeeded: 1
,它不是很直观(尽管它有效)。
有点晚了,但我最终设法找到了这些定义的位置kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/…以上是关于kubectl list / 删除所有已完成的作业的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes:如何从 kubectl 配置中删除集群和上下文?
kubectl (node:7) [MONGODB DRIVER] 警告:当前的服务器发现和监控引擎已被弃用,将在未来版本中删除
Spark 作业在显示所有作业已完成然后失败后重新启动(TimeoutException: Futures timed out after [300 seconds])