AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

MongoDB Search 인덱스 저장 확장

mongot 프로세스는 MongoDB Search 및 Vector Search 인덱스를 전용 Persistent Volume에 저장합니다. Kubernetes Operator는 해당 저장소를 자동으로 확장하지 않습니다. Kubernetes 연산자 1.9 이상에서는 mongot Persistent Volume Claims를 확장한 다음 MongoDBSearch 리소스를 업데이트하여 확장된 볼륨 크기를 반영할 수 있습니다. 다른 리소스의 저장 공간을 늘리려면 영구 볼륨의 저장 공간 늘리기를 참조하세요.

이 절차 동안 MongoDBSearch 리소스, mongot statefulSets 및 해당 Persistent Volume Claims, 그리고 Kubernetes 연산자 배포서버에 대해 명령을 실행합니다. 다중 클러스터 배포서버에서 이러한 대상은 서로 다른 클러스터에 상주할 수 있습니다. 다음 표를 사용하여 각 명령에 대한 컨텍스트와 중지 및 재개할 연산자를 결정합니다.

배포
MongoDBSearch 리소스 컨텍스트
중지 및 재개용 연산자

단일 클러스터

워크로드 클러스터

동일한 클러스터

로컬 연산자

중앙 다중 클러스터 Kubernetes 연산자

중앙 클러스터

영향을 받는 각 노드 클러스터

중앙 연산자

노드 클러스터당 Kubernetes 연산자

각 노드 클러스터의 로컬 Search 리소스

동일한 노드 클러스터

영향을 받는 각 노드의 Search 연산자

다음 절차는 복제본 세트 Search 저장소를 1Gi에서 2Gi로 확장합니다. 각 StatefulSet를 clusters 배열의 항목 위치가 아닌 클러스터 항목의 name 및 명시적 index에 일치시킵니다.

일치하는 shardOverrides[].persistence 설정이 클러스터의 persistence 설정을 대체합니다. 설정한 경우 해당 위치에서 크기를 변경합니다. spec.clusters[].statefulSet에서 volumeClaimTemplates을(를) 재정의하는 경우 거기에서 크기를 변경하세요. 해당 재정의가 persistence보다 우선합니다.

경고

기존 MongoDBSearch 리소스와 해당 Persistent Volume Claims는 유지하면서 저장만 확장하고 mongot은 축소하지 마세요. StatefulSet 정의만 삭제하고, --cascade=orphan 옵션을 사용하여 Kubernetes Operator가 중지된 동안 mongot Pods 및 해당 클레임이 그대로 유지되도록 하세요.

1

MongoDBSearch 리소스에 대한 mongot statefulSets을(를) 나열합니다.

kubectl --context <member-context> -n <namespace> \
get sts -l mongodb.com/search-name=<search-name>

기본값 data 클레임 템플릿을 사용하면 각 복제본은 data-<statefulset-name>-<ordinal>이라는 클레임을 사용합니다. 샤딩된 클러스터 소스의 경우 각 클러스터에는 각 샤드에 대해 하나의 StatefulSet가 있습니다. 클레임 템플릿이나 볼륨 마운트를 사용자 지정한 경우 각 Pod가 마운트하는 클레임을 대신 확인하세요.

2

이전 단계에서 식별한 각 클레임에 대해 다음 명령을 실행합니다.

kubectl --context <member-context> -n <namespace> \
patch pvc <pvc-name> --type=merge \
-p '{"spec":{"resources":{"requests":{"storage":"2Gi"}}}}'

각 클레임이 status.capacity.storage 또는 FileSystemResizePending 조건에서 요청된 크기(이 예시에서는 2Gi) 이상을 보고할 때까지 기다립니다.

kubectl --context <member-context> -n <namespace> \
get pvc <pvc-name> -o yaml

확장에 저장 백엔드의 문서화된 제한 시간보다 더 오래 걸리는 경우, 계속하기 전에 CSI 이벤트를 조사하십시오.

kubectl --context <member-context> -n <namespace> \
describe pvc <pvc-name>
3

각 연산자의 원래 복제본 수를 기록합니다.

kubectl --context <operator-context> -n <operator-namespace> \
get deployment <operator-name> \
-o jsonpath='{.spec.replicas}{"\n"}'

연산자를 0으로 확장하고 Pods이(가) 삭제될 때까지 기다립니다.

