Spre deosebire de un Deployment (gândit să mențină procese web care rulează la infinit), obiectele Job și CronJob sunt destinate proceselor care trebuie să execute o sarcină punctuală și apoi să se oprească cu succes (exit code 0). Un Job garantează rularea unui număr specificat de Pod-uri până la finalizare (ideal pentru migrări de baze de date, re-indexare Elasticsearch sau procesare batch), în timp ce CronJob adaugă un planificator temporal bazat pe sintaxa UNIX cron.
Manifest CronJob complet pentru backup zilnic
apiVersion: batch/v1
kind: CronJob
metadata:
name: backup-baza-date
namespace: productia
spec:
# Rulează în fiecare noapte la ora 02:00 UTC:
schedule: "0 2 * * *"
# Împiedică pornirea unui nou backup dacă cel anterior încă rulează:
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 5
jobTemplate:
spec:
# Dacă procesul eșuează, reîncearcă de maximum 2 ori înainte de a marca Job-ul ca eșuat:
backoffLimit: 2
template:
spec:
restartPolicy: OnFailure
containers:
- name: pg-dump
image: postgres:16-alpine
command:
- /bin/sh
- -c
- pg_dump -h postgres-service -U appuser proddb | gzip > /backup/dump_$(date +%Y%m%d).sql.gz
volumeMounts:
- name: storage-backup
mountPath: /backup
volumes:
- name: storage-backup
persistentVolumeClaim:
claimName: nfs-backup-pvc
Comenzi kubectl utile pentru Job-uri și CronJob-uri
# 1. Lansarea manuală a unui Job de test pornind de la definiția unui CronJob existent:
kubectl create job --from=cronjob/backup-baza-date test-manual-backup
# 2. Monitorizarea execuției Job-ului și vizualizarea logurilor:
kubectl get jobs --watch
kubectl logs job/test-manual-backup
# 3. Ștergerea unui Job (va șterge automat și Pod-ul terminat asociat):
kubectl delete job test-manual-backup
Întrebări & Exemple de Cod:
Rularea Sarcinilor Batch și Programate cu Job și CronJob în KubernetesAi o nelămurire despre utilizarea comenzii
Rularea Sarcinilor Batch și Programate cu Job și CronJob în Kubernetessau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.