Job
Resumen de una línea
Patrón Kubernetes para tareas que terminan: garantiza finalización exitosa, reintentos automáticos, ejecución paralela; base para CronJob.
Definición
Job = Controlador para cargas de trabajo que completan y terminan (vs Deployment que corre indefinidamente).
Garantías:
- Completar al menos una vez
- Reintentos automáticos si fallan
- Limpieza automática de Pods finalizados
- Ejecución paralela configurable
Job vs Deployment
Deployment (Long-running):
- Aplicación siempre activa
- Si Pod falla → se reinicia
- Objetivo: disponibilidad continua
Job (Batch):
- Tarea con fin definido
- Si falla → reintentos hasta éxito
- Objetivo: completar tarea
- Se limpia después de finalizar
Patrón de Uso
apiVersion: batch/v1
kind: Job
metadata:
name: procesar-datos
spec:
completions: 1 # ¿Cuántos Pods exitosos?
parallelism: 1 # ¿Cuántos en paralelo?
backoffLimit: 3 # ¿Cuántos reintentos?
template:
spec:
containers:
- name: procesar
image: mi-worker:latest
command: ["python", "procesar.py"]
restartPolicy: Never # No reintentar el PodCompletions vs Parallelism
Serial (completions=1, parallelism=1)
1 Pod ejecuta tarea → Completa
completions: 1
parallelism: 1Paralelo (completions=3, parallelism=3)
Pod1, Pod2, Pod3 ejecutan simultáneamente
completions: 3
parallelism: 3Work queue pattern (completions=3, parallelism=2)
Pod1, Pod2 toman items de queue
Cuando terminan, Pod3 toma más items
completions: 3
parallelism: 2Reintentos y Fallos
backoffLimit: 3 → máximo 3 reintentos
Intento 1: Falla
Intento 2: Falla
Intento 3: Falla
→ Job marcado como "Failed"
CronJob (Ejecución Periódica)
Job ejecutado en schedule:
apiVersion: batch/v1
kind: CronJob
metadata:
name: backup-diario
spec:
schedule: "0 2 * * *" # 2:00 AM cada día
jobTemplate:
spec:
template:
spec:
containers:
- name: backup
image: backup-tool:latest
command: ["backup", "/data"]
restartPolicy: OnFailureCasos Reales
Procesar archivo → Job
Backup nocturno → CronJob
Enviar emails en lote → Job
Cleanup de datos antiguos → CronJob
Migración de datos → Job
Análisis de logs → Job paralelo
Estados
Active: Job en ejecución
Succeeded: Completado exitosamente (1+ Pod éxito)
Failed: Falló tras reintentos
Suspended: Pausado temporalmente
Limpieza
# Mantener últimos 5 Jobs exitosos
successfulJobsHistoryLimit: 5
# Mantener último Job fallido
failedJobsHistoryLimit: 1Relaciones
Conecta con
- Deployment — Alternativa para Pods que no terminan
- Pod — Unidad ejecutada
- Kubernetes — Patrón de batch
Reutilizable en
- Kubernetes principalmente
- Concepto de tareas batch en orquestadores
Flujo Típico
1. Crear Job
↓
2. Pods inician
↓
3. Ejecutan comando/aplicación
↓
4. Completan exitosamente
↓
5. Job termina (cleanup automático)