
Helm 経由で mongodb を実行しようとしています。プライマリ レプリカ 1 つとセカンダリ レプリカ 2 つを実行したいと考えています。
3 つの mongodb ポッドを作成したら、次の名前を設定します: mongo-0 mongo-1 mongo-2 そして、mongo-0 がプライマリであるとします。
次のコマンドを実行すると
helm install --name mongo ~/charts/stable/mongodb --set replicaSet.enabled=true,fullnameOverride=mongo
ポッドには命名は必要ありません:
kubectl get pods
NAME READY STATUS RESTARTS AGE
mongo-arbiter-0 1/1 Running 0 15s
mongo-primary-0 0/1 Running 0 15s
mongo-secondary-0 0/1 Running 0 15s
どうすれば変更できるかアドバイスをお願いします。values-production.yml を変更して試してみましたが、出力は同じでした。
答え1
変更する必要があるのはmongoDB ヘルム チャート テンプレート。
具体的には、次のファイルを変更する必要があります。
チャート/安定/mongodb/テンプレート/statefulset-arbiter-rs.yaml
編集行:
name: {{ template "mongodb.fullname" . }}-arbiter
そして
arbiter
必要な ReplicaSet の名前に置き換えます。
チャート/安定/mongodb/テンプレート/ステートフルセット-プライマリ-rs.yaml
編集行:
name: {{ template "mongodb.fullname" . }}-primary
そして
primary
必要な ReplicaSet の名前に置き換えます。
チャート/安定/mongodb/テンプレート/ステートフルセット-セカンダリ-rs.yaml
編集行:
name: {{ template "mongodb.fullname" . }}-secondary
そして
secondary
必要な ReplicaSet の名前に置き換えます。
答え2
私のコメントは読みやすい形式で表示されないため、ここにもコメントを投稿します:
これは良いアイデアですが、100% 効果的ではありません。ステートフルセットでポッドを実行しているため、kubectl get rs は出力を返しません。以下は kubectl get ss です。
kubectl get statefulsets
NAME DESIRED CURRENT AGE
mongo-0 1 1 93s
mongo-1 1 1 93s
mongo-2 1 1 93s
Crou の提案に従って設定を変更すると、次のようなポッドが作成されます。
kubectl get pods
NAME READY STATUS RESTARTS AGE
mongo-0-0 1/1 Running 0 39s
mongo-1-0 1/1 Running 0 39s
mongo-2-0 1/1 Running 0 39s
最後に -0 を削除したいので、次のようになります。
kubectl get pods
NAME READY STATUS RESTARTS AGE
mongo-0 1/1 Running 0 39s
mongo-1 1/1 Running 0 39s
mongo-2 1/1 Running 0 39s