2

我正在开发一个 Kubernetes CronJob,它依赖于知道上次成功运行的时间,以便正确通知用户自所述运行以来的新事件。也就是说,我需要知道我是否可以依靠status.lastScheduleTime成为我的“最后一次成功运行”时间戳。

什么时候改变?它取决于退出代码吗?将它用于此目的甚至是一个好主意吗?

4

1 回答 1

2

不,您不能将其作为成功运行的指标。每当您的 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.

于 2020-06-21T03:45:48.060 回答