Creación de un trabajo de cron
Escenario
Un trabajo cron se ejecuta en una programación repetida. Puede realizar la sincronización de tiempo para todos los nodos activos en un punto de tiempo fijo.
- Solo se ejecuta una vez a la hora especificada.
- Se ejecuta periódicamente a la hora especificada.
El uso típico de un trabajo de cron es el siguiente:
- Programa los trabajos a la hora especificada.
- Crea trabajos para ejecutarse periódicamente, por ejemplo, copia de respaldo de la base de datos y envío de correo electrónico.
Requisitos previos
Se han creado los recursos. Para obtener más información, véase Creación de un nodo.
Uso de la consola de CCE
- Inicie sesión en la consola de CCE.
- Haga clic en el nombre del clúster para ir a la consola del clúster, elija Workloads en el panel de navegación y haga clic en Create Workload en la esquina superior derecha.
- Establezca información básica sobre la carga de trabajo.
Informaciones básicas
- Workload Type: Seleccione Cron Job. Para obtener más información sobre los tipos de carga de trabajo, consulte Overview.
- Workload Name: Introduzca el nombre de la carga de trabajo. Escriba de 1 a 52 caracteres que comiencen con una letra minúscula y terminen con una letra o un dígito. Solo se permiten letras minúsculas, dígitos y guiones (-).
- Namespace: Seleccione el espacio de nombres de la carga de trabajo. El valor predeterminado es default. También puede hacer clic en Create Namespace para crear uno. Para obtener más información, véase Creación de un espacio de nombres.
Configuración del contenedor- Información del contenedor
Se pueden configurar múltiples contenedores en un pod. Puede hacer clic en Add Container a la derecha para configurar varios contenedores para el pod.
- Basic Info: Véase Configuración de información básica del contenedor.
- Lifecycle: Véase Setting Container Lifecycle Parameters.
- Environment Variables: Véase Setting an Environment Variable.
- Image Access Credential: Seleccione la credencial utilizada para acceder al repositorio de imágenes. El valor predeterminado es default-secret. Puede usar default-secret para acceder a las imágenes en SWR. Para obtener más información acerca de default-secret, consulte default-secret.
- GPU graphics card: All está seleccionado de forma predeterminada. La instancia de carga de trabajo se programará en el nodo con el tipo de tarjeta gráfica de GPU especificado.
Horarios
- Concurrency Policy: Se admiten los tres modos siguientes:
- Forbid: No se puede crear un nuevo trabajo antes de completar el trabajo anterior.
- Allow: El trabajo de cron permite trabajos en ejecución simultánea, que se adelantan a los recursos del clúster.
- Replace: Un nuevo trabajo sustituye al anterior cuando es el momento de crear un trabajo pero el anterior no se ha completado.
- Policy Settings: especifica cuándo se ejecuta un nuevo trabajo de cron. La configuración de política en YAML se implementa con las expresiones de cron.
- Un trabajo de cron se ejecuta en un intervalo fijo. La unidad puede ser minuto, hora, día o mes. Por ejemplo, si se ejecuta un trabajo de cron cada 30 minutos y la expresión de cron correspondiente es */30 * * * *, el tiempo de ejecución comienza de 0 en el rango de unidades, por ejemplo, 00:00, 00:30:00, 01:00:00, y ....
- El trabajo de cron se ejecuta a una hora fija (por mes). Por ejemplo, si se ejecuta un trabajo de cron a las 00:00 del primer día de cada mes, la expresión cron será 0 0 1 */1 * y el tiempo de ejecución será ****-01-01 00:00:00, ****-02-01 00:00:00 y ....
- El trabajo de cron se ejecuta por semana. Por ejemplo, si se ejecuta un trabajo de cron a las 00:00 todos los lunes, la expresión cron será 0 0 * * 1 y el tiempo de ejecución será ****-**-01 00:00:00 on Monday, ****-**-08 00:00:00 on Monday y ....
- Custom Cron Expression: Para obtener detalles sobre cómo usar expresiones de cron, consulte CRON.
- Si un trabajo de cron se ejecuta a una hora fija (por mes) y el número de días en un mes no existe, el trabajo de cron no se ejecutará en este mes. Por ejemplo, la ejecución omitirá febrero si la fecha está establecida en 30.
- Debido a la definición de cron, el período fijo no es un período estricto. El intervalo de unidades de tiempo se divide de 0 por período. Por ejemplo, si la unidad es minuto, el valor varía de 0 a 59. Si el valor no se puede dividir exactamente, se restablece el último período. Por lo tanto, un período exacto puede representarse solo cuando el período puede dividirse uniformemente.
Tome un trabajo de cron que se ejecuta por hora como ejemplo. Como /2, /3, /4, /6, /8 y /12 puede dividir exactamente 24 horas, se puede representar un período preciso. Si se utiliza otro período, el último período se restablecerá al comienzo de un nuevo día. Por ejemplo, si la expresión de cron es * */12 * * *, el tiempo de ejecución es 00:00:00 y 12:00:00 todos los días. Si la expresión de cron es * */13 * * *, el tiempo de ejecución es 00:00:00 y 13:00:00 todos los días. A las 00:00 del día siguiente, el tiempo de ejecución se actualiza incluso si el período no alcanza las 13 horas.
- Job Records: Puede establecer el número de trabajos que se ejecutan correctamente o que no se ejecutan. Establezca un límite en 0 corresponde a mantener ninguno de los trabajos después de que terminen.
Configuración avanzada- Labels and Annotations: Véase Etiquetas y anotaciones de pod.
- Haga clic en Create Workload en la esquina inferior derecha.
Uso de kubectl
Un trabajo de cron tiene los siguientes parámetros de configuración:
- .spec.schedule: toma una cadena de formato Cron, por ejemplo, 0 * * * * o @hourly, como el horario de los trabajos a crear y ejecutar.
- .spec.jobTemplate: especifica los trabajos que se van a ejecutar y tiene el mismo esquema que cuando se está Creando un trabajo con kubectl.
- .spec.startingDeadlineSeconds: especifica la fecha límite para iniciar un trabajo.
- .spec.concurrencyPolicy: especifica cómo tratar las ejecuciones simultáneas de un trabajo creado por el trabajo de Cron. The following options are supported:
- Allow (valor predeterminado): permite ejecutar trabajos simultáneamente.
- Forbid: prohíbe las ejecuciones simultáneas, omitiendo la siguiente ejecución si la anterior aún no ha terminado.
- Replace: cancela el trabajo en ejecución y lo reemplaza por uno nuevo.
A continuación se muestra un ejemplo de trabajo de cron, que se guarda en el archivo cronjob.yaml.
apiVersion: batch/v1beta1 kind: CronJob metadata: name: hello spec: schedule: "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: hello image: busybox args: - /bin/sh - -c - date; echo Hello from the Kubernetes cluster restartPolicy: OnFailure
Ejecute el trabajo.
- Cree un trabajo de cron.
kubectl create -f cronjob.yaml
La información que aparecerá en pantalla será similar a la información siguiente:
cronjob.batch/hello created
- Consulte el estado de ejecución del trabajo de cron:
kubectl get cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE hello */1 * * * * False 0 <none> 9s
kubectl get jobs
NAME COMPLETIONS DURATION AGE hello-1597387980 1/1 27s 45s
kubectl get pod
NAME READY STATUS RESTARTS AGE hello-1597387980-tjv8f 0/1 Completed 0 114s hello-1597388040-lckg9 0/1 Completed 0 39s
kubectl logs hello-1597387980-tjv8f
Fri Aug 14 06:56:31 UTC 2020 Hello from the Kubernetes cluster
kubectl delete cronjob hello
cronjob.batch "hello" deleted
Cuando se elimina un trabajo cron, también se eliminan los trabajos y pods relacionados.
Operaciones relacionadas
Después de crear un trabajo de cron, puede realizar las operaciones que aparecen en la lista de Tabla 1.
Operación |
Descripción |
---|---|
Edición de un archivo YAML |
Haga clic en More > Edit YAML junto al nombre del trabajo de cron para editar el archivo YAML del trabajo actual. |
Detener un trabajo de cron |
|
Eliminación de un trabajo de cron |
|