除了使cronjob清理已完成的作业之外,是否有办法自动删除已完成的作业?如何自动删除完成的Kubernetes作业?
K8s Job Documentation指出完成的作业的预期行为是让他们保持完整状态,直到手动删除。因为我每天通过k8s cronjobs运行数千个工作,而且我不想保留完成的工作。
除了使cronjob清理已完成的作业之外,是否有办法自动删除已完成的作业?如何自动删除完成的Kubernetes作业?
K8s Job Documentation指出完成的作业的预期行为是让他们保持完整状态,直到手动删除。因为我每天通过k8s cronjobs运行数千个工作,而且我不想保留完成的工作。
由于文档“这是由用户删除旧任务”中所述,看到http://kubernetes.io/docs/user-guide/jobs/#job-termination-and-cleanup
我会跑荚基于作业名称和一定条件下做到这一点的清除,从而至少让kubernetes在这里处理您的流程的可用性。您可以为此运行重复性作业(假设您运行kubernetes 1.5)。
简单的方式通过运行一个cron作业来删除它们:
kubectl get jobs --all-namespaces | sed '1d' | awk '{ print $2, "--namespace", $1 }' | while read line; do kubectl delete jobs $line; done
我最近建了一个kubernetes操作符来完成这个任务。
部署完成后,它将监视选定的命名空间并删除完成的作业/窗格,如果它们完成而没有错误/重新启动。
请不要只是发布一些工具或库作为答案。至少在答案中演示[它如何解决问题](http://meta.stackoverflow.com/a/251605)。 –
建议不要分析文本输出。相反,你应该请求一个json,用jq解析它并遍历结果。 –