第13章 Job [batch/v1]
- 説明
- Job は、単一の Job の設定を表します。
- 型
-
object
13.1. 仕様
プロパティー | 型 | 説明 |
---|---|---|
|
| APIVersion はオブジェクトのこの表現のバージョンスキーマを定義します。サーバーは認識されたスキーマを最新の内部値に変換し、認識されない値は拒否することがあります。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources を参照してください。 |
|
| kind はこのオブジェクトが表す REST リソースを表す文字列の値です。サーバーはクライアントが要求を送信するエンドポイントからこれを推測できる場合があります。これを更新することはできません。CamelCase を使用します。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds を参照してください。 |
| 標準オブジェクトのメタデータ。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata を参照してください。 | |
|
| JobSpec は、ジョブの実行がどのようになるかを記述します。 |
|
| JobStatus は、ジョブの現在の状態を表します。 |
13.1.1. .spec
- 説明
- JobSpec は、ジョブの実行がどのようになるかを記述します。
- 型
-
object
- 必須
-
template
-
プロパティー | 型 | 説明 |
---|---|---|
|
| システムがジョブを終了しようとする前に、ジョブが継続的にアクティブになる可能性がある startTime を基準とした秒単位の期間を指定します。値は正の整数でなければなりません。ジョブが (作成時または更新中に) 一時停止になった場合、このタイマーは事実上停止となり、ジョブが再開したときにリセットされます。 |
|
| このジョブを失敗とマークするまでの再試行回数を指定します。デフォルトは 6 です。 |
|
|
このインデックスを失敗としてマークするまでの、インデックス内における再試行回数の制限を指定します。有効にすると、インデックスごとの失敗回数が Pod の batch.kubernetes.io/job-index-failure-count アノテーションに保持されます。これは、ジョブの completionMode=Indexed で、Pod の再起動ポリシーが Never の場合にのみ設定できます。このフィールドはイミュータブルです。このフィールドは、ベータレベルです |
|
|
completionMode は、Pod の完了を追跡する方法を指定します。
今後、さらに多くの完了モードを追加できます。ジョブコントローラーが認識できないモードを確認した場合、コントローラーはジョブの更新をスキップします。
可能な列挙値: |
|
| ジョブを実行するために正常に終了した Pod の希望数を指定します。null に設定すると、任意の Pod の成功がすべての Pod の成功を示し、並列処理に正の値を設定できるようになります。1 に設定すると、並列処理が 1 に制限され、その Pod の成功がジョブの成功を示します。詳細: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ |
|
|
ManagedBy フィールドは、ジョブを管理するコントローラーを示します。k8s ジョブコントローラーは、このフィールドを持たないジョブ、またはフィールド値が予約文字列 このフィールドはアルファレベルです。フィーチャーゲート JobManagedBy が有効な場合 (デフォルトでは無効)、ジョブコントローラーはこのフィールドの設定を受け入れます。 |
|
|
manualSelector は、Pod ラベルと Pod セレクターの生成を制御します。何をしているのかわからない場合は、 |
|
|
backoffLimitPerIndex が設定されている場合、ジョブを失敗としてマークするまでの失敗したインデックスの最大数を指定します。失敗したインデックスの数がこの数を超えると、ジョブ全体が Failed としてマークされ、実行が終了します。null のままにすると、ジョブはすべてのインデックスの実行を続行し、ジョブ状態は |
|
| ジョブが任意の時点で実行する必要のある Pod の最大数を指定します。定常状態で実行している Pod の実際の数は、((.spec.completions - .status.successful) < .spec.parallelism) の場合、つまり、実行する必要のある作業が最大並列処理より少ない場合は、この数より少なくなります。詳細: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ |
|
| PodFailurePolicy は、失敗した Pod が backoffLimit にどのように影響するかを説明します。 |
|
| podReplacementPolicy は、代替 Pod をいつ作成するか指定します。可能な値は次のとおりです。- TerminatingOrFailed : Pod が終了中 (metadata.deletionTimestamp がある) または失敗したときに Pod が再作成されます。- Failed: 以前に作成された Pod が完全に終了する (フェーズが Failed または Succeeded になる) まで待機してから代替 Pod を作成します。 podFailurePolicy を使用する場合、許可される値は Failed のみです。podFailurePolicy が使用されていない場合、許可される値は TerminatingOrFailed と Failed です。これはベータフィールドです。これを使用するには、JobPodReplacementPolicy 機能のトグルを有効にします。これはデフォルトでオンに設定されます。
可能な列挙値: - |
| Pod 数と一致する必要がある Pod に対するラベルクエリー。通常、システムはこのフィールドを設定します。詳細: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors | |
|
| SuccessPolicy は、いくつかのインデックスの成功に基づきジョブの成功を宣言できるタイミングを説明します。 |
|
| suspend は、Job コントローラーが Pod を作成するかどうかを指定します。suspend を true に設定して Job を作成すると、ジョブコントローラーは Pod を作成しません。作成後に Job が一時停止した場合 (つまり、フラグが false から true になる場合)、Job コントローラーはこの Job に関連付けられているすべてのアクティブな Pod を削除します。ユーザーは、これを適切に処理するようにワークロードを設計する必要があります。ジョブを一時停止すると、ジョブの StartTime フィールドがリセットされ、ActiveDeadlineSeconds タイマーも効果的にリセットされます。デフォルトは false です。 |
| ジョブの実行時に作成される Pod を説明します。使用できる template.spec.restartPolicy の値は "Never" または "OnFailure" のみです。詳細: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ | |
|
| ttlSecondsAfterFinished は、実行が終了した (Complete または Failed のいずれか) Job の存続期間を制限します。このフィールドが設定されている場合、Job の終了後に ttlSecondsAfterFinished を設定すると、自動的に削除される可能性があります。ジョブが削除されると、そのライフサイクル保証 (ファイナライザーなど) が尊重されます。このフィールドが設定されていないと、ジョブが自動的に削除されません。このフィールドがゼロに設定されていると、ジョブは終了後すぐに削除できるようになります。 |
13.1.2. .spec.podFailurePolicy
- 説明
- PodFailurePolicy は、失敗した Pod が backoffLimit にどのように影響するかを説明します。
- 型
-
object
- 必須
-
rules
-
プロパティー | 型 | 説明 |
---|---|---|
|
| Pod 障害ポリシールールの一覧。ルールは順番に評価されます。ルールが Pod の障害に一致すると、残りのルールは無視されます。Pod の障害に一致するルールがない場合は、デフォルトの処理が適用されます。つまり、Pod の失敗のカウンターが増分され、backoffLimit に対してチェックされます。最大 20 個の要素が許可されます。 |
|
| PodFailurePolicyRule は、要件が満たされた場合に Pod の障害がどのように処理されるかを記述します。各ルールでは、onExitCodes と onPodConditions のいずれか 1 つを使用できますが、両方は使用できません。 |
13.1.3. .spec.podFailurePolicy.rules
- 説明
- Pod 障害ポリシールールの一覧。ルールは順番に評価されます。ルールが Pod の障害に一致すると、残りのルールは無視されます。Pod の障害に一致するルールがない場合は、デフォルトの処理が適用されます。つまり、Pod の失敗のカウンターが増分され、backoffLimit に対してチェックされます。最大 20 個の要素が許可されます。
- 型
-
array
13.1.4. .spec.podFailurePolicy.rules[]
- 説明
- PodFailurePolicyRule は、要件が満たされた場合に Pod の障害がどのように処理されるかを記述します。各ルールでは、onExitCodes と onPodConditions のいずれか 1 つを使用できますが、両方は使用できません。
- 型
-
object
- 必須
-
action
-
プロパティー | 型 | 説明 |
---|---|---|
|
| 要件が満たされた場合に Pod の障害に対して実行されるアクションを指定します。可能な値は次のとおりです。
- FailJob: Pod のジョブが Failed としてマークされ、実行中のすべての Pod が終了したことを示します。- FailIndex: Pod のインデックスが Failed としてマークされ、再起動されないことを示します。この値はベータレベルです。これは、
可能な列挙値: - |
|
| PodFailurePolicyOnExitCodesRequirement は、コンテナー終了コードに基づいて失敗した Pod を処理するための要件を説明します。特に、各アプリケーションコンテナーの .state.termination.exitCode と init コンテナーのステータスを検索します。これは、Pod ステータスの .status.containerStatuses フィールドと .status.initContainerStatuses フィールドをそれぞれ検索します。正常に完了したコンテナー (終了コード 0) は、要件チェックから除外されます。 |
|
| Pod の条件に関する要件を表します。要件は Pod 条件パターンのリストとして表されます。少なくとも 1 つのパターンが実際の Pod の状態と一致する場合、要件は満たされます。最大 20 個の要素が許可されます。 |
|
| PodFailurePolicyOnPodConditionsPattern は、実際の Pod 条件タイプと一致するパターンを記述します。 |
13.1.5. .spec.podFailurePolicy.rules[].onExitCodes
- 説明
- PodFailurePolicyOnExitCodesRequirement は、コンテナー終了コードに基づいて失敗した Pod を処理するための要件を説明します。特に、各アプリケーションコンテナーの .state.termination.exitCode と init コンテナーのステータスを検索します。これは、Pod ステータスの .status.containerStatuses フィールドと .status.initContainerStatuses フィールドをそれぞれ検索します。正常に完了したコンテナー (終了コード 0) は、要件チェックから除外されます。
- 型
-
object
- 必須
-
operator
-
values
-
プロパティー | 型 | 説明 |
---|---|---|
|
| 終了コードのチェックを指定された名前のコンテナーに制限します。null の場合、ルールはすべてのコンテナーに適用されます。指定する場合、Pod テンプレート内のコンテナー名または initContainer 名のいずれかと一致する必要があります。 |
|
| コンテナー終了コードと指定された値の関係を表します。正常に完了したコンテナー (終了コード 0) は、要件チェックから除外されます。可能な値は次のとおりです。 - In: 少なくとも 1 つのコンテナーの終了コードが指定の値のセット内にある場合、要件は満たされます ('containerName' フィールドからの制限がないコンテナーが複数ある場合は、複数の終了コードが存在する可能性があります)。- NotIn: 少なくとも 1 つのコンテナーの終了コードが指定の値のセット内にない場合、要件は満たされます ('containerName' フィールドからの制限がないコンテナーが複数ある場合は、複数の終了コードが存在する可能性があります)。その他の値は、今後追加される予定です。クライアントは、要件が満たされていないことを前提として、不明な演算子に対応する必要があります。
使用可能な列挙値: - |
|
| 値のセットを指定します。返された各コンテナー終了コードは、この値のセットに対して、演算子に関するチェックを行います (複数のコンテナーがある場合は複数存在する可能性があります)。値のリストは順序付けする必要があり、重複を含めることはできません。値 '0' は、In 演算子に使用できません。少なくとも 1 つの要素が必要です。最大 255 個の要素が許可されます。 |
13.1.6. .spec.podFailurePolicy.rules[].onPodConditions
- 説明
- Pod の条件に関する要件を表します。要件は Pod 条件パターンのリストとして表されます。少なくとも 1 つのパターンが実際の Pod の状態と一致する場合、要件は満たされます。最大 20 個の要素が許可されます。
- 型
-
array
13.1.7. .spec.podFailurePolicy.rules[].onPodConditions[]
- 説明
- PodFailurePolicyOnPodConditionsPattern は、実際の Pod 条件タイプと一致するパターンを記述します。
- 型
-
object
- 必須
-
type
-
status
-
プロパティー | 型 | 説明 |
---|---|---|
|
| 必要な Pod の条件ステータスを指定します。Pod 条件と一致するには、指定されたステータスが Pod 条件ステータスと等しい必要があります。デフォルトは True です。 |
|
| 必要な Pod 条件タイプを指定します。Pod 条件と一致するには、指定されたタイプが Pod 条件タイプと等しい必要があります。 |
13.1.8. .spec.successPolicy
- 説明
- SuccessPolicy は、いくつかのインデックスの成功に基づきジョブの成功を宣言できるタイミングを説明します。
- 型
-
object
- 必須
-
rules
-
プロパティー | 型 | 説明 |
---|---|---|
|
|
rules は、 |
|
| SuccessPolicyRule は、ジョブを成功として宣言するためのルールを記述します。各ルールには、"succeededIndexes" または "succeededCount" のいずれか 1 つを必ず指定する必要があります。 |
13.1.9. .spec.successPolicy.rules
- 説明
-
rules は、
.status.succeeded >= .spec.completions
になる前にジョブを成功として宣言するための代替ルールのリストを表します。いずれかのルールが満たされると、"SucceededCriteriaMet" 条件が追加され、残っている Pod が削除されます。このようなジョブの最終的な状態には "Complete" 条件があります。さらに、これらのルールは順番に評価され、ジョブがいずれかのルールを満たすと、他のルールは無視されます。最大 20 個の要素が許可されます。 - 型
-
array
13.1.10. .spec.successPolicy.rules[]
- 説明
- SuccessPolicyRule は、ジョブを成功として宣言するためのルールを記述します。各ルールには、"succeededIndexes" または "succeededCount" のいずれか 1 つを必ず指定する必要があります。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| succeededCount は、ジョブの成功したインデックスの実際のセットの最小必要サイズを指定します。succeededCount を succeededIndexes と併せて使用すると、チェックは succeededIndexes で指定されたインデックスのセットにのみ制限されます。たとえば、succeededIndexes が "1-4"、succeededCount が "3"、完了したインデックスが "1"、"3"、"5" の場合、ルールでは "1" と "3" のインデックスのみが考慮されるため、ジョブは成功として宣言されません。このフィールドが null の場合、デフォルトの値は設定されず、評価されることはありません。指定する場合は、正の整数で指定する必要があります。 |
|
| succeededIndexes は、ジョブの成功したインデックスの実際のセットに含める必要があるインデックスのセットを指定します。インデックスのリストは 0 から ".spec.completions-1" の範囲内とし、重複を含んではなりません。少なくとも 1 つの要素が必要です。インデックスは、コンマで区切られた間隔として表されます。間隔には、10 進整数、またはハイフンで区切られた 10 進整数のペアを使用できます。この場合の番号は、連続する番号の最初と最後をハイフンで区切って表します。たとえば、完了したインデックスが 1、3、4、5、7 の場合は、"1,3-5,7" で表現されます。このフィールドが null の場合、このフィールドのデフォルト値は設定されず、評価されることはありません。 |
13.1.11. .status
- 説明
- JobStatus は、ジョブの現在の状態を表します。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| 終了していない保留中および実行中 (deletetionTimestamp なし) の Pod の数。終了したジョブの場合、この値はゼロになります。 |
|
| completedIndexes は、.spec.completionMode = "Indexed" の場合に完成したインデックスをテキスト形式で保持します。インデックスは、コンマで区切られた 10 進整数として表されます。番号は昇順でリストされています。3 つ以上の連続する数値は圧縮され、ハイフンで区切られたシリーズの最初と最後の要素で表されます。たとえば、完了したインデックスが 1、3、4、5、7 の場合は、"1,3-5,7" で表現されます。 |
| ジョブが完了した時間を表します。別々の操作をまたいで、happens-before の順序が設定されることは保証されていません。これは RFC3339 形式で表されます。これは UTC です。完了時間は、ジョブが正常に完了した時点でのみ設定されます。値は、更新または削除できません。値は、startTime フィールドと同じ時点またはそれ以降の時点を示します。 | |
|
| オブジェクトの現在の状態の最新の利用可能な観測。ジョブが失敗すると、条件の 1 つに "Failed" と入力され、ステータスが true になります。Job が一時停止すると、条件の 1 つのタイプが "Suspended" になり、ステータスが true になります。Job が再開すると、この状態のステータスは false になります。ジョブが完了すると、条件の 1 つのタイプが "Complete" になり、ステータスが true になります。 ジョブは、最終状態 ("Complete" または "Failed") になると完了したものとみなされます。ジョブに "Complete" と "Failed" の両条件を設定することはできません。また、"Complete" および "FailureTarget" にすることはできません。"Complete"、"Failed"、"FailureTarget" 条件を無効にすることはできません。 詳細: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ |
|
| JobCondition は、ジョブの現在の状態を記述します。 |
|
| フェーズ失敗に達した Pod の数。値は単調に増加します。 |
|
|
FailedIndexes は、spec.backoffLimitPerIndex が設定されている場合に失敗したインデックスを保持します。インデックスは、
このフィールドは、ベータレベルです |
|
| Ready 状態の Pod 数。 |
| ジョブコントローラーがジョブの処理を開始した時刻を表します。Job が一時停止状態で作成された場合、このフィールドは最初に再開されるまで設定されません。このフィールドは、Job が一時停止から再開するたびにリセットされます。これは RFC3339 形式で表されます。これは UTC です。 このフィールドは、一度設定した後は、ジョブが一時停止されたときにのみ削除できます。ジョブの一時停止が解除されている、またはジョブが終了している間は、フィールドを変更できません。 | |
|
| フェーズ成功に達した Pod の数。指定された仕様に対して値は単調に増加します。ただし、弾性インデックスジョブのスケールダウンに応じて減少する可能性があります。 |
|
| 終了中の (Pending または Running フェーズにあり、deletetionTimestamp を持つ) Pod の数。 このフィールドは、ベータレベルですフィーチャーゲート JobPodReplacementPolicy (デフォルトで有効) が有効な場合、ジョブコントローラーはフィールドに値を入力します。 |
|
| UncountedTerminatedPods は、終了したにもかかわらず Job ステータスカウンターに計上されていない Pod の UID を保持します。 |
13.1.12. .status.conditions
- 説明
オブジェクトの現在の状態の最新の利用可能な観測。ジョブが失敗すると、条件の 1 つに "Failed" と入力され、ステータスが true になります。Job が一時停止すると、条件の 1 つのタイプが "Suspended" になり、ステータスが true になります。Job が再開すると、この状態のステータスは false になります。ジョブが完了すると、条件の 1 つのタイプが "Complete" になり、ステータスが true になります。
ジョブは、最終状態 ("Complete" または "Failed") になると完了したものとみなされます。ジョブに "Complete" と "Failed" の両条件を設定することはできません。また、"Complete" および "FailureTarget" にすることはできません。"Complete"、"Failed"、"FailureTarget" 条件を無効にすることはできません。
詳細: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
- 型
-
array
13.1.13. .status.conditions[]
- 説明
- JobCondition は、ジョブの現在の状態を記述します。
- 型
-
object
- 必須
-
type
-
status
-
プロパティー | 型 | 説明 |
---|---|---|
| 前回条件がチェックされたとき。 | |
| 前回、状態が 1 つのステータスから別のステータスに移行したとき。 | |
|
| 最後にある状態から別の状態に遷移した時間。 |
|
| (簡単な) 条件の最後の遷移の理由。 |
|
| 状態のステータス (True、False、Unknown のいずれか)。 |
|
| ジョブ条件のタイプ、完了または失敗。 |
13.1.14. .status.uncountedTerminatedPods
- 説明
- UncountedTerminatedPods は、終了したにもかかわらず Job ステータスカウンターに計上されていない Pod の UID を保持します。
- 型
-
object
プロパティー | 型 | 説明 |
---|---|---|
|
| failed は、失敗した Pod の UID を保持します。 |
|
| succeeded は、成功した Pod の UID を保持します。 |