Saltar al contenido

Comprender el backoffLimit en el trabajo de Kubernetes

Solución:

En resumen: es posible que no vea todos los pods creados porque el período de programación en el cronjob es demasiado corto.

Como se describe en la documentación:

Los pods fallidos asociados con el trabajo son recreados por el controlador del trabajo con un retraso de retroceso exponencial (10 s, 20 s, 40 s…) limitado a seis minutos. El recuento de retrocesos se restablece si no aparecen nuevos pods fallidos antes de la siguiente verificación de estado del trabajo.

Si se programa un nuevo trabajo antes de que el controlador de trabajos tenga la oportunidad de volver a crear un pod (teniendo en cuenta el retraso después de la falla anterior), el controlador de trabajos comienza a contar desde uno nuevamente.

Reproduje tu problema en GKE usando lo siguiente .yaml:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hellocron
spec:
  schedule: "*/3 * * * *" #Runs every 3 minutes
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hellocron
            image: busybox
            args:
            - /bin/cat
            - /etc/os
          restartPolicy: Never
      backoffLimit: 6
  suspend: false

Este trabajo fallará porque el archivo /etc/os no existe.

Y aquí hay una salida de kubectl describe para uno de los trabajos:

Name:           hellocron-1551194280
Namespace:      default
Selector:       controller-uid=b81cdfb8-39d9-11e9-9eb7-42010a9c00d0
Labels:         controller-uid=b81cdfb8-39d9-11e9-9eb7-42010a9c00d0
                job-name=hellocron-1551194280
Annotations:    <none>
Controlled By:  CronJob/hellocron
Parallelism:    1
Completions:    1
Start Time:     Tue, 26 Feb 2019 16:18:07 +0100
Pods Statuses:  0 Running / 0 Succeeded / 6 Failed
Pod Template:
  Labels:  controller-uid=b81cdfb8-39d9-11e9-9eb7-42010a9c00d0
           job-name=hellocron-1551194280
  Containers:
   hellocron:
    Image:      busybox
    Port:       <none>
    Host Port:  <none>
    Args:
      /bin/cat
      /etc/os
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Events:
  Type     Reason                Age   From            Message
  ----     ------                ----  ----            -------
  Normal   SuccessfulCreate      26m   job-controller  Created pod: hellocron-1551194280-4lf6h
  Normal   SuccessfulCreate      26m   job-controller  Created pod: hellocron-1551194280-85khk
  Normal   SuccessfulCreate      26m   job-controller  Created pod: hellocron-1551194280-wrktb
  Normal   SuccessfulCreate      26m   job-controller  Created pod: hellocron-1551194280-6942s
  Normal   SuccessfulCreate      25m   job-controller  Created pod: hellocron-1551194280-662zv
  Normal   SuccessfulCreate      22m   job-controller  Created pod: hellocron-1551194280-6c6rh
  Warning  BackoffLimitExceeded  17m   job-controller  Job has reached the specified backoff limit

Tenga en cuenta el retraso entre la creación de pods hellocron-1551194280-662zv y hellocron-1551194280-6c6rh.

Usar spec.backoffLimit para especificar el número de reintentos antes de considerar un trabajo como fallido. El límite de retroceso está establecido en 6 de forma predeterminada.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *