múltiples horarios para una sola tarea en un cronjob de k8s

múltiples horarios para una sola tarea en un cronjob de k8s

Advertencia: K8s novato en este lado.

Necesito ejecutar una tarea que se configurará en un cronjob de k8s. Necesito que se ejecute cada 45 minutos. Tener esto en el scheduleno funciona:

0/45 * * * *

Porque se ejecutaría en X:00, X:45luego, X+1:00en lugar de X+1:30. Por lo tanto, es posible que deba configurar varias reglas de programación:

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

Me pregunto si es posible configurar múltiples horarios en unsolteroDefinición de CronJob o si tendré que configurar varios CronJobs para que cada CronJob se encargue de cada línea.

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

Actualizar: Acabo de leer que es posible tener más de un manifiesto escrito en un solo archivo yaml, por lo que podría funcionar con 3 manifiestos... pero saber si es posible con un solo manifiesto sería fantástico.

Respuesta1

Pruebe */45, porque según el manual 0/45 significa cada dos 45 de 0...

Respuesta2

Si la especificación crontab parece estar incompleta o ambigua, descubrir qué hace realmente puede aclarar la documentación. Todas las pruebas realizadas en Linux Mint 19.3 (en el que crontab es compatible con POSIX).

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

crontab -e ni siquiera permitirá el crontab de una línea anterior. El 0 es un minuto concreto. No tiene sentido omitir eso. Lanza:

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

Contrastar con

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

Acepta esta versión, porque el * representa una lista de 0,1,2,...,59. El salto reduce esto a 0 y 40.

Creé un crontab destinado a demostrar los efectos de las construcciones de rango y paso.

$ 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 es un script de shell que registra el tiempo de ejecución y el valor de los minutos del archivo crontab.

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

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

Instalé el crontab a las 13:35 y registró estas tareas. Dejó de registrar a las 14:59 debido a los valores de las horas 13 y 14, por lo que superó el límite de una hora. Creo que las columnas de horas, día del mes, mes y día de la semana funcionan de manera idéntica, pero una prueba de 90 minutos es suficiente para mí.

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 ~ $ 

información relacionada