2

我想我误解了 Kubernetes CronJobs。在 CKAD 考试中,有一个问题是每分钟运行一次 CronJob,但它应该在任意时间后开始。我没有看到 CronJobs 或 Jobs 的任何属性让它们在特定时间后启动。那应该是 cron 字符串的一部分还是我完全误解了?

4

4 回答 4

1

也许你误解了这个问题,如果它没有在 x 秒内完成,它就是终止工作。您应该使用.spec.activeDeadlineSeconds来满足要求。

于 2021-08-14T02:01:14.627 回答
1

你可以安排你的 CronJob 在特定的日期/时间开始,而不是每分钟运行一次,或者你想设置它。有一个强大的在线工具可以帮助您。例如:

0 0/10 10/1 ? * * *

将安排您的 CronJob 从每天 10 点开始每 10 分钟运行一次。或者:

0 0/10 * ? * 6/1 *

将安排您的 CronJob 从周五开始每 10 分钟运行一次。

使用这种特定方法时要记住的重要一点是要了解集群运行的时区:

所有 CronJobschedule:时间都基于 kube-controller-manager 的时区。

如果您的控制平面在 Pod 或裸容器中运行 kube-controller-manager,则为 kube-controller-manager 容器设置的时区决定了 cron 作业控制器使用的时区。

有关调度的更多信息/示例可以在下面找到:

于 2021-03-01T10:25:51.050 回答
0

你可以做类似的事情

@reboot sleep 60 && script.sh

尽管您没有具体提及启动时间。您还可以将睡眠添加到 crontab。

另一种方法是创建一个 systemd 服务(注意:在安装了 systemd 的系统上)

[Unit]
Description=cronjob with delay
After=(some criteria)

[Service]
Type=oneshot
ExecStart=/pathto/script.sh

[Install]
WantedBy=
于 2021-02-27T18:00:53.447 回答
0

你可以做

sleep "seconds"; echo " * * * * * command" >> path/to/crontab

我觉得这个问题的措辞可能不正确。这可能意味着每个星期六的每一分钟。

 * * * * SAT

或每分钟到几小时

* 9-17 * * *

https://crontab.guru/examples.html

于 2021-02-27T17:56:34.900 回答