¿Qué debo hacer si no se puede reiniciar una tarea programada después de haber sido detenida durante un período de tiempo?
Si una tarea programada se detiene durante la ejecución, antes de su reinicio, el sistema calcula la diferencia entre la última vez que la tarea se ejecutó con éxito y la hora actual y compara la diferencia de tiempo con el período de tarea programada multiplicado por 100. Si la diferencia de tiempo es mayor que el período multiplicado por 100, la tarea programada no se activará de nuevo. Para obtener más información, consulte Limitaciones de CronJob.
Por ejemplo, supongamos que un trabajo cron está configurado para crear un trabajo cada minuto a partir de las 08:30:00 y que el campo startingDeadlineSeconds no está definido. Si el controlador de trabajo cron deja de ejecutarse de 08:29:00 a 10:21:00, el trabajo no se iniciará debido a la diferencia de tiempo entre 08:29:00 y 10:21:00. 00 supera los 100 minutos, es decir, el número de tiempos de programación perdidos supera los 100 (en el ejemplo, un período de programación es de 1 minuto).
Si se establece el campo startingDeadlineSeconds, el controlador calcula el número de trabajos perdidos en los últimos x segundos (el x indica el valor de startingDeadlineSeconds). Por ejemplo, si startingDeadlineSeconds se establece en 200, el controlador cuenta el número de trabajos perdidos en los últimos 200 segundos. En este caso, si el controlador de trabajo cron deja de ejecutarse de 08:29:00 a 10:21:00, el trabajo comenzará de nuevo a las 10:22:00, porque solo se pierden tres solicitudes de programación en los últimos 200 segundos (en el ejemplo, un periodo de programación es de 1 minuto).
Solución
Configure el parámetro startingDeadlineSeconds en un trabajo cron. Este parámetro solo se puede crear o modificar mediante kubectl o las API.
Ejemplo de YAML:
apiVersion: batch/v1 kind: CronJob metadata: name: hello spec: startingDeadlineSeconds: 200 schedule: "* * * * *" jobTemplate: spec: template: spec: containers: - name: hello image: busybox:1.28 imagePullPolicy: IfNotPresent command: - /bin/sh - -c - date; echo Hello restartPolicy: OnFailure
Si vuelve a crear un trabajo cron, puede evitar temporalmente este problema.
Otros Preguntas frecuentes
- ¿Qué debo hacer si no se puede reiniciar una tarea programada después de haber sido detenida durante un período de tiempo?
- ¿Qué es un servicio sin cabeza cuando creo un StatefulSet?
- ¿Qué debo hacer si se muestra un mensaje de error "Auth is empty" cuando se extrae una imagen privada?
- ¿Por qué no se puede programar un pod en un nodo?
- ¿Qué es la política de extracción de imágenes para contenedores en un clúster de CCE?
- ¿Por qué está desinstalado el punto de montaje de un contenedor Docker en el clúster Kunpeng?
- ¿Qué puedo hacer si falta una capa durante la extracción de imágenes?
- ¿Por qué el permiso de archivo y el usuario en el contenedor son signos de interrogación?
Comentarios
¿Le pareció útil esta página?
Deje algún comentariomore