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.