2017-04-20 10 views
3

各ポッドには1つのコンテナがあり、各コンテナには2つのJavaプロセスが実行されている配備が必要です。コンテナはプロセス(P1)から開始し、その特定のプロセス(P1)が終了すると、ポッドが再開します。可能なのは、コンテナを2つのプロセスから開始することが可能であり、それらの1つが強制終了されても、コンテナ(または各ポッドには1つのコンテナしかないので、私たちの場合はポッド)が再起動しますか?私はそれができない/できないと言っているこれに関する文書を見つけることができませんでした。また、2つのプロセスでコンテナを開始するにはどうすればよいですか?私は1つのプロセス(P1)でコンテナを起動し、他のプロセス(P2を起動した場合Kubernetes - コンテナを2つのプロセスで開始し、両方のプロセスにバインドするにはどうすればよいですか?

java -jar abc.jar 
java javaProcess 
or 
java javaProcess 
java -jar abc.jar 

:私は私のドッキングウィンドウの画像にこのような何か(javaProcessは、javaファイルである)をしようとすると、それだけで最初のプロセスが実行されます)コンテナが起動した後、コンテナはP2にバインドされないため、P2が終了するとコンテナは再起動しません。しかし、私は再起動する必要があります!

答えて

2

supervisordを使用してこれを行うことができます。メインプロセスはドッカーイメージのスーパーバイザーにバインドされ、2つのJavaプロセスはスーパーバイザーを使用して管理される必要があります。

supervisordの主な目的は、コンフィグレーションファイルのデータに基づいて に基づいてプロセスを作成して管理することです。それは サブプロセスを作成することで行います。スーパーバイザによって生成された各サブプロセスは、スーパーバイザによってスーパーバイザによって完全に管理されます(スーパーバイザは、それが作成する各プロセスの親プロセス です)。子供が死亡すると、監督者はSIGCHLD信号を介して死亡が通知された であり、 の適切な操作を実行します。

以下は、2つのJavaプロセスを開始するスーパーバイザ設定ファイルのサンプルです。お使いのドッキングウィンドウのファイル(supervisord.conf)

[supervisord] 
nodaemon=true 

[program:java1] 
user=root 
startsecs = 120 
autorestart = true 
command=java javaProcess1 

[program:java2] 
user=root 
startsecs = 120 
autorestart = true 
command=java javaProcess2 

あなたは、このような何か行う必要があります:あなたは、バックグラウンドでプロセスを実行するための「&」記号を追加することができます

RUN apt-get update && apt-get install -y supervisor 
RUN mkdir -p /var/log/supervisor 
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf 
CMD ["/usr/bin/supervisord"] 
+0

ご回答ありがとうございます。それをチェックします。すばやい質問ですから、スーパーバイザーはkubernetesでも実行できますか? – Tarun

+1

はい。ドッカーのイメージからsupervisordをインストールして起動し、設定ファイルを提供する必要があります。それはkuberentesとは何の関係もありません。 –

+0

回答のサンプルコンフィグを追加しました。 –

1

を。

java javaProcess & 
java -jar abc.jar 

このようにして、2つのプロセスがポッド内で実行されます。しかし、コンテナはフォアグラウンドにあるプロセスにバインドされます!

+0

両方のプロセスを同じ優先度にしてコンテナにバインドすることは可能ですか? – Tarun

関連する問題