对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

为MongoDB资源配置集群拓扑

您可以通过定义NodeAffinityPodAffinity在Kubernetes中配置MongoDB资源的部署拓扑结构。 NodeAffinityPodAffinity指定Kubernetes在Kubernetes集群中部署MongoDB自定义资源的位置。

You can implement node affinity by applying node labels to specific nodes within your Kubernetes cluster and defining labelSelector fields with corrosponding labels in your MongoDB CustomResourceDefinition. When you apply node labels and matching labelSelector values, Kubernetes only deploys a given MongoDB CustomResourceDefinition on the nodes you specify within your Kubernetes cluster. Implementing node affinity rules can be useful when deploying MongoDB resources in heterogeneous node groups, as it allows you to deploy specific resources on specific node varieties.

Similarly, you can implement Pod affinity by applying labels to Pods that are running in your cluster and aligning those label values with labelSelector values defined in your MongoDB CustomResourceDefinition. When you apply labels and matching labelSelector values, Kubernetes colocates MongoDB custom resource-managed Pods with Pods with matching labels applied. By collocating Pods, you can improve system performance and reduce latency between Pods that communicate regularly. You can also define Pod antiaffinity rules which allow you to specify Pods which should not be colocated.

For Standalone and Replica Set deployments, you can apply these affinity rules to the spec.podSpec of your MongoDB CustomResourceDefinition. For Sharded Cluster deployments, you can apply these affinity rules to the spec.configSrvPodSpec, spec.shardPodSpec, and spec.mongosPodSpec sections of your MongoDB CustomResourceDefinition.

您必须将MongoDB资源(例如分片集群部署中的 mongos、分片和配置服务器)部署在与MongoDB资源相同的命名空间中。但是,在该命名空间内,您可以在 ShardedCluster CustomResourceDefinition 中配置 mongos、分片和配置服务器资源类型的 nodeAffinitypodAffinity

要为MongoDB 部署配置部署拓扑结构,您必须通过MongoDB Kubernetes Operator 部署MongoDB副本集,并应用于Kubernetes资源的标签,这些标签将与MongoDB CustomResourceDefinition 中定义的 labelSelectors 保持一致,或者满足以下先决条件:

1

填充MongoDB分片集群定义的podTemplate.spec.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: 8.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
给本页内容打分

在此页面上