Как очистить неудавшееся задание CronJob порождало задания после прохождения более позднего задания

Я выполняю задачи управления с помощью Kubernetes CronJobs, и Prometheus предупреждает о сбое одного из созданных заданий с помощью kube-state-metrics:

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

Я хочу, чтобы при прохождении более недавнего задания сбойные были очищены, чтобы предупреждение перестало срабатывать.

Поддерживает ли ресурс CronJob такое поведение самостоятельно?

Обходные пути состояли бы в том, чтобы сделать задание очистить неудачные в качестве последнего шага или создать гораздо более сложное правило предупреждений, чтобы принять самое последнее задание в качестве окончательного статуса, но это не самые хорошие решения IMO.

Версия Kubernetes: v1.15.1

2 ответа

Решение

В качестве обходного пути следующий запрос покажет 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

Есть отличное руководство Kubernetes по очистке рабочих мест.

В частности, ttlSecondsAfterFinishedопределенный в JobSpec API.

Это должно сделать то, о чем вы просите, IE. Если происходит куча неудачных заданий, когда одно из них успешно, время до того, как они все должны быть удалены.

Другие вопросы по тегам