Kubernetes - 批量删除所有工作

Ove*_*ivr 11 kubernetes kubectl

我可以删除custer运行中的所有作业

kubectl delete jobs --all 
Run Code Online (Sandbox Code Playgroud)

然而,工作被一个接一个地删除,这是相当慢的(约200个工作,我有时间写这个问题,甚至没有完成).

有更快的方法吗?

小智 12

为此bash命令设置别名稍微容易一些:

kubectl delete jobs `kubectl get jobs -o custom-columns=:.metadata.name`
Run Code Online (Sandbox Code Playgroud)


red*_*red 12

有一个更简单的方法可以做到这一点:

要删除成功的作业:

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

要删除失败或长时间运行的作业:

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


hur*_*urk 11

如果您正在使用CronJob并且快速堆积,您可以通过配置文档中描述的作业历史记录限制让kubernetes自动删除它们.从版本1.6开始,这是有效的.

...
  spec:
    ...
    successfulJobsHistoryLimit: 3
    failedJobsHistoryLimit: 3
Run Code Online (Sandbox Code Playgroud)


sur*_*ajd 6

我有一个删除脚本,删除速度非常快:

$ cat deljobs.sh 
set -x

for j in $(kubectl get jobs -o custom-columns=:.metadata.name)
do
    kubectl delete jobs $j &
done
Run Code Online (Sandbox Code Playgroud)

并使用该命令创建在脚本后面使用的200个作业 for i in {1..200}; do ./jobs.sh; done

$ cat jobs.sh 
kubectl run memhog-$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 8 | head -n 1)  --restart=OnFailure --record --image=derekwaynecarr/memhog --command -- memhog -r100 20m
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的回答,我会尽快尝试 (2认同)
  • 使用 `&` 和 >16k 的作业,它会杀死你的计算机 (2认同)

小智 6

这对我来说非常有效:

kubectl delete jobs $(kubectl get jobs -o custom-columns=:.metadata.name)