スケジュールされたバッチ処理用CronJob
データベースクリーンアップ、レポート生成、データ同期などのスケジュールされたタスク用のKubernetes CronJobマニフェストを作成します。スケジュールと同時実行の設定が可能です。
Scheduling
詳細な説明
Kubernetes CronJobs
CronJobsはLinuxのcronと同様にスケジュールでJobを作成します。データベースメンテナンス、レポート生成、キャッシュウォーミング、データ同期などの定期的なタスクに最適です。
主要な設定
apiVersion: batch/v1
kind: CronJob
metadata:
name: db-cleanup
labels:
app: "db-cleanup"
spec:
schedule: "0 2 * * *"
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: cleanup
image: my-cleanup-script:latest
スケジュール構文
scheduleフィールドは5つのフィールドの標準cron構文を使用します:
| フィールド | 値 | 例 |
|---|---|---|
| 分 | 0-59 | 0(0分に) |
| 時 | 0-23 | 2(午前2時に) |
| 月の日 | 1-31 | *(毎日) |
| 月 | 1-12 | *(毎月) |
| 曜日 | 0-6 | *(毎日) |
同時実行ポリシー
- Allow(デフォルト):複数のジョブが同時に実行可能
- Forbid:前のジョブがまだ実行中の場合は新しいジョブをスキップ
- Replace:実行中のジョブをキャンセルして新しいジョブを開始
データベースクリーンアップでは、Forbidがロックや競合を引き起こす可能性のある重複クリーンアップ操作を防ぎます。
再起動ポリシー
CronJobポッドはrestartPolicy: OnFailureまたはrestartPolicy: Neverを使用する必要があります。デフォルトのAlwaysポリシーは、完了したジョブが無限に再起動するため許可されていません。
ユースケース
データベースバキューム、ログローテーション、バックアップ作成、レポート生成、システム間のデータ同期などの定期的なタスクをKubernetesでスケジューリングする。