我正在开发一个 Kubernetes CronJob,它依赖于知道上次成功运行的时间,以便正确通知用户自所述运行以来的新事件。也就是说,我需要知道我是否可以依靠status.lastScheduleTime
成为我的“最后一次成功运行”时间戳。
什么时候改变?它取决于退出代码吗?将它用于此目的甚至是一个好主意吗?
我正在开发一个 Kubernetes CronJob,它依赖于知道上次成功运行的时间,以便正确通知用户自所述运行以来的新事件。也就是说,我需要知道我是否可以依靠status.lastScheduleTime
成为我的“最后一次成功运行”时间戳。
什么时候改变?它取决于退出代码吗?将它用于此目的甚至是一个好主意吗?
不,您不能将其作为成功运行的指标。每当您的 CronJob 运行时,该值都会发生变化。这并不意味着这是您最后一次成功运行,并且它不会根据退出代码而改变。
ACronJob
本质上运行 a 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
.