Docs Menu
Docs Home
/ /

Configurar la topología del clúster para los recursos de MongoDB

Puede configurar la topología de implementación de sus recursos MongoDB dentro de Kubernetes definiendo NodeAffinity y PodAffinity. NodeAffinity y PodAffinity especifican dónde Kubernetes implementa los recursos personalizados de MongoDB en su clúster de Kubernetes.

Puedes implementar Afinidad de nodos mediante la aplicación de etiquetas a nodos específicos dentro de su clúster de Kubernetes y la definición labelSelector de campos con etiquetas correspondientes en su CustomResourceDefinition de MongoDB. Al aplicar etiquetas de nodo y labelSelector valores coincidentes, Kubernetes solo implementa una CustomResourceDefinition de MongoDB determinada en los nodos que especifique dentro de su clúster de Kubernetes. Implementar reglas de afinidad de nodos puede ser útil al implementar recursos de MongoDB en grupos de nodos heterogéneos, ya que permite implementar recursos específicos en variedades de nodos específicas.

De forma similar, puede implementar labelSelector la afinidad de pods aplicando etiquetas a los pods que se ejecutan en su clúster y alineando los valores de esas etiquetas con los valores definidos en su CustomResourceDefinition de MongoDB. labelSelector Al aplicar etiquetas y valores coincidentes, Kubernetes colocaliza los pods de MongoDB gestionados por recursos personalizados con los pods que tienen las etiquetas correspondientes. Al colocar los pods, puede mejorar el rendimiento del sistema y reducir la latencia entre los pods que se comunican regularmente. También puede definir reglas de antiafinidad de pods que le permitan especificar qué pods no deben colocarse.

Para implementaciones independientes y de conjuntos de réplicas, puede aplicar estas reglas de afinidad a las spec.podSpec de su CustomResourceDefinition de MongoDB. Para implementaciones de clústeres fragmentados, puede aplicar estas reglas de afinidad a las secciones, y de su CustomResourceDefinition spec.configSrvPodSpec spec.shardPodSpec spec.mongosPodSpecde MongoDB.

Debe implementar recursos de MongoDB,mongos como, fragmentos y servidores de configuración en el caso de una implementación de clúster fragmentado, en el mismo espacio de nombres que el recurso de MongoDB. Sin embargo, dentro de ese espacio de nombres, puede configurar nodeAffinity y podAffinity para los mongos tipos de recurso, fragmentos y servidores de configuración en la ShardedCluster CustomResourceDefinition.

Para configurar la topología de implementación para su implementación de MongoDB, debe tener un conjunto de réplicas de MongoDB implementado a través del Operador Kubernetes de MongoDB junto con etiquetas aplicadas a los recursos de Kubernetes que se alinearán con labelSelectors definido en MongoDB CustomResourceDefinition o cumplir con los siguientes requisitos previos:

1

Complete las secciones podTemplate.spec.affinity de su definición de clúster fragmentado de MongoDB como se muestra en el siguiente ejemplo:

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

Volver

Configurar copias de seguridad

En esta página