37.2. ジョブの作成
ジョブ設定は以下の主な部分で構成されます。
- Pod テンプレート: Pod が作成するアプリケーションを記述します。
-
オプションの
parallelism
パラメーター: ジョブの実行に使用する、並行して実行される Pod のレプリカ数を指定します。これが指定されていない場合、デフォルトはcompletions
パラメーターの値に設定されます。 -
オプションの
completions
パラメーター: ジョブの実行に使用する、並行して実行される Pod の数を指定します。指定されていない場合、デフォルトで 1 の値に設定されます。
以下は、job
リソースのサンプルです。
apiVersion: batch/v1 kind: Job metadata: name: pi spec: parallelism: 1 1 completions: 1 2 template: 3 metadata: name: pi spec: containers: - name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: OnFailure 4
-
ジョブが並行して実行する Pod のレプリカ数のオプションの値です。 デフォルトでは
completions
の値に設定されます。 - ジョブを完了としてマークするために必要な Pod の正常な完了数のオプションの値です。 デフォルトは 1 に設定されます。
- コントローラーが作成する Pod のテンプレートです。
- Pod の再起動ポリシー。これは、ジョブコントローラーには適用されません。詳細は、「既知の制限事項」 を参照してください。
oc run
を使用して単一コマンドからジョブを作成し、起動することもできます。以下のコマンドは直前の例に指定されている同じジョブを作成し、これを起動します。
$ oc run pi --image=perl --replicas=1 --restart=OnFailure \ --command -- perl -Mbignum=bpi -wle 'print bpi(2000)'
37.2.1. 既知の制限事項
ジョブ仕様の再起動ポリシーは Pod にのみ適用され、ジョブコントローラー には適用されません。ただし、ジョブコントローラーはジョブを完了まで再試行するようハードコーディングされます。
そのため restartPolicy: Never
または --restart=Never
により、restartPolicy: OnFailure
または --restart=OnFailure
と同じ動作が実行されます。つまり、ジョブが失敗すると、成功するまで (または手動で破棄されるまで) 自動で再起動します。このポリシーは再起動するサブシステムのみを設定します。
Never
ポリシーでは、ジョブコントローラー が再起動を実行します。それぞれの再試行時に、ジョブコントローラーはジョブステータスの失敗数を増分し、新規 Pod を作成します。これは、それぞれの試行が失敗するたびに Pod の数が増えることを意味します。
OnFailure
ポリシーでは、kubelet が再起動を実行します。それぞれの試行によりジョブステータスでの失敗数が増分する訳ではありません。さらに、kubelet は同じノードで Pod の起動に失敗したジョブを再試行します。