Когда изменится status.lastScheduleTime? - PullRequest
2 голосов
/ 21 июня 2020

Я работаю над Kubernetes CronJob, которое полагается на знание того, когда произошло последнее успешное выполнение, чтобы правильно уведомлять пользователей о новых событиях с момента указанного запуска. Тем не менее, мне нужно знать, могу ли я полагаться на status.lastScheduleTime как на временную метку «последнего успешного выполнения».

Когда это изменится? Это зависит от кодов выхода? Можно ли вообще использовать его для этой цели?

1 Ответ

2 голосов
/ 21 июня 2020

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

A CronJob по сути запускает Job с именем <cronjob name>-<unix epoch>. Эпоха находится в Unix / Linux то, что вы могли бы получить от команды date +%s, например, также эта эпоха является меткой времени, которая немного позже, чем метка времени lastScheduleTime (это когда создается ресурс задания)

Чтобы узнать, успешно ли было выполнено ваше последнее задание cron, вы можете сделать что-то вроде следующего.

Вы можете получить имя последнего запущенного / запущенного задания, включая его эпоху, с помощью что-то вроде этого:

$ kubectl get jobs | tail -1 | awk '{print $1}'

Затем после этого вы можете проверить, успешно ли выполнено задание, с помощью чего-то вроде:

$ kubectl get job <job-name> -o=jsonpath='{.status.succeeded}'

Должен возвращать 1.

...