【ジョブ(クーバネティス)】

Job(Kubernetes) とは?

最終更新:
💡 Podで処理を実行し、必要な完了を管理する

Kubernetesで、正常終了するタスクをPodで実行し、完了を管理するリソース。必要な成功数や並列実行を設定できます。失敗時の再試行などで同じ処理が複数回動くことがあるため、実行回数が必ず1回になる保証はありません。

📌 このページのポイント
終わるタスクの実行と完了を管理Job必要な成功数・並列数等を設定Podで実行変換などの処理失敗再試行等成功数を追跡上限等に達する→ Jobは失敗必要な成功数に達する→ Jobは完了「1回だけ」の保証ではないよ
固定の成功数を指定する基本例。完了と削除は別で、再実行への備えやログ保存も設計します。
ひよこ ひよこ
Jobは、Deploymentと何が違うの?
ペンギン先生 ペンギン先生
Jobはファイル変換など、処理が終わって正常終了するタスクを管理するよ。DeploymentはWebアプリなどのPodを必要な数で動かし続ける用途で使う。定期的にJobを作るならCronJobが使えるんだ。
ひよこ ひよこ
Jobなら、処理は必ず1回だけ?
ペンギン先生 ペンギン先生
そうではないよ。障害による再試行などで、同じプログラムが複数回動く場合がある。成功数と並列数を1にしても、1回だけとは保証されないんだ。二重にメールを送らない仕組みなど、処理側で再実行に備えよう。
ひよこ ひよこ
失敗したら、ずっと繰り返すの?
ペンギン先生 ペンギン先生
再試行の上限はbackoffLimitなどで制御でき、上限に達するとJobは失敗扱いになるよ。一般的なJobではbackoffLimitの既定値は6だけれど、インデックス単位の上限を設定する場合は違う。Pod内で再起動するか、新しいPodを作るかもrestartPolicyなどの設定に関わるよ。
ひよこ ひよこ
並列で、たくさんのデータを処理できる?
ペンギン先生 ペンギン先生
固定の成功数を決めるならcompletions、要求する並列数はparallelismで設定するよ。ただし、これだけで別々のデータが各Podへ自動配布されるわけではない。インデックスやキューなどで仕事を分け、同時実行にも備えるんだ。
ひよこ ひよこ
終わったら、Podやログはすぐ消える?
ペンギン先生 ペンギン先生
Jobの完了と削除は別だよ。ttlSecondsAfterFinishedを設定すると、完了または失敗後にTTLによる削除対象となり、Jobと配下のPodが削除される。CronJobなどの管理側が片付ける場合もある。後から調べたいログは、削除前に外部へ保存する仕組みも考えよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Job(Kubernetes)」って出てきたら「終わるタスクをPodで動かし、完了を管理する役」と思えばだいたいOK!
📖 おまけ:英語の意味
「Job」 = 仕事・タスク
💬 Kubernetesでは、正常終了するタスクを実行して完了を管理するリソースの名前だよ。

参考資料

← 用語集にもどる