Job(K8s)
最後まで実行して終了するタスクのためのKubernetesオブジェクト。バッチ処理、マイグレーション、単発の計算などに使う。ずっと動き続けるDeploymentと違い、Podが成功すれば完了とみなされる。
仕組みは、Jobが一つ以上のPodを作り、指定した成功回数(completions)に達するまで見守るというもの。parallelismで複数のPodを並列に走らせて処理を速めたり、backoffLimitで失敗時の再試行回数の上限(超えるとJob失敗)を決めたりできる。単一タスクにもインデックス付きの作業セットにも対応する。用途は、デプロイ時のDBマイグレーション、バッチETL、レポート生成、タスクキューの処理など。
終了しても再起動されるDeploymentと違い、Jobは終わることを前提とする。落とし穴は、完了済みのJobを放置すると溜まっていくことで、ttlSecondsAfterFinishedでの後始末を忘れずに。スケジュール実行するのがCronJobである。