1

我正在使用 Kubernetes CronJobs 运行管理任务,并且当使用kube-state-metrics生成的作业之一失败时,Prometheus 会发出警报:

kube_job_status_failed{job="kube-state-metrics"}  > 0

我想拥有它,以便当最近的作业通过时,清理失败的作业,以便警报停止触发。

CronJob 资源本身是否支持这种行为?

解决方法是让作业清理失败的作业作为最后一步,或者创建一个更复杂的警报规则以将最近的作业作为最终状态,但它们不是 IMO 最好的解决方案。

Kubernetes 版本:v1.15.1

4

2 回答 2

0

有一个关于清理工作的很棒的 Kubernetes指南。

具体来说,在JobSpec APIttlSecondsAfterFinished中定义。

这应该符合您的要求,IE 如果发生一堆失败的作业,当一个成功时,应该将它们全部删除之前的时间。

于 2019-10-21T05:11:11.657 回答
0

作为一种解决方法,以下查询将显示 CronJobs 上次完成的作业失败的位置

(max by(owner_name, namespace) (kube_job_status_start_time * on(job_name) group_left(owner_name) ((kube_job_status_succeeded / kube_job_status_succeeded == 1) + on(job_name) group_left(owner_name) (0 * kube_job_owner{owner_is_controller="true",owner_kind="CronJob"}))))
< bool
(max by(owner_name, namespace) (kube_job_status_start_time * on(job_name) group_left(owner_name) ((kube_job_status_failed / kube_job_status_failed == 1) + on(job_name) group_left(owner_name) (0 * kube_job_owner{owner_is_controller="true",owner_kind="CronJob"})))) == 1
于 2019-10-20T19:39:42.037 回答