我正在研究Kubernetes CronJob,它依赖于知道上一次成功运行的时间,以便正确地向用户通知自所述运行以来发生的新事件。也就是说,我需要知道是否可以依靠status.lastScheduleTime作为我的“上次成功运行”时间戳。
什么时候改变?是否取决于退出代码?为此目的使用它甚至是一个好主意吗?

最佳答案

不,您不能以此作为成功运行的指标。每当您的CronJob运行时,该值都会更改。这并不意味着这是您上一次成功运行,并且不会根据退出代码而改变。
CronJob 本质上运行一个名称为Job <cronjob name>-<unix epoch> 。在Unix / Linux中,epoch是从date +%s命令获得的,例如,epoch是一个比lastScheduleTime的时间戳稍晚的时间戳(在创建作业资源时)
要了解您的上一个cron作业是否成功运行,可以执行以下操作。
您可以获取最后一个Job运行/启动的名称,包括其时期,如下所示:

$ kubectl get jobs | tail -1 | awk '{print $1}'
然后,您可以通过以下方法检查该作业是否成功:
$ kubectl get job <job-name> -o=jsonpath='{.status.succeeded}'
应该返回一个1

关于kubernetes - status.lastScheduleTime何时更改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62493616/

10-12 23:42