CodeBlanks Logo Icon CodeBlanks

Job nedir?

Job'un biten görevleri çalıştırdığını öğrenirsin.

Job nedir?

Job, bir işi sonuna kadar çalıştırıp başarıyla biten pod'lar üretir: veritabanı göçü (migration), toplu veri işleme, rapor üretme. Deployment'tan farkı, pod bitince yeniden başlatılmaması ve Job'un "tamamlandı" olarak işaretlenmesidir. Pod başarısız olursa Job onu yeniden dener.

$ kubectl create job pi --image=perl:5.40 -- perl -Mbignum=bpi -wle "print bpi(50)"
$ kubectl get jobs
NAME   STATUS     COMPLETIONS   DURATION   AGE
pi     Complete   1/1           8s         20s
$ kubectl logs job/pi
3.1415926535897932384626433832795028841971693993751

Job'u izlemek

Bir Job'un bitmesini beklemek için kubectl wait kullanılır; CI hatlarında göç bitmeden uygulamanın dağıtılmasını önler. Biten Job ve pod'ları kalır; ttlSecondsAfterFinished onları belirli süre sonra otomatik siler:

kubectl wait --for=condition=complete job/goc --timeout=120s
kubectl logs job/goc
kubectl delete job goc

Uygulama Tek seferlik iş

Üç komut yaz: busybox:1.36 image'ıyla selam adlı Job'u echo merhaba komutuyla oluştur; Job'un tamamlanmasını 60 saniyelik zaman aşımıyla bekle; Job'un log'larını göster.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl create job selam --image=busybox:1.36 -- echo merhaba
kubectl wait --for=condition=complete job/selam --timeout=60s
kubectl logs job/selam

Beklenen çıktı

job.batch/selam created
job.batch/selam condition met
merhaba

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir veritabanı göçünü Deployment yerine Job ile çalıştırmanın nedeni nedir?

  • Job daha hızlıdır
  • Deployment veritabanına bağlanamaz
  • Job ücretsizdir
  • Göç bir kez çalışıp bitmeli; Deployment biten pod'u yeniden başlatır Doğru cevap

Açıklama: Deployment sürekli çalışan süreçler içindir.

2 Job tamamlanana kadar bekle.

Soru
kubectl wait --for=condition=____ job/goc --timeout=120s
Cevap
kubectl wait --for=condition=complete job/goc --timeout=120s

Açıklama: Job'un başarı koşulu Complete'tir.

3 Eşleştir.

Kavram Anlamı
Job Bitene kadar çalış
Deployment Sürekli çalış
COMPLETIONS 1/1 Başarıyla bitti
kubectl wait Koşulu bekle

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