AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

MongoDB Search インデックスのストレージを拡張する

mongot プロセスは、MongoDB Search および Vector Search インデックスを専用の Persistent Volume に保存します。Kubernetes 演算子は、そのストレージを自動的に拡張しません。Kubernetes 演算子 1.9 以降では、mongot Persistent Volume Claims を拡張し、拡張されたボリュームサイズを反映するように MongoDBSearch リソースを更新できます。他のリソースのストレージを増やす方法については、「永続ボリュームのストレージを増やす」を参照してください。

  • mongot ボリュームが接続されたままのボリューム展開をサポートする CSV(Container Storage Interface)ドライバーと、そのドライバーを表し、 を に設定する StorageClassallowVolumeExpansion trueを使用してプロビジョニングされる永続的なボリューム要求。ファイルシステムが展開をサポートしていることを確認します。この手順では、コントローラーがボリュームを展開する前にボリュームをデタッチする必要があるストレージバックエンドには対応していません。

  • 正常なソースデータベース、MongoDB Searchおよびベクトル検索の配置、そしてバックアップまたはリカバリ計画。ソースデータベースのバックアップを構成するには、「MongoDB データベース バックアップの構成」を参照してください。Searchで何をバックアップすべきかを学ぶには、「mongot 配置 Frequently Asked Questions」を参照してください。

  • Kubernetes 演算子またはMongoDBSearchリソースの同時拡大やアップグレードを伴わないメンテナンスウィンドウ。Kubernetes 演算子のレプリカを復元したり、Searchストレージの設定を元に戻したりする可能性のあるオートメーション(例:GitOps同期)を一時停止します。GitでMongoDBSearchリソースをマネージドしている場合は、同期を再開する前に新しいサイズをコミットしてください。演算子を停止すると、それが管理するすべてのリソースの調整が一時停止されます。

  • Persistent Volume Claimsのパッチ適用、MongoDBSearchリソースの編集、Kubernetes演算子配置の増やす、およびstatefulSetsとPodsを削除する権限。

この手順の間、MongoDBSearchリソース、mongot statefulSetsとそのPersistent Volume Claims、およびKubernetes演算子の配置に対してコマンドを実行します。マルチクラスター配置では、これらのターゲットは異なるクラスターに配置できます。次の表を使用して、各コマンドのコンテキストと、停止および再開する演算子を決定します。

配置
MongoDBSearch リソースコンテキスト
StatefulSetおよびPersistent Volume Claimコンテキスト
停止および再開する演算子

シングルクラスター

ワークロードクラスター

同じクラスター

ローカル演算子

中央マルチクラスターKubernetes 演算子

中央クラスター

影響を受ける各ノードクラスター

中央演算子

ノードクラスターごとのKubernetes 演算子

各ノードクラスターのローカルSearchリソース

同じノードクラスター

影響を受ける各ノードのSearch演算子

以下の手順で、レプリカセットのSearchストレージを1Giから2Giに拡張します。各 StatefulSet を、そのクラスターエントリの name および明示的な index と照合します。clusters 配列内のエントリの位置とは照合しません。

一致する shardOverrides[].persistence 設定が、クラスターの persistence 設定を置き換えます。設定した場合は、そこでサイズを変更してください。spec.clusters[].statefulSet で volumeClaimTemplates をオーバーライドした場合は、そこでサイズを変更してください。そのオーバーライドは persistence よりも優先されます。

警告

既存のMongoDBSearchリソースとそのPersistent Volume Claimsを維持したままストレージのみを増やし、mongotを縮小しないでください。StatefulSet定義のみを削除し、--cascade=orphanオプションを使用して、Kubernetes 演算子の停止中にmongotPodsとそのクレームがそのまま残るようにしてください。

1

MongoDBSearch リソースの mongot statefulSets を一覧表示します。

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

デフォルトの data クレームテンプレートでは、各レプリカは data-<statefulset-name>-<ordinal> という名前のクレームを使用します。シャーディングされたクラスターソースの場合、各クラスターには各シャードに対して 1 つの 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"}'

演算子をゼロに増やすし、その 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 を設定します。インストールがカスタマイズされている場合は、この例に示すチャートラベルの代わりに、配置の実際のポッドセレクターを使用してください。続行する前に、終了中の Pods を含め、すべての責任ある演算子 Pods を停止します。個別のソースデータベース演算子を停止しても、ノード検索演算子は一時停止されません。

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リソースと要求が削除される可能性があります。

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

各 StatefulSet が拡張された data クレームテンプレートで再表示されるのを待ちます。新しい StatefulSet は、既存の Pods とクレームを採用します。

7

FileSystemResizePendingの状態が続く場合は、影響を受けるmongot Podsを1つずつ削除してください:

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リソース、そのPod、およびクレームをそのまま保持してください。有効なストレージ設定を修正してから、一時停止したすべての演算子を元のレプリカ数に復元します。構成を修正する前に再開した場合は、クレームを縮小または削除するのではなく、後で手順を完了してください。

Pod またはクレームが削除され始めた場合は、それ以上の削除を停止し、Kubernetes またはストレージ管理者に問い合わせてください。回避策として finalizers を除くことや PV.spec.capacity を編集することはしないでください。