開始する前に、それぞれが前の仕上げに依存する 3 つのタスクに分割されるバッチ ジョブがあります。
- 単一のポッドを実行する
- N 個のポッドを並行して実行 (
.spec.completions
=.spec.parallelism
= N) - M 個のポッドを並行して実行 (
.spec.completions
=.spec.parallelism
= M)
各タスクには、異なるリソース要件 (CPU/MEM/STORAGE) があります。現在、ジョブ #1 を開始し、終了するとkubectl
ジョブ #2 を開始するコマンドを実行し、ジョブ #3 も同様に開始します。私は3つの別々の仕事をしています。
これら 3 つのタスクに対して 1 つのジョブを定義できますか?
多分このようなもの:
- タスク 1 の単一ポッドを実行する
- タスク #2 に init コンテナーを定義して、タスク #1 の終了を待機する
- を使用して、タスク #2 の N ポッドを実行します。
.spec.completions
- タスク #2 の終了を待機するようにタスク # に初期化コンテナーを定義する
.spec.completions
タスク #3に適した別のポッドを使用して、タスク #3 の M ポッドを実行します。
同じジョブの下で別々のポッドと異なるポッドを.spec.parallelism
定義できるかどうかは明確ではありません。.spec.completions
そして、後のタスクの開始を遅らせるために個別の初期化コンテナを定義できれば。
これには、Argo のようなより完全なワークフロー エンジンが必要になる場合があります (まだ利用できません)。