k8s cronjob 中單一任務的多個計劃

k8s cronjob 中單一任務的多個計劃

警告: 這邊是k8s新手。

我需要執行一個在 k8s cronjob 中設定的任務。我需要它每 45 分鐘運行一次。將此放在其中schedule不起作用:

0/45 * * * *

因為它會運行於X:00, thenX:45X+1:00不是X+1:30。所以我可能需要設定多個計劃規則:

0,45 0/3 * * *
30   1/3 * * *
15   2/3 * * *

我想知道是否可以在一個計劃中設定多個計劃單身的CronJob 定義,或者我是否必須設定多個 CronJob,以便每個 CronJob 處理每一行。

https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/cron-job-v1/

更新:我剛剛讀到,可以在單一 yaml 檔案中寫入多個清單,因此它可以與 3 個清單一起使用......但是知道是否可以使用單一清單會很棒。

答案1

嘗試 */45,因為根據手冊,0/45 意味著每隔 45 個 0...

答案2

如果 crontab 規範看起來不完整或含糊不清,找出它的真正用途可以澄清文件。所有測試均在 Linux Mint 19.3 上進行(其中 crontab 符合 POSIX 標準)。

0/40 * * * * date >> Cron.log

crontab -e 甚至不允許上面的一行 crontab。 0 是特定的分鐘。跳過它是沒有意義的。它拋出:

"/tmp/crontab.4BQ7AN/crontab":0: bad minute
errors in crontab file, can't install.
Do you want to retry the same edit? (y/n) 

對比

*/40 * * * * date >> Cron.log

它接受這個版本,因為 * 代表 0,1,2,...,59 的清單。跳躍將其減少到 0 和 40。

我寫了一個 crontab 來示範範圍和步驟建構的效果。

$ crontab -l
#.. Crontab to illustrate ranges and steps.

#.. Every 20 mins from 0: 0, 20, 40.
*/20       13,14 * * * ~/Stamp 'Line  4:: */20'

#.. Every 20 minutes from 5: 5, 25, 45.
5-59/20    13,14 * * * ~/Stamp 'Line  7:: 5-59/20'

#.. Every 7 minutes from 9 to 35: 9, 16, 23, 30.
9-35/7     13,14 * * * ~/Stamp 'Line 10:: 9-35/7'

#.. Every 13 minutes from 33 to 59: 33, 46, 59.
33-59/13   13,14 * * * ~/Stamp 'Line 13:: 33-59/13'

#.. Once only.
14-14/2    13,14 * * * ~/Stamp 'Line 16:: 14-14/2'

#.. Once only.
11-59/999  13,14 * * * ~/Stamp 'Line 19:: 11-59/999'

~/Stamp 是一個 shell 腳本,用於記錄其運行時間以及 crontab 檔案中的分鐘值。

$ cat ~/Stamp
#! /bin/bash
#: Stamp: demonstrate crontab processing.

Log="./133000.cronLog"
printf >>"${Log}" '%(%T)T cron time spec %s\n' -1 "${1}"

我在 13:35 安裝了 crontab,它記錄了這些任務。由於 13,14 小時的值,它在 14:59 停止記錄,因此運行時間超過了一個小時邊界。我相信小時、月份、月份和星期幾列的工作方式相同,但 90 分鐘的測試對我來說就足夠了。

paul@paul-RV415-RV515 ~ $ tail -F 133000.cronLog
tail: cannot open '133000.cronLog' for reading: No such file or directory
tail: '133000.cronLog' has appeared;  following new file
13:40:01 cron time spec Line  4:: */20
13:45:01 cron time spec Line  7:: 5-59/20
13:46:01 cron time spec Line 13:: 33-59/13
13:59:01 cron time spec Line 13:: 33-59/13
14:00:01 cron time spec Line  4:: */20
14:05:01 cron time spec Line  7:: 5-59/20
14:09:01 cron time spec Line 10:: 9-35/7
14:11:01 cron time spec Line 19:: 11-59/999
14:14:01 cron time spec Line 16:: 14-14/2
14:16:01 cron time spec Line 10:: 9-35/7
14:20:01 cron time spec Line  4:: */20
14:23:01 cron time spec Line 10:: 9-35/7
14:25:01 cron time spec Line  7:: 5-59/20
14:30:01 cron time spec Line 10:: 9-35/7
14:33:01 cron time spec Line 13:: 33-59/13
14:40:01 cron time spec Line  4:: */20
14:45:01 cron time spec Line  7:: 5-59/20
14:46:01 cron time spec Line 13:: 33-59/13
14:59:01 cron time spec Line 13:: 33-59/13
^C
paul@paul-RV415-RV515 ~ $ 

相關內容