Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 演算子
/

MongoDB リソースのクラスタートポロジーの構成

項目一覧

  • 前提条件
  • 手順

NodeAffinityPodAffinityを定義することで、Kubernetes 内で MongoDB リソースの配置トポロジーを構成できます。 NodeAffinityPodAffinityは、Kubernetes が Kubernetes クラスターに MongoDB カスタム リソースを配置する場所を指定します。

ノードのアフィニティ を実装できます ノード ラベルの labelSelector適用による Kubernetes クラスター内の特定のノードに適用され、MongoDB CustomResourceDefinition で対応するラベルを持つ フィールドを定義します。 。ノード ラベル を適用する場合 およびlabelSelector 値に一致する場合、Kubernetes は指定された MongoDB CustomResourceDefinition のみを配置します。 Kubernetes クラスター内で指定したノード上。ノード アフィニティ ルールを実装すると、特定のノードタイプに特定のリソースを配置できるため、異種ノードグループに MongoDB リソースを配置する際に便利です。

同様に、 ラベル を適用して PodlabelSelector アフィニティを実装できます クラスターで実行されているポッドに接続し、それらのラベル値を MongoDB CustomResourceDefinition で定義された 値と整合させます 。ラベル を適用する場合 とlabelSelector 値に一致する場合、Kubernetes は MongoDB カスタム リソースが管理する ポッドと、一致するラベルが適用されたポッドを照合します。ポッドを照合することで、システムのパフォーマンスが向上し、定期的に通信するポッド間のレイテンシが軽減されます。 また、照合してはなりません。

スタンドアロンとレプリカセットの配置では、これらのアフィニティ ルールをspec.podSpec MongoDB CustomResourceDefinition の に適用できます 。シャーディングされたクラスター配置の場合、これらのアフィニティ ルールは MongoDBspec.configSrvPodSpec CustomResourceDefinitionspec.mongosPodSpec の 、spec.shardPodSpec 、および セクションに適用できます。 。

シャーディングされたクラスター に配置する場合、 mongos 、シャード、コンフィギュレーションサーバーなどの MongoDB リソースは、MongoDB リソースと同じ名前空間に配置する必要があります。 ただし、その名前空間内で、 CustomResourceDefinition で 、シャード、コンフィギュレーションサーバーのリソースタイプに対して と を構成できます 。nodeAffinitypodAffinitymongosShardedCluster

MongoDB 配置の配置トポロジーを構成するには、MongoDB Kubernetes Operator を通じて配置された MongoDB レプリカセットlabelSelectors と、MongoDB CustomResourceDefinition で定義された と一致する Kubernetes リソースに適用されたラベルが必要です。 または 次の前提条件を満たす必要があります。

1

次の例に示すように、MongoDB シャーディングされたクラスター定義のpodTemplate.affinityセクションに入力します。

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: my-sharded-cluster
6spec:
7 shardCount: 2
8 mongodsPerShardCount: 3
9 mongosCount: 2
10 configServerCount: 3
11 version: 6.0.0
12 service: my-service
13
14 opsManager:
15 configMapRef:
16 name: my-project
17 credentials: my-credentials
18 type: ShardedCluster
19
20 persistent: true
21 configSrvPodSpec:
22 podTemplate:
23 spec:
24 affinity:
25 podAffinity:
26 requiredDuringSchedulingIgnoredDuringExecution:
27 - labelSelector:
28 matchExpressions:
29 - key: security
30 operator: In
31 values:
32 - S1
33 topologyKey: failure-domain.beta.kubernetes.io/zone
34 nodeAffinity:
35 requiredDuringSchedulingIgnoredDuringExecution:
36 nodeSelectorTerms:
37 - matchExpressions:
38 - key: kubernetes.io/e2e-az-name
39 operator: In
40 values:
41 - e2e-az1
42 - e2e-az2
43 podAntiAffinity:
44 requiredDuringSchedulingIgnoredDuringExecution:
45 - podAffinityTerm:
46 topologyKey: nodeId
47 mongosPodSpec:
48 podTemplate:
49 spec:
50 affinity:
51 podAffinity:
52 requiredDuringSchedulingIgnoredDuringExecution:
53 - labelSelector:
54 matchExpressions:
55 - key: security
56 operator: In
57 values:
58 - S1
59 topologyKey: failure-domain.beta.kubernetes.io/zone
60 nodeAffinity:
61 requiredDuringSchedulingIgnoredDuringExecution:
62 nodeSelectorTerms:
63 - matchExpressions:
64 - key: kubernetes.io/e2e-az-name
65 operator: In
66 values:
67 - e2e-az1
68 - e2e-az2
69 podAntiAffinity:
70 requiredDuringSchedulingIgnoredDuringExecution:
71 - podAffinityTerm:
72 topologyKey: nodeId
73 shardPodSpec:
74 podTemplate:
75 spec:
76 affinity:
77 podAffinity:
78 requiredDuringSchedulingIgnoredDuringExecution:
79 - labelSelector:
80 matchExpressions:
81 - key: security
82 operator: In
83 values:
84 - S1
85 topologyKey: failure-domain.beta.kubernetes.io/zone
86 nodeAffinity:
87 requiredDuringSchedulingIgnoredDuringExecution:
88 nodeSelectorTerms:
89 - matchExpressions:
90 - key: kubernetes.io/e2e-az-name
91 operator: In
92 values:
93 - e2e-az1
94 - e2e-az2
95 podAntiAffinity:
96 requiredDuringSchedulingIgnoredDuringExecution:
97 - podAffinityTerm:
98 topologyKey: nodeId
99...
2
kubectl apply -f mongodb-crd.yaml

戻る

MongoDB データベースのバックアップの設定

項目一覧