Milvus Operator を使用した Milvus クラスタのアップグレード

このガイドでは、Milvus Operator を使用して Milvus 2.6.x クラスタを v3.0.3 にアップグレードする方法について説明します。

この手順は、Milvus 2.6.20 から Milvus v3.0.3 へのアップグレードにおいて、Milvus Operator 1.3.0、MixCoord、StreamingNode、Woodpecker、クラスタ内の etcd、およびクラスタ内の MinIO を使用して検証されています。 これ以外のMilvus 2.6.xパッチリリース、Operatorのバージョン、コンポーネントのトポロジー、メッセージキュー、または依存関係の設定を使用している場合は、まず本番環境以外の環境でアップグレードの検証を行ってください。

前提条件

  • Milvus Operator によって管理される Milvus 2.6.x クラスターを備えた Kubernetes クラスター
  • kubectl クラスターへのアクセス権
  • 既存のデプロイメントで使用されている完全な Milvus カスタムリソース (CR) マニフェスト
  • 既存の Milvus Operator で使用されているインストール方法およびマニフェスト
  • Milvusのメタデータおよび永続データの最新のバックアップ

メッセージキューの制限事項:Milvus v3.0.3 へのアップグレード時には、現在のメッセージキューの選択を維持する必要があります。アップグレード中に異なるメッセージキューシステムへ切り替えることはサポートされていません。メッセージキューシステムの変更に対するサポートは、将来のバージョンで提供される予定です。

このアップグレードには、Milvus CRの完全なマニフェストを適用してください。イメージのみのマージパッチは使用しないでください。Operatorは、省略されたレプリカ数0のコンポーネントフィールドをデフォルト値に設定することがあり、これにより、既存の2.6.xデプロイメントで無効化されていたコンポーネントが再度有効になる可能性があります。

この手順では、Milvus イメージを 2.6.x に戻すことによるダウングレードやロールバックの妥当性は検証されません。 v3.0.3 がデータを書き込んだ後、イメージのみのロールバックでは、更新された状態を読み取れない場合があります。アップグレードに失敗した場合は、書き込みを停止し、アップグレード前のメタデータおよび永続データのバックアップを復元するリカバリ計画を実行してください。リカバリ計画は、まず本番環境以外で検証してください。

アップグレード手順

ステップ 1: 現在の Milvus CR をバックアップする

デプロイメントを変更する前に、現在のCRを保存してください:

kubectl get milvus <instance-name> \
  --namespace <namespace> \
  --output yaml > milvus-before-upgrade.yaml

既存のデプロイメントのソースマニフェストをアップグレード用マニフェストとして使用します。サーバー管理のメタデータおよびステータスフィールドを事前に削除せずに、エクスポートされたバックアップファイルを直接適用しないでください。

ステップ 2: Milvus Operator のバージョンを確認する

インストール済みの Milvus Operator が使用しているイメージを確認してください:

kubectl get deployments --all-namespaces \
  -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{range .spec.template.spec.containers[*]}{.image}{" "}{end}{"\n"}{end}' \
  | grep milvus-operator

検証済みのアップグレードでは、Milvus Operatorのバージョンは1.3.0のまま維持されました。サポートポリシーで別途Operatorのアップグレードが求められていない限り、現在Milvus 2.6.xデプロイメントを管理しているOperatorのバージョンを維持してください。 新しいバージョンのOperatorを、テスト済みのバージョンにダウングレードしないでください。Operatorのバージョンを変更する必要がある場合は、既存のインストールと同じHelmまたはkubectl によるインストール方法、および同じリリース名とネームスペースを使用し、Milvus CRを更新する前にOperatorの変更を検証してください。

ステップ 3: Milvus イメージの更新

完全な Milvus CR マニフェスト内で、spec.components.image を対象バージョンに変更してください。現在のモード、コンポーネントのトポロジー、メッセージキュー、etcd、ストレージ、およびその他の依存関係の設定は維持してください。以下の抜粋は確認すべきフィールドを示しています。CR 全体をこの抜粋で置き換えないでください。

対象のCRを適用する前に、indexNode.replicas が0 であることを確認してください。検証済みのMilvus 2.6.20構成では、すでにこの設定が使用されていました。対象のCRでは、明示的なレプリカ数0の設定を維持してください。

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: <instance-name>
  namespace: <namespace>
spec:
  components:
    image: milvusdb/milvus:v3.0.3
    indexNode:
      replicas: 0

CRマニフェスト全体を適用します:

kubectl apply --filename milvus.yaml

アップグレードの確認

CRのステータス、Podのステータス、およびコンテナイメージを確認します:

kubectl get milvus <instance-name> \
  --namespace <namespace> \
  --output jsonpath='{.status.status}{"\t"}{.status.currentImage}{"\n"}'

kubectl get pods --namespace <namespace>

kubectl get pods --namespace <namespace> \
  -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{range .spec.containers[*]}{.image}{" "}{end}{"\n"}{end}'

Milvus CRがHealthy を報告していること、すべてのMilvusコンポーネントがmilvusdb/milvus:v3.0.3 を使用していること、IndexNodeポッドが実行されていないこと、および既存のコレクションが引き続きクエリおよび検索可能であることを確認してください。v3.0.3固有の機能を有効にする前に、これらの確認を完了してください。