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

Milvus OperatorでMilvusクラスタをアップグレードする

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

Milvus operatorのアップグレード

以下のコマンドを実行して、Milvus Operatorのバージョンをv1.0.1にアップグレードします。

helm repo add zilliztech-milvus-operator https://zilliztech.github.io/milvus-operator/
helm repo update zilliztech-milvus-operator
helm -n milvus-operator upgrade milvus-operator zilliztech-milvus-operator/milvus-operator

Milvus operatorを最新バージョンにアップグレードすると、以下の選択肢があります:

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

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

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

ローリングアップグレード機能はデフォルトでは無効になっています。設定ファイルで明示的に有効にする必要があります。

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
spec:
  components:
    enableRollingUpdate: true
    imageUpdateMode: rollingUpgrade # Default value, can be omitted
    image: milvusdb/milvus:v2.4.18

上記の設定ファイルでは、spec.components.enableRollingUpdatetrue に設定し、spec.components.image を任意の Milvus バージョンに設定します。

デフォルトでは、Milvusはコーディネーターのローリングアップグレードを順番に実行し、コーディネーターのポッドイメージを次々に置き換えていきます。アップグレード時間を短縮するには、spec.components.imageUpdateModeall に設定し、Milvus がすべてのポッドイメージを同時に置き換えるようにします。

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
spec:
  components:
    enableRollingUpdate: true
    imageUpdateMode: all
    image: milvusdb/milvus:v2.4.18

Milvusがコーディネータポッドイメージを低いバージョンに置き換えるようにするには、spec.components.imageUpdateModerollingDowngrade に設定します。

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
spec:
  components:
    enableRollingUpdate: true
    imageUpdateMode: rollingDowngrade
    image: milvusdb/milvus:<some-old-version>

次に、設定をYAMLファイル(例えば、milvusupgrade.yml)として保存し、この設定ファイルを以下のようにMilvusインスタンスにパッチします:

kubectl patch -f milvusupgrade.yml

イメージを変更してMilvusをアップグレードする

通常の場合、Milvusのイメージを変更することで、Milvusを最新のものにアップデートすることができます。ただし、この方法でMilvusをアップグレードする場合、一定のダウンタイムが発生することに注意してください。

以下のように設定ファイルを作成し、milvusupgrade.yamlとして保存します:

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
spec:
  # Omit other fields ...
  components:
   image: milvusdb/milvus:v2.4.18

その後、以下を実行してアップグレードを実行します:

kubectl patch -f milvusupgrade.yaml

メタデータの移行

Milvus 2.2.0以降、メタデータは以前のリリースと互換性がありません。以下の例は、Milvus 2.1.4からMilvus 2.4.18へのアップグレードを想定しています。

1.メタデータ移行用ファイル.yaml の作成

メタデータ移行ファイルを作成します。以下はその例です。設定ファイルには、namesourceVersiontargetVersion を指定する必要があります。以下の例では、namemy-release-upgrade に、sourceVersionv2.1.4 に、targetVersionv2.4.18 に設定しています。これは、Milvusクラスタがv2.1.4からv2.4.18にアップグレードされることを意味します。

apiVersion: milvus.io/v1beta1
kind: MilvusUpgrade
metadata:
  name: my-release-upgrade
spec:
  milvus:
    namespace: default
    name: my-release
  sourceVersion: "v2.1.4"
  targetVersion: "v2.4.18"
  # below are some omit default values:
  # targetImage: "milvusdb/milvus:v2.4.18"
  # toolImage: "milvusdb/meta-migration:v2.2.0"
  # operation: upgrade
  # rollbackIfFailed: true
  # backupPVC: ""
  # maxRetry: 3

2.新しい設定の適用

以下のコマンドを実行して新しい設定を作成します。

$ kubectl create -f https://github.com/zilliztech/milvus-operator/blob/main/config/samples/beta/milvusupgrade.yaml

3.メタデータの移行状況の確認

以下のコマンドを実行して、メタデータ移行のステータスを確認します。

kubectl describe milvus release-name

出力のステータスがready の場合は、メタデータの移行が成功したことを意味します。

あるいは、kubectl get pod を実行してすべてのポッドをチェックすることもできます。すべてのポッドがready であれば、メタデータの移行は成功しています。

4.削除my-release-upgrade

アップグレードが成功したら、YAML ファイルのmy-release-upgrade を削除します。

翻訳DeepL

Try Managed Milvus for Free

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

Get Started
フィードバック

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