安排Cron工作永远不会发生?

时间:2019-09-16 09:31:58

标签: kubernetes cron

这是我的CronJob规范的一部分:

kind: CronJob
spec:
    schedule: #{service.schedule}

对于特定环境,已设置cron作业,但我从不希望其运行。我可以在schedule:中写入一些值以使其永远无法运行吗?

我还没有找到所有支持的语法的文档,但我希望能找到类似的东西:

@never@InABillionYears

4 个答案:

答案 0 :(得分:2)

@reboot不保证该作业永远不会运行。实际上,它会始终在引导/重新引导系统时运行,并且可能会发生。每次重新启动cron守护程序时,它也会运行 ,因此您需要依靠系统上的“通常不应该发生” ...

还有更多某些方法可以确保永远不会运行CronJob

    在Kubernetes级别的
  1. 上,通过suspending将其.spec.suspend字段设置为true

您可以使用补丁轻松设置它:

kubectl patch cronjobs <job-name> -p '{"spec" : {"suspend" : true }}'
  1. 在Cron级别。使用基于 crontab 语法未经严格验证的事实的技巧,并设置一个可以确定不会在2月31日发生的日期。 Cron 会接受这一点,因为它不会针对day of the month字段中设置的值检查month。它只要求您在两个字段中分别输入有效数字(分别为1-311-12)。您可以将其设置为:

* * 31 2 *

对于 Cron 来说,这是完全有效的值,但是我们知道这样的日期是不可能的,而且永远不会发生。

答案 1 :(得分:0)

我认为您可以使用@reboot,

请参阅:https://en.wikipedia.org/wiki/Cron

@reboot configures a job to run once when the daemon is started. Since cron is typically never restarted, this typically corresponds to the machine being booted.

答案 2 :(得分:0)

您为什么首先需要将其设为CronJob?如果您不希望它运行,则可以指定一个简单的Jobhttps://kubernetes.io/docs/concepts/workloads/controllers/job/

答案 3 :(得分:-1)

kind: CronJob
spec:
    suspend: true