Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
엔터프라이즈 Kubernetes 운영자
/

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

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

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

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

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

샤드 mongos nodeAffinity podAffinity mongos ShardedCluster 클러스터 배포서버 의 경우, 샤드 및 config 서버와 같은 MongoDB 리소스를 MongoDB 리소스 와 동일한 네임스페이스 에 배포 해야 합니다. 그러나 해당 네임스페이스 내에서는 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

돌아가기

백업 구성

이 페이지의 내용