導入
これまでのワークロードは「動き続ける(常駐)」ものでした。しかし世の中には「一度実行して、終わったら止まってよい」処理もあります。バッチ処理向けの Job、それを定期実行する CronJob を見ていきましょう。
説明
Job(ジョブ) は、完了したら終わる使い捨ての処理を扱うワークロードです。データの一括変換、集計バッチ、初期化処理など、「最後まで走りきったら成功として終了する」ものに使います。Deployment のように常駐させず、正常終了(第2章の Succeeded フェーズ)を目指します。
CronJob(クロンジョブ) は、その Job を決まったスケジュールで繰り返し実行します。名前は Unix の定期実行の仕組み cron(クロン) に由来し、分 時 日 月 曜日 の cron 書式で時刻を指定します。毎晩のバックアップ、定期レポート生成などに向きます。
毎日午前3時にバックアップを走らせる CronJob の例です。
apiVersion: batch/v1 # Job/CronJob は batch/v1
kind: CronJob
metadata:
name: nightly-backup
spec:
schedule: "0 3 * * *" # cron書式: 毎日 3:00(分=0 時=3 日/月/曜=毎)
jobTemplate: # 実行するJobの型紙
spec:
template:
spec:
restartPolicy: OnFailure # 失敗したら再試行
containers:
- name: backup
image: my-backup:1.0
command: ["sh", "-c", "backup.sh"]
schedule: "0 3 * * *" の5つの値は、左から 分・時・日・月・曜日 を表し、* は「毎」を意味します。この例は「毎日3時0分」。
常駐型(Deployment)との違いをまとめると、こうなります。
| Deployment | Job | CronJob | |
|---|---|---|---|
| 動き方 | 動き続ける(常駐) | 1回走って終わる | 定期的に走って終わる |
| 目指す状態 | Running を維持 | Succeeded(完了) | 予定時刻ごとにJobを起動 |
| 例 | Webサーバー | 一括集計・移行 | 毎晩のバックアップ |
「動かし続けたいのか、やり切って終わりたいのか、定期的に繰り返したいのか」で選び分けます。ここまでで、Kubernetes の代表的なワークロードが一通りそろいました。次章以降では、これらの Pod どうしをつなぐ通信(Service)や設定の扱いへ進んでいきます。