k8s cronjob의 단일 작업에 대한 여러 계획

k8s cronjob의 단일 작업에 대한 여러 계획

경고하다: 저는 k8s를 처음 접했습니다.

k8s cronjob에 설정된 작업을 실행해야 합니다. 45분마다 실행해야 합니다. 이것을 넣으면 schedule작동하지 않습니다.

0/45 * * * *

에서 실행되기 때문에 X:00대신 . 따라서 여러 예약 규칙을 설정해야 할 수도 있습니다.X:45X+1:00X+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

매뉴얼에 따르면 0/45는 45일마다 0을 의미하므로 */45를 시도해 보십시오.

답변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는 실행 시간과 분 값을 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분에 로깅이 중지되므로 런타임이 1시간 경계를 초과합니다. 나는 시, 일, 월, 요일 열이 동일한 방식으로 작동한다고 생각하지만 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 ~ $ 

관련 정보