MilvusOperator、Helm、DockerCompose

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、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 イメージを 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 全体をこの抜粋で置き換えないでください。

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

完全な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` が報告されていること、現在のイメージが `milvusdb/milvus:v3.0.3` であること、および既存のコレクションが引き続きクエリおよび検索可能であることを確認してください。v3.0.3 固有の機能を有効にする前に、これらの確認を完了してください。