HelmチャートによるMilvusクラスタのアップグレード
このガイドでは、Milvus Helmチャートを使用してMilvusクラスタをアップグレードする方法について説明します。
前提条件
- Helmバージョン >= 3.14.0
- Kubernetesバージョン >= 1.20.0
Milvus-Helmチャートバージョン4.2.21以降、依存関係としてpulsar-v3.xチャートを導入しました。後方互換性のため、helmをv3.14またはそれ以降のバージョンにアップグレードし、helm upgrade
を使用するときは必ず--reset-then-reuse-values
オプションを追加してください。
Milvus Helmチャートのチェック
以下のコマンドを実行して、Milvusの新しいバージョンをチェックしてください。
$ helm repo update zilliztech
$ helm search repo zilliztech/milvus --versions
https://milvus-io.github.io/milvus-helm/
にある Milvus Helm Charts のレポはアーカイブされ、次のようにhttps://zilliztech.github.io/milvus-helm/
から更なるアップデートを取得することができます:
helm repo add zilliztech https://zilliztech.github.io/milvus-helm
helm repo update
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus --reset-then-reuse-values
アーカイブされたレポは4.0.31までのチャートで利用可能です。それ以降のリリースについては、代わりに新しいレポを使用してください。
NAME CHART VERSION APP VERSION DESCRIPTION
zilliztech/milvus 4.1.34 2.4.5 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.33 2.4.4 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.32 2.4.3 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.31 2.4.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.30 2.4.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.29 2.4.0 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.24 2.3.11 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.23 2.3.10 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.22 2.3.10 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.21 2.3.10 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.20 2.3.10 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.18 2.3.10 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.18 2.3.9 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.17 2.3.8 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.16 2.3.7 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.15 2.3.5 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.14 2.3.6 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.13 2.3.5 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.12 2.3.5 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.11 2.3.4 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.10 2.3.3 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.9 2.3.3 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.8 2.3.2 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.7 2.3.2 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.6 2.3.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.5 2.3.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.4 2.3.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.3 2.3.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.2 2.3.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.1 2.3.0 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.0 2.3.0 Milvus is an open-source vector database built ...
Milvusのアップグレードパスは以下のように選択できます:
Helmを使用して、v2.2.3以前のマイナーリリースからv2.4.17へMilvusをアップグレードする。
Milvus v2.1.xからv2.4.17へのアップグレード前にメタデータを移行する。
Helmを使用したMilvusのアップグレード
Milvusをv2.2.3以前のマイナーリリースから最新のものにアップグレードするには、以下のコマンドを実行します:
helm repo update zilliztech
helm upgrade my-release zilliztech/milvus --reset-then-reuse-values --version=4.1.24 # use the helm chart version here
直前のコマンドでHelm chartのバージョンを使用してください。Helmチャートバージョンの取得方法については、「Milvusバージョンの確認」をご参照ください。
メタデータの移行
Milvus 2.2.0からメタデータに互換性がなくなりました。以下の例はMilvus 2.1.4からMilvus 2.2.0へのアップグレードを想定しています。
1.Milvusバージョンの確認
$ helm list
を実行し、Milvusアプリのバージョンを確認します。APP VERSION
、2.1.4であることがわかります。
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
new-release default 1 2022-11-21 15:41:25.51539 +0800 CST deployed milvus-3.2.18 2.1.4
2.起動しているPodの確認
$ kubectl get pods
を実行して実行中のポッドを確認する。以下のように出力されます。
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 21m
my-release-etcd-1 1/1 Running 0 21m
my-release-etcd-2 1/1 Running 0 21m
my-release-milvus-datacoord-664c58798d-fl75s 1/1 Running 0 21m
my-release-milvus-datanode-5f75686c55-xfg2r 1/1 Running 0 21m
my-release-milvus-indexcoord-5f98b97589-2l48r 1/1 Running 0 21m
my-release-milvus-indexnode-857b4ddf98-vmd75 1/1 Running 0 21m
my-release-milvus-proxy-6c548f787f-scspp 1/1 Running 0 21m
my-release-milvus-querycoord-c454f44cd-dwmwq 1/1 Running 0 21m
my-release-milvus-querynode-76bb4946d-lbrz6 1/1 Running 0 21m
my-release-milvus-rootcoord-7764c5b686-62msm 1/1 Running 0 21m
my-release-minio-0 1/1 Running 0 21m
my-release-minio-1 1/1 Running 0 21m
my-release-minio-2 1/1 Running 0 21m
my-release-minio-3 1/1 Running 0 21m
my-release-pulsar-bookie-0 1/1 Running 0 21m
my-release-pulsar-bookie-1 1/1 Running 0 21m
my-release-pulsar-bookie-2 1/1 Running 0 21m
my-release-pulsar-bookie-init-tjxpj 0/1 Completed 0 21m
my-release-pulsar-broker-0 1/1 Running 0 21m
my-release-pulsar-proxy-0 1/1 Running 0 21m
my-release-pulsar-pulsar-init-c8vvc 0/1 Completed 0 21m
my-release-pulsar-recovery-0 1/1 Running 0 21m
my-release-pulsar-zookeeper-0 1/1 Running 0 21m
my-release-pulsar-zookeeper-1 1/1 Running 0 20m
my-release-pulsar-zookeeper-2 1/1 Running 0 20m
3.イメージタグの確認
ポッドmy-release-milvus-proxy-6c548f787f-scspp
のイメージタグを確認します。Milvusクラスタのリリースがv2.1.4であることがわかります。
$ kubectl get pods my-release-milvus-proxy-6c548f787f-scspp -o=jsonpath='{$.spec.containers[0].image}'
# milvusdb/milvus:v2.1.4
4.メタデータの移行
Milvus2.2での大きな変更点はセグメントインデックスのメタデータ構造です。そのため、Milvusをv2.1.xからv2.2.0にアップグレードする際には、Helmを使用してメタデータを移行する必要があります。以下は、メタデータを安全に移行するためのスクリプトです。
このスクリプトはK8sクラスタにインストールされたMilvusにのみ適用されます。処理中にエラーが発生した場合は、まずロールバック操作で以前のバージョンにロールバックしてください。
以下の表はメタマイグレーションで実行できる操作の一覧です。
パラメータ | 説明 | デフォルト値 | 必須 |
---|---|---|---|
i | Milvusインスタンス名。 | None | 真 |
n | Milvusがインストールされている名前空間。 | default | False |
s | Milvusのソースバージョン。 | None | 真 |
t | インストール先のMilvusのバージョン。 | None | 真 |
r | Milvusメタのルートパス。 | by-dev | 偽 |
w | Milvusの新しい画像タグ。 | milvusdb/milvus:v2.2.0 | False |
m | metaマイグレーションイメージタグ。 | milvusdb/meta-migration:v2.2.0 | False |
o | メタマイグレーション操作 | migrate | 誤 |
d | マイグレーション完了後にマイグレーションポッドを削除するかどうか。 | false | False |
c | メタ・マイグレーションpvcのストレージ・クラス。 | default storage class | False |
e | milvusが使用するetcdエンポイント。 | etcd svc installed with milvus | False |
1.メタデータの移行
- 移行スクリプトをダウンロードします。
- Milvusコンポーネントを停止します。Milvusのetcdにライブセッションがあるとマイグレーションに失敗する可能性があります。
- Milvusメタデータのバックアップを作成します。
- Milvusメタデータを移行します。
- 新しいイメージでMilvusコンポーネントを起動する。
2.Milvusをv2.1.xから2.2.0にアップグレードする。
以下のコマンドは、Milvusをv2.1.4から2.2.0にアップグレードすることを前提としています。必要なバージョンに変更してください。
Milvusインスタンス名、ソースMilvusバージョン、ターゲットMilvusバージョンを指定します。
./migrate.sh -i my-release -s 2.1.4 -t 2.2.0
MilvusがデフォルトのK8s名前空間にインストールされていない場合は、
-n
で名前空間を指定します。./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0
Milvusがカスタム
rootpath
でインストールされている場合は、-r
でルートパスを指定してください。./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev
Milvusがカスタム
image
でインストールされている場合は、-w
でイメージタグを指定してください。./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev -w milvusdb/milvus:v2.2.0
マイグレーション完了後にマイグレーションポッドを自動的に削除する場合は、
-d true
を設定します。./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -w milvusdb/milvus:v2.2.0 -d true
マイグレーションに失敗した場合は、ロールバックしてマイグレーションをやり直します。
./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev -o rollback -w milvusdb/milvus:v2.1.4 ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev -o migrate -w milvusdb/milvus:v2.2.0