kubectl --context <operator-context> -n <operator-namespace> \
scale deployment <operator-name> --replicas=0
kubectl --context <operator-context> -n <operator-namespace> \
wait --for=delete pod --timeout=300s \
-l app.kubernetes.io/name=<operator-name>

mongot이 아닌 연산자를 확장합니다. Helm 차트는 연산자 배포서버 mongodb-kubernetes-operator의 이름을 지정하고 해당 Pods에 app.kubernetes.io/name: mongodb-kubernetes-operator을 설정합니다. 설치가 사용자 지정된 경우 이 예시에 표시된 차트 레이블 대신 Deployment의 실제 Pod 선택기를 사용하세요. 계속하기 전에 종료 중인 Pods 를 포함하여 모든 책임 있는 연산자 Pods 를 중지합니다. 별도의 소스 데이터베이스 연산자를 중지해도 노드 Search 연산자는 일시 중지되지 않습니다.

4

1단계에서 식별한 각 StatefulSet에 대해 다음 명령을 실행합니다.

kubectl --context <member-context> -n <namespace> \
delete sts <statefulset-name> --cascade=orphan \
--timeout=300s

각 StatefulSet이 없는지 확인하는 동시에 기존 mongot Pods 및 Persistent Volume Claims가 삭제 타임스탬프 없이 그대로 유지되는지 확인합니다. MongoDBSearch 리소스를 삭제하거나 mongot을(를) 확장하지 마십시오.

5
kubectl --context <search-resource-context> -n <namespace> \
edit mongodbsearch <search-name>

영향을 받는 클러스터 항목의 persistence.single.storage 값을 변경합니다.

persistence:
single:
storage: 2Gi

노드 클러스터 배포서버당 Kubernetes 연산자에서 모든 로컬 검색 리소스의 해당 설정을 업데이트합니다.

기존 저장 클래스, 클러스터 항목, 인덱스, 복제본 및 기타 설정을 유지합니다. 클러스터 항목을 제거하면 해당 클러스터의 Search 리소스 및 클레임이 삭제될 수 있습니다.

Search 리소스를 다시 읽어 새로운 유효 크기가 유지되었는지 확인합니다. 대상 statefulSets은(는) 연산자를 다시 시작할 때까지 존재하지 않아야 합니다.

6

각 연산자의 자체 기록된 복제본 수를 복원합니다.

kubectl --context <operator-context> -n <operator-namespace> \
scale deployment <operator-name> \
--replicas=<original-replicas>
kubectl --context <operator-context> -n <operator-namespace> \
rollout status deployment/<operator-name> --timeout=600s

확장된 data 클레임 템플릿과 함께 각 StatefulSet이 다시 나타날 때까지 기다립니다. 새 StatefulSet은 기존 Pods 및 클레임을 채택합니다.

7

FileSystemResizePending 상태가 지속되면 영향을 받는 mongot Pods를 한 번에 하나씩 삭제하세요.

kubectl --context <member-context> -n <namespace> \
delete pod <mongot-pod-name> --timeout=300s
kubectl --context <member-context> -n <namespace> \
wait --for=condition=Ready pod/<mongot-pod-name> \
--timeout=600s

준비 명령을 실행하기 전에 교체 Pod가 존재할 때까지 기다리세요. 교체가 준비되고 상태가 지워진 후에만 다음 Pod를 다시 시작하세요. 확장이 온라인으로 완료되면 이 단계를 건너뜁니다.

참고

Pod를 직접 삭제하면 PodDisruptionBudget을 우회합니다. 단일 mongot 복제본은 다시 시작하는 동안 요청을 제공할 수 없습니다. 이 절차는 다운타임 제로를 보장하지 않습니다.

8

각 Persistent Volume Claim이 최소한 요청된 용량을 보고하는지, 예상되는 모든 mongot Pods가 준비되었는지, 그리고 각 Search 리소스가 조정 후 Running 단계에 도달하는지 확인합니다.

연산자가 중지된 동안 단계가 실패하면 Search 리소스, 해당 Pods 및 클레임을 그대로 유지합니다. 유효한 저장 설정을 수정하고 일시 중지된 모든 연산자를 원래 복제본 수로 복원합니다. 구성을 수정하기 전에 다시 시작하는 경우 클레임을 축소하거나 삭제하지 말고 나중에 절차를 완료하십시오.

Pod 또는 클레임이 삭제되기 시작하면 추가 삭제를 중지하고 Kubernetes 또는 저장 관리자에게 문의하세요. 해결 방법으로 finalizer를 제거하거나 PV.spec.capacity를 편집하지 마세요.