표준 Kubernetes Operator 배포서버 구성하는 MongoDB Ops Manager , MongoDB 데이터베이스, AppDB 및 백업 디먼 사용자 지정 리소스는 각각 Kubernetes statefulSets 로 배포됩니다. Kubernetes Operator는 기본 Kubernetes storageClass 가 Kubernetes persistentVolume 확장 지원할 때 해당 Kubernetes persistentVolumeClaims 의 용량 늘려 이러한 특정 리소스와 관련된 저장 증가를 지원합니다.
특정 리소스 유형에 따라 두 가지 방법 중 하나로 저장 를 늘릴 수 있습니다. 저장 를 수동으로 늘리거나 Kubernetes Operator의 간편한 저장 확장 기능 을 활용할 수 있습니다. 다음 표는 지정된 사용자 지정 리소스 유형에 대해 이 두 가지 절차 중 어떤 것이 지원되는지 보여줍니다.
| 사용자 지정 리소스 유형 | 수동 스토리지 확장 | 간편한 스토리지 확장 | 
|---|---|---|
| AppDB | ||
| 백업 데몬 | ||
| MongoDB 데이터베이스 | ||
| MongoDB 멀티 클러스터 | ||
| Ops Manager | 
전제 조건
스토리지 클래스는 크기 조정을 지원해야 함
영구 볼륨이 사용하는 StorageClass 및 볼륨 플러그인 제공자 크기 조정을 지원하는지 확인합니다.
kubectl patch storageclass/<my-storageclass> --type='json' \         -p='[{"op": "add", "path": "/allowVolumeExpansion", "value": true }]' 
크기 조정을 지원하는 storageClass 이(가) 없는 경우 Kubernetes 관리자에게 도움을 요청하세요.
간편한 스토리지 확장
참고
쉬운 확장 메커니즘에는 Kubernetes Operator에 포함된 기본값 RBAC가 필요합니다. 구체적으로 persistantVolumeClaims 에 대한 get, list, watch, patch 및 update 권한이 필요합니다. Kubernetes Operator RBAC 리소스를 사용자 정의한 경우, Kubernetes Operator가 Kubernetes 클러스터 의 저장 리소스 크기를 조정할 수 있도록 권한을 조정해야 할 수 있습니다.
이 프로세스 를 수행하면 Kubernetes 클러스터 의 MongoDB 사용자 지정 리소스 가 순차적으로 롤링 재시작 됩니다.
영구 사용자 지정 리소스 생성하거나 식별합니다.
기존 데이터베이스 리소스 를 사용하거나 영구 저장 가 있는 새 데이터베이스를 만듭니다. 영구 볼륨이 Running 상태 에 들어갈 때까지 기다립니다.
예시
영구 저장이 있는 데이터베이스 리소스에는 다음이 포함됩니다.
1 apiVersion: mongodb.com/v1 2 kind: MongoDB 3 metadata: 4   name: <my-replica-set> 5 spec: 6   members: 3 7   version: "4.4.0" 8   project: my-project 9   credentials: my-credentials 10   type: ReplicaSet 11   podSpec: 12     persistence: 13       single: 14         storage: "1Gi" 
리소스 가 제공하는 데이터베이스 에 데이터를 삽입합니다.
- Kubernetes 클러스터에서 - mongo을(를) 시작합니다.- kubectl exec -it <my-replica-set>-0 \ - /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-4.4.0/bin/mongo 
- test데이터베이스에 데이터를 삽입합니다.- <my-replica-set>:PRIMARY> use test - switched to db test - <my-replica-set>:PRIMARY> db.tmp.insertOne({"foo":"bar"}) - { - "acknowledged" : true, - "insertedId" : ObjectId("61128cb4a783c3c57ae5142d") - } 
데이터베이스 리소스를 새 스토리지 값으로 업데이트합니다.
중요
기존 저장 리소스의 디스크 크기는 늘릴 수만 있고 줄일 수는 없습니다. 저장 크기를 줄이면 조정 단계에서 오류가 발생합니다.
- 디스크 크기를 업데이트합니다. 원하는 텍스트 편집기를 열고 다음 예시와 유사하게 변경합니다. - 예시- 복제본 세트 의 디스크 크기를 2 GB 로 업데이트 하려면 데이터베이스 리소스 사양에서 - storage값을 변경합니다.- 1 - apiVersion: mongodb.com/v1 - 2 - kind: MongoDB - 3 - metadata: - 4 - name: <my-replica-set> - 5 - spec: - 6 - members: 3 - 7 - version: "4.4.0" - 8 - project: my-project - 9 - credentials: my-credentials - 10 - type: ReplicaSet - 11 - podSpec: - 12 - persistence: - 13 - single: - 14 - storage: "2Gi" 
- MongoDB 사용자 지정 리소스 를 새 볼륨 크기로 업데이트합니다. - kubectl apply -f my-updated-replica-set-vol.yaml 
- 이 StatefulSet가 - Running상태를 달성할 때까지 기다립니다.
영구 볼륨 클레임의 크기가 조정되었는지 확인합니다.
Persistent Volumes 를 재사용하는 경우 Persistent Volumes 에 저장된 데이터베이스에서 단계 에서 삽입한 데이터를 2 찾을 수 있습니다.
kubectl describe mongodb/<my-replica-set> -n mongodb 
다음 출력은 PVC 크기 조정 요청 이 처리 중임을 나타냅니다.
status:   clusterStatusList: {}   lastTransition: "2024-08-21T11:03:52+02:00"   message: StatefulSet not ready   observedGeneration: 2   phase: Pending   pvc:     - phase: PVC Resize - STS has been orphaned       statefulsetName: multi-replica-set-pvc-resize-0   resourcesNotReady:     - kind: StatefulSet       message: 'Not all the Pods are ready (wanted: 2, updated: 1, ready: 1, current:2)'       name: multi-replica-set-pvc-resize-0   version: "" 
업데이트된 영구 볼륨 클레임에 데이터가 있는지 확인합니다.
Persistent Volumes 를 재사용하는 경우 Persistent Volumes 에 저장된 데이터베이스에서 단계 에서 삽입한 데이터를 2 찾을 수 있습니다.
kubectl exec -it <my-replica-set>-1 \           /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-4.4.0/bin/mongo 
<my-replica-set>:PRIMARY> use test switched to db test <my-replica-set>:PRIMARY> db.tmp.count() 1 
수동으로 스토리지 확장
영구 사용자 지정 리소스 생성하거나 식별합니다.
기존 데이터베이스 리소스를 사용하거나 영구 저장으로 새 데이터베이스 리소스를 만듭니다. 영구 볼륨이 Running 상태가 될 때까지 기다립니다.
예시
영구 저장이 있는 데이터베이스 리소스에는 다음이 포함됩니다.
1 apiVersion: mongodb.com/v1 2 kind: MongoDB 3 metadata: 4   name: <my-replica-set> 5 spec: 6   members: 3 7   version: "4.4.0" 8   project: my-project 9   credentials: my-credentials 10   type: ReplicaSet 11   podSpec: 12     persistence: 13       single: 14         storage: "1Gi" 
리소스가 제공하는 데이터베이스에 데이터를 삽입합니다.
- Kubernetes 클러스터에서 - mongo을(를) 시작합니다.- kubectl exec -it <my-replica-set>-0 \ - /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-4.4.0/bin/mongo 
- test데이터베이스에 데이터를 삽입합니다.- <my-replica-set>:PRIMARY> use test - switched to db test - <my-replica-set>:PRIMARY> db.tmp.insertOne({"foo":"bar"}) - { - "acknowledged" : true, - "insertedId" : ObjectId("61128cb4a783c3c57ae5142d") - } 
각 지속성 볼륨을 패치합니다.
전체 복제본 세트에 대해 다음 명령을 실행합니다.
kubectl patch pvc/"data-<my-replica-set>-0" -p='{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}' kubectl patch pvc/"data-<my-replica-set>-1" -p='{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}' kubectl patch pvc/"data-<my-replica-set>-2" -p='{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}' 
각 영구 볼륨 클레임 이 다음 상태가 될 때까지 기다립니다.
- lastProbeTime: null   lastTransitionTime: "2019-08-01T12:11:39Z"   message: Waiting for user to (re-)start a pod to finish file            system resize of volume on node.   status: "True"   type: FileSystemResizePending 
연산자를 중지합니다.
Kubernetes Operator 배포서버 정의를 업데이트하고 변경 사항을 Kubernetes 클러스터 에 적용 하여 Kubernetes Operator를 복제본 0 개로 확장하다 합니다. Kubernetes Operator를 0 복제본으로 축소하면 Kubernetes Operator가 수동으로 업데이트된 리소스 의 상태 를 리소스의 원래 정의에 맞게 복원 하려고 하는 경합 상태를 방지할 수 있습니다.
# Source: enterprise-operator/templates/operator.yaml apiVersion: apps/v1 kind: Deployment metadata:   name: mongodb-enterprise-operator   namespace: mongodb spec:   replicas: 0 
StatefulSet를 제거합니다.
참고
이 단계에서는 StatefulSet 만 제거합니다. pod는 변경되지 않고 실행 상태로 유지됩니다.
StatefulSet 리소스 삭제합니다.
kubectl delete sts --cascade=false <my-replica-set> 
데이터베이스 리소스를 새 스토리지 값으로 업데이트합니다.
- 디스크 크기를 업데이트합니다. 원하는 텍스트 편집기를 열고 다음 예시와 유사하게 변경합니다. - 예시- 복제본 세트 의 디스크 크기를 2 GB 로 업데이트 하려면 데이터베이스 리소스 사양에서 - storage값을 변경합니다.- 1 - apiVersion: mongodb.com/v1 - 2 - kind: MongoDB - 3 - metadata: - 4 - name: <my-replica-set> - 5 - spec: - 6 - members: 3 - 7 - version: "4.4.0" - 8 - project: my-project - 9 - credentials: my-credentials - 10 - type: ReplicaSet - 11 - podSpec: - 12 - persistence: - 13 - single: - 14 - storage: "2Gi" 
- 새 볼륨 크기로 StatefulSet 리소스 다시 생성합니다. - kubectl apply -f my-replica-set-vol.yaml 
- MongoDB 사용자 지정 리소스 가 - Running상태 가 될 때까지 기다립니다.