57

従来のジョブ スケジューラを Kubernetes ジョブに置き換えようとしており、シーケンシャル ジョブを Kubernetes ジョブとして記述する方法を考えています。

まず、実行する次のスクリプトをjob1記述job2した順序で記述しましたが、期待どおりに動作しませんでした。

apiVersion: batch/v1
kind: Job
metadata:
  name: sequential
spec:
  activeDeadlineSeconds: 100
  template:
    metadata:
      name: sequential_jobs
    spec:
      containers:
      - name: job1
        image: image1
      - name: job2
        image: image2
      restartPolicy: Never

上記のジョブは並行して実行job1されているようです。書かれた順序で実行job2する良い方法はありますか?job1job2

添付。

最近、https://github.com/argoproj/argoが私のユースケースに非常に適していることがわかりました。

4

6 に答える 6

3

大まかに言うと、Kubernetes セットアップでは、コンテナー/ポッド全体の依存関係をシーケンスおよびキャプチャーするという概念はありません。

あなたの場合、ジョブ仕様 (またはポッド仕様) に 2 つのコンテナーがある場合、それらの 2 つのコンテナーのシーケンスはありません。同様に、2 つのジョブを次々に起動する場合、それらのジョブの順序付けの概念もありません。

理想的には、シーケンシングが必要な場合は、単一のユニット (コンテナー)内にキャプチャする必要があります。


あなたの質問に少し接していますが、ジョブが既存の別のサービスに依存しているときに私が見た別の一般的なパターン (k8s サービスが前面にある展開など):

ジョブ内のコンテナーは k8s サービスに要求を行い、サービスが期待どおりに応答しない場合は失敗します。そうすれば、ジョブは再起動し続け、最終的にサービスが起動すると、ジョブが実行されて正常に完了します。

于 2016-11-21T06:32:10.307 に答える