Kubernetes Jobs の Pod 交換ポリシー機能が一般公開されました。デフォルトでは、Job は終了中または失敗した Pod を即座に置き換えるため、並列処理が超過する可能性があります。これは、一部の機械学習フレームワークのように、インデックスごとに単一のインスタンスを期待するアプリケーションで問題を引き起こす可能性があります。また、スケジューリングの遅延、不必要なスケーリング、一時的なクォータのバイパスにもつながる可能性があります。この新しい機能により、ユーザーは .spec.podReplacementPolicy フィールドを使用してこの動作を制御できます。デフォルトの TerminatingOrFailed ポリシーは、Pod が終了を開始するとすぐに Pod を再作成します。一方、Failed ポリシーは、古い Pod が完全に終了し、Failed フェーズに入った後にのみ新しい Pod を作成します。Pod 失敗ポリシーを持つ Job の場合、Failed 交換ポリシーが必須です。終了中の Pod のステータスは、kubectl get job myjob -o=jsonpath='{.status.terminating}' を使用して確認できます。例では、ポリシーを Failed に設定することで、終了中の Pod が完全に完了するまで新しい Pod が開始されないことを示しています。この機能強化は、Job Pod のライフサイクル管理をより堅牢に制御することを目的としています。
.spec.podReplacementPolicyフィールドを使用してこの動作を制御できます。デフォルトのTerminatingOrFailedポリシーは、Pod が終了を開始するとすぐに Pod を再作成します。一方、Failedポリシーは、古い Pod が完全に終了し、Failedフェーズに入った後にのみ新しい Pod を作成します。Pod 失敗ポリシーを持つ Job の場合、Failed交換ポリシーが必須です。終了中の Pod のステータスは、kubectl get job myjob -o=jsonpath='{.status.terminating}'を使用して確認できます。例では、ポリシーをFailedに設定することで、終了中の Pod が完全に完了するまで新しい Pod が開始されないことを示しています。この機能強化は、Job Pod のライフサイクル管理をより堅牢に制御することを目的としています。