CodeBlanks Logo Icon CodeBlanks

CronJob YAML

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: 5

Uygulama 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

terminal
# buraya yaz

Örnek çözüm

terminal
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:16

Beklenen çı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.

Soru
spec:
  schedule: "0 3 * * *"
  concurrencyPolicy: ____
Cevap
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

İleri seviye bölümündeki tüm dersler