Ücretsiz ders · CKAD Hazırlık Programı · Modül 2: Uygulama tasarımı ve inşası
Toplu İşleri Job ve CronJob ile Koşturmak
Deploymentler sonsuz süreçlere bakıcılık yapar; Joblar bitmesi gereken işi koşturur. Bu ders sonlu işin denetleyicilerini, tek seferlik ve zamanlanmış, yeniden deneme ve eşzamanlılık düğmeleriyle anlatır.
11 dk okuma
Kazanımlar
- Bitince tamamlanan işte Deployment yerine Job seçmek ve nedenini söylemek
- İş yüküne uygun completions, parallelism ve backoffLimit kurmak
- Gerçekten demek istediğini söyleyen CronJob zamanlaması yazmak
- İş geçmişi ve pod loglarıyla toplu işin bittiğini kanıtlamak
Neden önemli
Taşımalar, rapor üretimi, kuyruk boşaltma, gece temizliği: üretim bitmesi, tamamlanması ve durması gereken iş doludur. Deployment olarak koşturmak yeniden başlatma döngüsünü harcar, tamamlanma sinyalini gizler. Sınav ayrımı sürekli ölçer, artı arıza düğmeleri; çünkü sonsuz yeniden deneyen toplu işler kümeleri gece eritir.
Kavramlar
Job tamamlanma sayısına ulaşana kadar pod oluşturur. completions işi kaç başarılı podun bitireceğini söyler; parallelism kaçının aynı anda koşacağını; backoffLimit tüm Job başarısız sayılmadan yeniden denemeyi sınırlar. restartPolicy: Never veya OnFailure zorunludur (varsayılan Always uzun koşan podlarındır, reddedilir). activeDeadlineSeconds toplam süreyi sınırlar; takılan toplu iş hafta sonu kotayı yakamaz.
CronJob Job şablonunu zamanlamaya sarar. Zamanlama standart cron artı isteğe bağlı saat dilimidir; concurrencyPolicy çalışması dilimine taşan durumda ne olacağına karar verir (Allow, Forbid, Replace). successfulJobsHistoryLimit artı failedJobsHistoryLimit geçmişi sonsuz yerine okunur tutar. Suspend tanımı silmeden her şeyi duraklatır; olay sırasında gürültülü zamanlamayı durdurmanın güvenli yoludur.
Uygulamalı örnek
Gece raporu, her seferinde tek, inceleme için üç başarı saklanır:
apiVersion: batch/v1
kind: CronJob
metadata:
name: nightly-report
spec:
schedule: "30 2 * * *"
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1
jobTemplate:
spec:
backoffLimit: 2
activeDeadlineSeconds: 600
template:
spec:
restartPolicy: OnFailure
containers:
- name: report
image: busybox
command: ["sh", "-c", "echo report-$(date +%F)"]Dakika geçince kubectl get jobs ile denetle, sonra çıktı için kubectl logs job/<ad>. Forbid artı on dakikalık süre takılan çalışmanın ne yığılmasına ne geceyi yakmasına izin verir.
Sınav notları
Job şablonunda restartPolicy: Always API tarafından reddedilir: Never veya OnFailure ezberle. Cron zamanlamaları ayarlanmadıkça denetleyici saat diliminde koşar; seninkini hep söyle. Ve geçmiş sınırları Jobları budar ama koşan podları asla: takoz çalışmayı yine elle silmek gerekir.
Mini kontrol
4 soruluk öz kontrol. Yanıtların cihazında kalır, saklanmaz ve gönderilmez. Yalnızca geçen skor (ör. 4 soruda 3) kaydedilir ve yalnızca ders ilerlemesinin kilidini açmak için: bir dersin tamamlanmış sayılması için en az 3 doğru gerekir. Hiçbir sertifika değerlendirmesine sayılmaz.
Ders geri bildirimi
Henüz yayında geri bildirim yok.
Geri bildirim yazmak için giriş yap ve dersi tamamla.
Kaynaklar
Alıştırma
15 dakikada bir koşan, en fazla 2 eşzamanlı davranışa izin veren (politikayı seç ve gerekçelendir), iki kez yeniden deneyen ve beş başarılı geçmiş tutan CronJob yaz. Sonra üçüncü zamanlanmış çalışmanın tamamlandığını nasıl doğruladığını anlat.
Geçme kriterleri
Zamanlama 15 dakikada bir okunur; politika tek cümle gerekçeyle seçilmiş; backoffLimit 2 ve geçmiş 5 mevcut; doğrulama iş listesi artı pod loglarını adlandırır.