Kubernetes 如何在最近的作业通过后清理失败的CronJob生成的作业

Kubernetes 如何在最近的作业通过后清理失败的CronJob生成的作业,kubernetes,prometheus,kubernetes-cronjob,kube-state-metrics,Kubernetes,Prometheus,Kubernetes Cronjob,Kube State Metrics,我正在使用Kubernetes CronJobs运行管理任务,并让普罗米修斯在其中一个衍生作业失败时使用以下命令发出警报: 我希望这样,当最近的作业通过时,失败的作业将被清除,以便警报停止触发 CronJob资源本身是否支持这种行为 解决方法是将作业清理失败的作业作为最后一步,或者创建一个更复杂的警报规则,将最近的作业作为最终状态,但它们并不是最好的解决方案 Kubernetes版本:v1.15.1作为一种解决方法,以下查询将显示上次完成的作业失败的CronJobs (max by(owner_

我正在使用Kubernetes CronJobs运行管理任务,并让普罗米修斯在其中一个衍生作业失败时使用以下命令发出警报:

我希望这样,当最近的作业通过时,失败的作业将被清除,以便警报停止触发

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

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


Kubernetes版本:
v1.15.1

作为一种解决方法,以下查询将显示上次完成的作业失败的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
(max by(owner\u name,namespace)(kube\u job\u status\u start\u time*on(job\u name)group\u left(owner\u name)((kube\u job\u status\u successed/kube\u job\u status\u successed==1)+on(job\u name)group\u left(owner\u name)(0*kube\u job\u owner\u owner\u is\u controller=“true”,owner\u kind=“CronJob”})
作为一种解决方法,以下查询将显示上次完成的作业失败的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
(max by(owner\u name,namespace)(kube\u job\u status\u start\u time*on(job\u name)group\u left(owner\u name)((kube\u job\u status\u successed/kube\u job\u status\u successed==1)+on(job\u name)group\u left(owner\u name)(0*kube\u job\u owner\u owner\u is\u controller=“true”,owner\u kind=“CronJob”})
在清理工作方面有一个很棒的Kubernetes

具体而言,中定义的
ttlSecondsAfterFinished


这应该符合你的要求,也就是说,如果发生了一堆失败的作业,当一个作业成功时,在它们全部被删除之前的时间

关于清理工作,库伯内特有一个很好的方法

具体而言,中定义的
ttlSecondsAfterFinished


这应该符合你的要求,也就是说,如果发生了一堆失败的作业,当一个作业成功时,在它们全部被删除之前的时间

我确实尝试过这个,不幸的是,它似乎没有优先于
failedJobsHistoryLimit
successfulJobsHistoryLimit
,我需要将其设置为>0才能读取作业状态信息-我猜,由于cronjob处于控制之下,它将清理责任委托给它,但我没有阅读代码。它还需要一个功能标志。我确实尝试过,不幸的是,它似乎没有优先于
FailedJobShisToryLit
SuccessfulJobShisToryLit
,我需要将其设置为>0才能读取作业状态信息。我想,由于cronjob处于控制之下,它将清理责任委托给它,但我还没有读过密码。它还需要一个功能标志