CronJob YAML
- Docker & Kubernetes kursu
- İleri seviye
- Ders 29/70
- 4 dk
CronJob YAML yapısını öğrenirsin.
CronJob YAML
CronJob'un spec'inde schedule ve bir jobTemplate vardır; jobTemplate, Job'un spec'inin aynısıdır (bu yüzden iç içe üç spec görünür):
apiVersion: batch/v1
kind: CronJob
metadata:
name: gece-yedek
spec:
schedule: "0 3 * * *"
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: yedek
image: postgres:16
command: ["sh", "-c", "pg_dump -h db -U app app > /yedek/app.sql"]
Eşzamanlılık ve geçmiş
Üç önemli ayar:
concurrencyPolicy:Allow(varsayılan),Forbid(öncekiyle çakışırsa atla),Replace(öncekini durdur, yenisini başlat).startingDeadlineSeconds: kaçırılan çalışma bu süre içinde hâlâ başlatılabilir.successfulJobsHistoryLimit/failedJobsHistoryLimit: saklanan eski Job sayısı (varsayılan 3 / 1).
spec:
schedule: "0 3 * * *"
timeZone: "Europe/Istanbul"
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 5Uygulama Gece yedeği
Bir CronJob YAML'ı yaz: adı gece-yedek; schedule: "0 3 * * *"; concurrencyPolicy: Forbid; jobTemplate içindeki pod şablonunda restartPolicy: OnFailure; container adı yedek, image postgres:16.
Başlangıç kodu
# buraya yazÖrnek çözüm
apiVersion: batch/v1
kind: CronJob
metadata:
name: gece-yedek
spec:
schedule: "0 3 * * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: yedek
image: postgres:16Beklenen çıktı
cronjob.batch/gece-yedek created
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Önceki yedek bitmeden yeni çalışma zamanı gelirse ne olur?
- Her zaman ikisi birlikte çalışır
- CronJob silinir
- Hata verir
- concurrencyPolicy'ye bağlıdır: Allow, Forbid ya da Replace Doğru cevap
Açıklama: Yedek gibi işlerde çakışmayı önlemek için Forbid seçilir.
2 Çakışan çalışmayı atla.
spec:
schedule: "0 3 * * *"
concurrencyPolicy: ____
spec:
schedule: "0 3 * * *"
concurrencyPolicy: Forbid
Açıklama: Forbid, önceki bitmemişse yenisini başlatmaz.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
Allow |
Çakışmaya izin ver |
Forbid |
Çakışanı atla |
Replace |
Eskisini durdur |
timeZone |
Saat dilimi |