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

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

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

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

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

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

Версия Kubernetes: v1.15.1


person dippynark    schedule 20.10.2019    source источник


Ответы (2)


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

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

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

person Dandy    schedule 21.10.2019
comment
Я пробовал это, к сожалению, это не имеет приоритета над failedJobsHistoryLimit или successfulJobsHistoryLimit, которые мне нужно установить ›0, чтобы читать информацию о статусе задания - я предполагаю, что, поскольку cronjob находится под контролем, он вместо этого делегирует ему ответственность за очистку, но Я не читал код. Также требуется флаг функции - person dippynark; 21.10.2019

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