milvus-logo
LFAI
フロントページへ
  • 管理ガイド

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のアップグレードパスは以下のように選択できます:

- Milvus v2.2.3以降からv2.5.0への[ローリングアップグレード](#conduct-a-rolling-upgrade)。

ローリングアップグレードの実施

Milvus 2.2.3以降では、Milvusコーディネータをアクティブスタンバイ モードで動作するように設定し、コーディネータのローリングアップグレード機能を有効にすることで、コーディネータのアップグレード中にMilvusが受信したリクエストに応答できるようになります。以前のリリースでは、アップグレード中にコーディネータを削除してから作成するため、サービスのダウンタイムが発生する可能性がありました。

ローリングアップグレードでは、コーディネータをアクティブスタンバイで動作させる必要があります。弊社が提供するスクリプトを使用して、コーディネーターをアクティブスタンバイ モードで動作するように設定し、ローリングアップグレードを開始できます。

Kubernetesが提供するローリングアップデートの機能に基づいて、上記のスクリプトは、デプロイメントの依存関係に従って順序付けられたアップデートを強制します。さらに、Milvusはアップグレード中もそのコンポーネントに依存しているコンポーネントとの互換性を維持するメカニズムを実装し、潜在的なサービスのダウンタイムを大幅に削減します。

このスクリプトは、HelmとともにインストールされたMilvusのアップグレードにのみ適用されます。次の表は、スクリプトで使用可能なコマンドフラグの一覧です。

パラメータ説明デフォルト値必須
iMilvusインスタンス名None
nMilvusがインストールされている名前空間default
t対象MilvusバージョンNone
w新しいMilvusイメージタグmilvusdb/milvus:v2.2.3
o操作方法update

Milvusインスタンスのすべてのデプロイが正常な状態であることを確認したら、以下のコマンドを実行してください。以下のコマンドを実行することで、Milvusインスタンスを2.5.0にアップグレードすることができます。

sh rollingUpdate.sh -n default -i my-release -o update -t 2.5.0 -w 'milvusdb/milvus:v2.5.0'
  1. スクリプトはデプロイのアップグレード順序をハードコードしており、変更することはできません。
  2. このスクリプトは、kubectl patch を使用してデプロイメントを更新し、kubectl rollout status を使用してステータスを監視します。
  3. スクリプトはkubectl patch を使用して、デプロイメントのapp.kubernetes.io/version ラベルを、コマンドの-t フラグの後に指定したラベルに更新します。

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にのみ適用されます。処理中にエラーが発生した場合は、まずロールバック操作で以前のバージョンにロールバックしてください。

以下の表はメタマイグレーションで実行できる操作の一覧です。

パラメータ説明デフォルト値必須
iMilvusインスタンス名。None
nMilvusがインストールされている名前空間。defaultFalse
sMilvusのバージョン。None
tインストール先のMilvusのバージョン。None
rMilvusメタのルートパス。by-dev
wMilvusの新しい画像タグ。milvusdb/milvus:v2.2.0False
mmetaマイグレーションイメージタグ。milvusdb/meta-migration:v2.2.0False
oメタマイグレーション操作migrate
dマイグレーション完了後にマイグレーションポッドを削除するかどうか。falseFalse
cメタ・マイグレーションpvcのストレージ・クラス。default storage classFalse
emilvusが使用するetcdエンポイント。etcd svc installed with milvusFalse

1.メタデータの移行

  1. 移行スクリプトをダウンロードします。
  2. Milvusコンポーネントを停止します。Milvusのetcdにライブセッションがあるとマイグレーションに失敗する可能性があります。
  3. Milvusメタデータのバックアップを作成します。
  4. Milvusメタデータを移行します。
  5. 新しいイメージでMilvusコンポーネントを起動する。

2.Milvusをv2.1.xから2.2.0にアップグレードする。

以下のコマンドは、Milvusをv2.1.4から2.2.0にアップグレードすることを前提としています。必要なバージョンに変更してください。

  1. Milvusインスタンス名、ソースMilvusバージョン、ターゲットMilvusバージョンを指定します。

    ./migrate.sh -i my-release -s 2.1.4 -t 2.2.0
    
  2. MilvusがデフォルトのK8s名前空間にインストールされていない場合は、-n で名前空間を指定します。

    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0
    
  3. Milvusがカスタムrootpath でインストールされている場合は、-r でルートパスを指定してください。

    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev
    
  4. 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
    
  5. マイグレーション完了後にマイグレーションポッドを自動的に削除する場合は、-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
    
  6. マイグレーションに失敗した場合は、ロールバックしてマイグレーションをやり直します。

    ./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
    

翻訳DeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?