Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/
Operador de Kubernetes empresarial
/

Configurar topologia de cluster para recursos MongoDB

Você pode configurar a topologia de implantação de seus recursos do MongoDB no Kubernetes definindo NodeAffinity e PodAffinity. NodeAffinity e PodAffinity especificam onde o Kubernetes distribui os recursos personalizados do MongoDB em seu cluster do Kubernetes.

Você pode implementar labelSelector a afinidade do nó aplicando rótulos de nó a nós específicos dentro do cluster do Kubernetes e definindo campos com rótulos correspondentes no MongoDB CustomResourceDefinition. Quando você aplica rótulos de nó e labelSelector valores correspondentes, o Kubernetes implanta apenas uma determinada CustomResourceDefinition do MongoDB nos nós especificados no cluster do Kubernetes. A implementação de regras de afinidade de nó pode ser útil ao distribuir recursos do MongoDB em grupos de nós heterogêneos, pois permite distribuir recursos específicos em variedades de nó específicas.

Da mesma forma, você pode implementar labelSelector a afinidade do Pod aplicando rótulos aos Pods que estão em execução em seu cluster e alinhando esses valores de rótulo com valores definidos em seu MongoDB CustomResourceDefinition . Quando você aplica labelSelector rótulos e valores correspondentes, o Kubernetes coloca os Pods gerenciados por recursos personalizados do MongoDB com Pods com rótulos correspondentes aplicados. Ao colocar Pods, você pode melhorar o desempenho do sistema e reduzir a latência entre Pods que se comunicam regularmente. Você também pode definir regras de antiafinidade de Pod que permitem especificar Pods que não devem ser colocalizados.

Para sistemas Standalone e de Conjunto de Réplicas, você pode aplicar essas regras de afinidade ao de spec.podSpec seu MongoDB CustomResourceDefinition. Para sistemas de cluster fragmentado, você pode aplicar estas regras de afinidade às spec.configSrvPodSpec seções , spec.shardPodSpec e spec.mongosPodSpec do seu MongoDB CustomResourceDefinition.

Você deve mongos implantar recursos do MonogDB, como, shards e servidores de configuração no caso de uma implantação de cluster fragmentado, no mesmo namespace que o recurso MongoDB . No entanto, dentro desse namespace, você pode configurar o nodeAffinity e podAffinity o mongos para, shards e tipos de recursos do servidor de configuração no ShardedCluster CustomResourceDefinition.

Para configurar a topologia de implantação para sua implantação do MongoDB , você deve ter um conjunto de réplicas do MongoDB distribuído pelo MongoDB Kubernetes Operator junto com rótulos aplicados aos recursos do Kubernetes que se alinharão com labelSelectors definido na CustomResourceDefinition do MongoDB ou atender aos seguintes pré-requisitos:

1

Preencha as seções podTemplate.affinity da sua definição de Cluster Fragmentado MongoDB como mostrado no seguinte exemplo:

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

Voltar

Configurar backups

Nesta página