2016-03-24 8 views
10

ここでは、多くのバッチ処理にKubernetes Jobを使用しています。監視用サイドカーを使用して各ジョブを計測して、集中追跡システムをジョブの進捗状況に合わせて更新したいと考えています。Kubernetesのサイドカーコンサルタント求人?

唯一の問題は、ジョブ内の複数のコンテナのセマンティクスが何であるか(または想定されているか)把握できないことです。

私は、私のメインのタスクが完了した後、Job sがSuccessfulとKubernetesでkubectl get pods 1.2.0ショーを考えられている(「こんにちは」のプリントごとに1秒alpineサイドカー付き)とにかくそれに打撃を与えました

NAME           READY  STATUS  RESTARTS AGE 
    job-69541b2b2c0189ba82529830fe6064bd-ddt2b 1/2  Completed 0   4m 
    job-c53e78aee371403fe5d479ef69485a3d-4qtli 1/2  Completed 0   4m 
    job-df9a48b2fc89c75d50b298a43ca2c8d3-9r0te 1/2  Completed 0   4m 
    job-e98fb7df5e78fc3ccd5add85f8825471-eghtw 1/2  Completed 0   4m 

そして、私は仕事のYAMLをINGのGET次に、これらのポッドの1

State:    Terminated 
    Reason:   Completed 
    Exit Code:  0 
    Started:   Thu, 24 Mar 2016 11:59:19 -0700 
    Finished:   Thu, 24 Mar 2016 11:59:21 -0700 

を記述した場合、コンテナごとの情報を示しています

status: 
    conditions: 
    - lastProbeTime: null 
     lastTransitionTime: 2016-03-24T18:59:29Z 
     message: 'containers with unready status: [pod-template]' 
     reason: ContainersNotReady 
     status: "False" 
     type: Ready 
    containerStatuses: 
    - containerID: docker://333709ca66462b0e41f42f297fa36261aa81fc099741e425b7192fa7ef733937 
     image: luigi-reduce:0.2 
     imageID: docker://sha256:5a5e15390ef8e89a450dac7f85a9821fb86a33b1b7daeab9f116be252424db70 
     lastState: {} 
     name: pod-template 
     ready: false 
     restartCount: 0 
     state: 
     terminated: 
      containerID: docker://333709ca66462b0e41f42f297fa36261aa81fc099741e425b7192fa7ef733937 
      exitCode: 0 
      finishedAt: 2016-03-24T18:59:30Z 
      reason: Completed 
      startedAt: 2016-03-24T18:59:29Z 
    - containerID: docker://3d2b51436e435e0b887af92c420d175fafbeb8441753e378eb77d009a38b7e1e 
     image: alpine 
     imageID: docker://sha256:70c557e50ed630deed07cbb0dc4d28aa0f2a485cf7af124cc48f06bce83f784b 
     lastState: {} 
     name: sidecar 
     ready: true 
     restartCount: 0 
     state: 
     running: 
      startedAt: 2016-03-24T18:59:31Z 
    hostIP: 10.2.113.74 
    phase: Running 

それで、私のサイドカーがメインプロセス(どのように)を見て、それがポッド内に単独であると検出すると正常に終了する必要がありますか?これが正しい場合は、サイドカーがメインコンテナのリターンコードで終了する必要がありますが、そのためのベストプラクティス/パターンはありますか?それをどのように取得しますか? ポッドに2つのコンテナがある場合、ポッド内のすべてのコンテナが終了コード0で返されるまで成功していないと見なされます。

さらに、restartPolicy: OnFailureがポッドスペックに設定されている場合、ポッド内のゼロ以外の終了コードで終了するコンテナは、同じポッドで再起動されます(これは監視サイドカーが特定の番号の後にジョブを再試行して削除します(Kubernetesジョブで現在使用可能な最大限の再試行はありません)。

+0

これは決して洗練された解決策ではありませんが、実際にメインコンテナをプローブするサイドカーにライオンズプローブを設定することができます。その後、メインコンテナが下がると、プローブは失敗し、kubeletはサイドカーを殺します。 –

答えて

3

downward apiを使用すると、サイドカー内から独自のpodnameを把握し、apiserverから独自のポッドを取得して存在状況を検索することができます。これがどうなるか教えてください。

+0

@JKnightどうしたの? – pkyeck

+0

@PhilippKyeck、主なコンテナのステータスを確認するためにサイドカーに下位APIを使用しました。私は実行可能なオプションとしてそれをお勧めしたいと思います。 – JKnight

+1

@JKnight私が見る限り、下向きのAPIはコンテナのステータスを公開しません。このソリューションをどのように実装したかについて詳細を分かち合いましょうか? – Adrian

関連する問題