Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 연산자
/

MongoDB 리소스에 대한 클러스터 토폴로지 구성

이 페이지의 내용

  • 전제 조건
  • 절차

NodeAffinityPodAffinity 를 정의하여 Kubernetes 내에서 MongoDB 리소스의 배포서버 토폴로지 를 구성할 수 있습니다. NodeAffinityPodAffinity 는 Kubernetes 클러스터 에서 Kubernetes 가 MongoDB 사용자 지정 리소스를 배포하는 위치를 지정합니다.

Kubernetes 클러스터 내의 특정 노드에 labelSelector 노드 레이블을 적용하고 MongoDB CustomResourceDefinition에서 해당 레이블이 있는 필드를 정의하여 노드 어피니티 를 구현 수 있습니다. 노드 labelSelector 레이블과 일치하는 값을 적용 하면 Kubernetes 는 Kubernetes 클러스터 내에서 지정한 노드에만 지정된 MongoDB CustomResourceDefinition을 배포합니다. 노드 선호도 규칙을 구현하면 특정 노드 에 특정 리소스를 배포 수 있으므로 이기종 노드 그룹에 MongoDB 리소스를 배포할 때 유용할 수 있습니다.

마찬가지로 레이블 을 적용하여 Pod 선호도를 구현 수 있습니다. 클러스터 에서 실행 파드에 추가하고 해당 레이블 값을 labelSelector MongoDB CustomResourceDefinition 에 정의된 값에 정렬합니다. . 레이블 을 적용 하는 labelSelector 경우 값이 일치하면 Kubernetes 는 MongoDB 사용자 지정 리소스 관리형 파드를 일치하는 레이블이 적용된 파드와 함께 배치합니다. 파드를 배치하면 시스템 성능을 개선하고 정기적으로 통신하는 파드 간의 지연 시간 을 줄일 수 있습니다. 또한 함께 배치되어서는 안 되는 파드를 지정할 수 있는 파드 반친화성 규칙을 정의할 수도 있습니다.

독립형 및 복제본 세트 배포의 경우 MongoDB CustomResourceDefinition 의 에 이러한 spec.podSpec 선호도 규칙을 적용 할 수 있습니다. . 샤드 클러스터 배포의 경우, 이러한 선호도 규칙을 MongoDB CustomResourceDefinition 의 spec.configSrvPodSpec, spec.shardPodSpecspec.mongosPodSpec .

샤드 클러스터 배포서버 의 경우 mongos, 샤드 및 config 서버와 같은 MongoDB 리소스 를 MongoDB 리소스와 동일한 네임스페이스 에 배포 해야 합니다. 그러나 nodeAffinity podAffinity mongos해당 ShardedCluster 네임스페이스 내에서 CustomResourceDefinition 에서 , 샤드 및 config 서버 리소스 유형에 대해 및 를 구성할 수 있습니다. .

MongoDB deployment 에 대한 배포서버 토폴로지 를 구성하려면 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

돌아가기

백업 구성

이 페이지의 내용