問題タブ [kubernetes-jobs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 1 つの kubernetes ジョブに、並列処理の定義が異なる複数のポッドを含めることはできますか?
開始する前に、それぞれが前の仕上げに依存する 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 のようなより完全なワークフロー エンジンが必要になる場合があります (まだ利用できません)。
python-3.x - Kubernetes ジョブが失敗した場合にのみ、フォローアップ (別の) ジョブを自動的に起動する方法はありますか?
環境:
現在、リクエストを受信すると、プロセスを実行するための Kubernetes ジョブを自動的に作成する Python Flask アプリがあります。ジョブが完了すると、結果が特定のエンドポイントにポストバックされます (変更されることはありません)。リクエストの詳細によっては、このプロセスの長さ (時間) とリソース要件が大きく異なる場合があります。これに Jobs を使用している理由は、ジョブが失敗時に再起動できるためです。
問題:
最大限の再起動を許可しても、プロセスがエラーになる場合があります。次の行に沿って何かを実装したい:
- ジョブが正常に終了した場合は、何もしません。
- 最大再試行回数に達した後にジョブが失敗した場合は、実行します
foo()
foo()
は、ジョブが正常に完了しない原因となったリクエストのパラメーターを含む HTTP リクエストを送信する非常に単純な Python 関数です。Python 関数である必要はありませんが、推奨されます。
注: ジョブが実行する必要がある Python 関数内の広範なエラー例外にすべてをラップしますが、メモリ不足のためにジョブが失敗する場合があります。