Cum să rulezi job-uri și CronJob-uri în Kubernetes
DodaTech
Updated 2025-01-15
2 min read
In this tutorial, you'll learn about Cum să rulezi job. We cover key concepts, practical examples, and best practices.
Problema
Ai nevoie să rulezi sarcini temporare (migrări de bază de date, procesări batch, backup-uri) care trebuie să se execute o singură dată sau la intervale regulate.
Soluția Pas cu Pas
1. Creează un Job simplu
apiVersion: batch/v1
kind: Job
metadata:
name: hello-job
spec:
template:
spec:
containers:
- name: hello
image: busybox
command: ["echo", "Hello from Kubernetes Job"]
restartPolicy: Never
kubectl apply -f job.yaml
Output:
job.batch/hello-job created
2. Verifică starea Job-ului
kubectl get jobs
Output:
NAME COMPLETIONS DURATION AGE
hello-job 1/1 3s 10s
3. Vezi log-urile Job-ului
kubectl logs job/hello-job
Output:
Hello from Kubernetes Job
4. Job cu paralelism
apiVersion: batch/v1
kind: Job
metadata:
name: parallel-job
spec:
completions: 6
parallelism: 2
template:
spec:
containers:
- name: worker
image: busybox
command: ["sh", "-c", "echo 'Working...' && sleep 5"]
restartPolicy: Never
5. Creează un CronJob
apiVersion: batch/v1
kind: CronJob
metadata:
name: backup-job
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: backup
image: busybox
command: ["sh", "-c", "echo 'Running backup at $(date)'"]
restartPolicy: Never
kubectl apply -f cronjob.yaml
Output:
cronjob.batch/backup-job created
6. Verifică CronJob-urile
kubectl get cronjobs
Output:
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
backup-job 0 2 * * * False 0 <none> 10s
7. Suspendă un CronJob
kubectl patch cronjob backup-job -p '{"spec":{"suspend":true}}'
Prevenție
- Setează
backoffLimitpentru a controla numărul de reîncercări la eșec. - Setează
ttlSecondsAfterFinishedpentru a șterge automat Job-urile completate. - Folosește
startingDeadlineSecondspentru a preveni omiterea execuțiilor. - Pentru CronJob-uri importante, setează
concurrencyPolicy: Forbidpentru a preveni execuțiile concurente.
Greșeli Comune
- Fără
restartPolicy: NeversauOnFailure— Job-ul nu pornește cuAlways. - Job-uri care nu se termină — Fără
activeDeadlineSeconds, un Job poate rula la infinit. - CronJob cu timezone greșit — Kubernetes folosește UTC implicit.
- Job-uri orfane — Fără
ttlSecondsAfterFinished, Pod-urile rămân după completare. - ConcurrencyPolicy greșit —
Allow(implicit) poate duce la execuții suprapuse.
Exercițiu
Creează un CronJob care rulează la fiecare 5 minute, execută un script care scrie data curentă într-un fișier pe un volum PVC, și verifică că Job-urile se creează la schedule.
FAQ
Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează seamless cu Kubernetes pentru productivitate și securitate sporite.
← Previous
How to Fix Istio Sidecar Injection Issues
Next →
How to Fix Kiali Graph Not Showing in Istio
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro