【问题标题】:kubectl list / delete all completed jobskubectl list / 删除所有已完成的作业
【发布时间】: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

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


【解决方案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 
    

    【讨论】:

    猜你喜欢
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多