2017-02-05 7 views
0

高可用性のために2つ以上のレプリカを備えた新しいKubernetes配備。Kubernetesが複数のレプリカを配備 - ポッドにレプリカ番号を渡す方法

私は、最初のポッド上でコマンドを実行するのは、DBを作成しましょう、と他のレプリカが完成した最初の1を待たせすることができるようにしたいです。
これを実装するには、これがレプリカ#1であるかどうかをポッドで知りたいだけです。

だからポッドのエントリポイントに私がテストすることができます:

if [ $REPLICA_ID -eq 1 ]; then 
    CreateDB 
else 
    WaitForDB 
fi 

これはKubernetesで行うことができますか? Kubernetesで

答えて

2

Deploymentはステートレスとみなされ、したがって、あなたが探している機能を提供していません。むしろStatefulSetとその機能を調べるべきです。

StatefulSetordered creationをサポートしています。一般的に利用可能なポッド用のreadinessProbeと組み合わせると、目的の動作を作成できます。また、ポッド名はStatefulSetで安定していますので、hostnamePodでテストを行うことができます。代わりに受け入れ答えの

+0

完璧!これはまさに私が必要としていたものだと思われます... –

2

init containerは、より良いあなたの問題の説明に合わないでしょうか?

正常に実行されるためには、必要に応じて何らかのセマフォシステムを追加しますか?

+0

あなたは正しいですが、初期化コンテナは、データベースの初期化の例ではオプションになりますが、ポッド番号/注文に関する質問には答えませんでした。 – pagid

+0

素晴らしいアイデア! (+1)します。私はまだStatefulSetを使用していますが、initコンテナは私が求めるいくつかの追加機能を提供しなければなりません。どうも!新しい –

+0

何かがMirantisからK8S-のAppControllerである - スライド、最後にビデオリンク:http://www.slideshare.net/PiotrSiwczak/sf-bay-area-kubernetes-meetup-dec8-2016-deployment-models –

関連する問題