Helm を使用して Kubernetes で Milvus を実行する
このページでは、Milvus Helmチャートを使用してKubernetesでMilvusインスタンスを起動する方法について説明します。
概要
Helmでは、「チャート」と呼ばれるパッケージ形式が使用されます。チャートとは、関連するKubernetesリソースのセットを記述したファイルの集合です。Milvusでは、Milvusの依存関係やコンポーネントをデプロイするためのチャート一式を提供しています。
前提条件
StorageClassをインストールしてください。インストール済みのStorageClassは、次のように確認できます。
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate falseインストール前に、ハードウェアおよびソフトウェアの要件を確認してください。
Milvus をインストールする前に、Milvus Sizing Toolを使用して、データサイズに基づいてハードウェア要件を見積もることをお勧めします。これにより、Milvus インストールにおける最適なパフォーマンスとリソース割り当てを確保できます。
イメージの取得で問題が発生した場合は、問題の詳細を明記の上、community@zilliz.comまでご連絡ください。必要なサポートを提供いたします。
Milvus Helmチャートのインストール
Milvus Helm Chart をインストールする前に、Milvus Helm リポジトリを追加する必要があります。
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
https://github.com/milvus-io/milvus-helm にある Milvus Helm チャートリポジトリはアーカイブ化されました。現在は、https://github.com/zilliztech/milvus-helm の新しいリポジトリを使用しています。アーカイブ化されたリポジトリではバージョン 4.0.31 までのチャートが引き続き利用可能ですが、それ以降のリリースについては新しいリポジトリをご利用ください。
その後、次のようにしてリポジトリからMilvusチャートを取得してください:
$ helm repo update
このコマンドを実行すれば、いつでも最新のMilvus Helmチャートを取得できます。
オンラインインストール
1. Milvus クラスタのデプロイ
Helmチャートのインストールが完了したら、Kubernetes上でMilvusを起動できます。このセクションでは、Milvusクラスタのデプロイ手順について説明します。
スタンドアロンでのデプロイをご希望ですか?
開発やテストのために Milvus をスタンドアロンモード(シングルノード)でデプロイしたい場合は、次のコマンドを使用してください:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.22 \
--set cluster.enabled=false \
--set pulsarv3.enabled=false \
--set standalone.messageQueue=woodpecker \
--set woodpecker.enabled=true \
--set streaming.enabled=true
注:スタンドアロンモードでは、デフォルトのメッセージキューとしてWoodpeckerが使用され、Streaming Nodeコンポーネントが有効になります。詳細については、「アーキテクチャの概要」および「Woodpeckerの使用」を参照してください。
Milvusクラスタのデプロイ:
次のコマンドは、v2.6.22向けに最適化された設定で、推奨されるメッセージキューとしてWoodpeckerを使用するMilvusクラスタをデプロイします:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.22 \
--set pulsarv3.enabled=false \
--set woodpecker.enabled=true \
--set streaming.enabled=true \
--set indexNode.enabled=false
このコマンドの動作:
- メッセージキューとしてWoodpeckerを使用します(メンテナンス負担の軽減に推奨)
- パフォーマンス向上のために、新しいStreaming Nodeコンポーネントを有効化します
- 従来のインデックスノードを無効化(機能は現在、データノードによって処理されます)
- Pulsar を無効化し、代わりに Woodpecker を使用します
Milvus 2.6.x におけるアーキテクチャの変更点:
- メッセージキュー:Woodpeckerが推奨されるようになりました(Pulsarと比較してインフラのメンテナンス負担が軽減されます)
- 新しいコンポーネント: 「Streaming Node」が導入され、デフォルトで有効化されています
- コンポーネントの統合:インデックスノードとデータノードが単一のデータノードに統合されました
アーキテクチャの詳細については、「アーキテクチャの概要」を参照してください。
メッセージキューの代替オプション:
Woodpeckerの代わりにPulsar(従来の選択肢)を使用したい場合:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.22 \
--set streaming.enabled=true \
--set indexNode.enabled=false
次の手順: 上記のコマンドを実行すると、推奨設定で Milvus がデプロイされます。本番環境での使用については:
- Milvus サイジング ツールを使用して、データサイズに基づいて設定を最適化してください
- 高度な設定オプションについては、「Milvus システム構成チェックリスト」を確認してください
重要な注意事項:
- リリース名の命名規則:英字、数字、ハイフンのみを使用してください(ドットは使用不可)
- Kubernetes v1.25 以降:PodDisruptionBudget に関する問題が発生した場合は、以下の回避策を適用してください:
helm install my-release zilliztech/milvus \ --set pulsar.bookkeeper.pdb.usePolicy=false \ --set pulsar.broker.pdb.usePolicy=false \ --set pulsar.proxy.pdb.usePolicy=false \ --set pulsar.zookeeper.pdb.usePolicy=false
詳細については、Milvus HelmチャートおよびHelmのドキュメントを参照してください。
2. Milvusクラスタの状態を確認する
Podのステータスを確認し、デプロイが正常に完了していることを確認してください:
kubectl get pods
すべてのポッドのステータスが「Running」になるまで待ちます。v2.6.22 の設定では、次のようなポッドの状態が表示されるはずです:
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 3m23s
my-release-etcd-1 1/1 Running 0 3m23s
my-release-etcd-2 1/1 Running 0 3m23s
my-release-milvus-datanode-68cb87dcbd-4khpm 1/1 Running 0 3m23s
my-release-milvus-mixcoord-7fb9488465-dmbbj 1/1 Running 0 3m23s
my-release-milvus-proxy-6bd7f5587-ds2xv 1/1 Running 0 3m24s
my-release-milvus-querynode-5cd8fff495-k6gtg 1/1 Running 0 3m24s
my-release-milvus-streaming-node-xxxxxxxxx 1/1 Running 0 3m24s
my-release-minio-0 1/1 Running 0 3m23s
my-release-minio-1 1/1 Running 0 3m23s
my-release-minio-2 1/1 Running 0 3m23s
my-release-minio-3 1/1 Running 0 3m23s
my-release-pulsar-autorecovery-86f5dbdf77-lchpc 1/1 Running 0 3m24s
my-release-pulsar-bookkeeper-0 1/1 Running 0 3m23s
my-release-pulsar-bookkeeper-1 1/1 Running 0 98s
my-release-pulsar-broker-556ff89d4c-2m29m 1/1 Running 0 3m23s
my-release-pulsar-proxy-6fbd75db75-nhg4v 1/1 Running 0 3m23s
my-release-pulsar-zookeeper-0 1/1 Running 0 3m23s
my-release-pulsar-zookeeper-metadata-98zbr 0/1 Completed 0 3m24s
確認すべき主要コンポーネント:
- Milvus コンポーネント:
mixcoord、datanode、querynode、proxy、streaming-node - 依存関係:
etcd(メタデータ)、minio(オブジェクトストレージ)、pulsar(メッセージキュー)
ポートフォワーディングの設定が完了したら(次の手順を参照)、http://127.0.0.1:9091/webui/ からMilvus WebUIにアクセスすることもできます。詳細については、Milvus WebUI を参照してください。
3. Milvus への接続
Kubernetesの外部からMilvusクラスタに接続するには、ポートフォワーディングを設定する必要があります。
ポートフォワーディングの設定:
kubectl port-forward service/my-release-milvus 27017:19530
このコマンドは、ローカルポート27017 を Milvus ポート19530 に転送します。次のような出力が表示されるはずです:
Forwarding from 127.0.0.1:27017 -> 19530
接続の詳細:
- ローカル接続:
localhost:27017 - Milvusのデフォルトポート:
19530
ポートフォワーディングのオプション:
- ローカルポートの自動割り当て:
27017:19530の代わりに:19530を使用し、kubectl に利用可能なポートを選ばせる - すべてのインターフェースでリスニング:
--address 0.0.0.0を追加して、他のマシンからの接続を許可します:kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530 - スタンドアロン展開: スタンドアロンモードを使用する場合、サービス名は変更されません
Milvus を使用中は、このターミナルを開いたままにしておいてください。これで、任意の Milvus SDK を使用してlocalhost:27017 から Milvus に接続できるようになります。
(オプション) Milvus の設定を更新する
values.yaml ファイルを編集して再度適用することで、Milvus クラスタの設定を更新できます。
希望する設定を含む
values.yamlファイルを作成します。以下では、
proxy.httpを有効にする場合を想定しています。extraConfigFiles: user.yaml: |+ proxy: http: enabled: true適用可能な設定項目については、「システム設定」を参照してください。
values.yamlファイルを適用します。
helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
更新された設定を確認します。
helm get values my-release出力には、更新された設定が表示されます。
Milvus WebUI へのアクセス
Milvus には、ブラウザからアクセスできる「Milvus WebUI」という組み込みの GUI ツールが付属しています。Milvus WebUI は、シンプルで直感的なインターフェースにより、システムの可観測性を向上させます。Milvus WebUI を使用すると、Milvus のコンポーネントや依存関係の統計情報やメトリクスを確認したり、データベースやコレクションの詳細を確認したり、Milvus の詳細な設定を一覧表示したりすることができます。 Milvus WebUIの詳細については、「Milvus WebUI」を参照してください。
Milvus WebUIへのアクセスを有効にするには、プロキシポッドをローカルポートにポートフォワードする必要があります。
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
これで、http://localhost:27018 から Milvus Web UI にアクセスできるようになります。
オフラインインストール
ネットワークが制限された環境にある場合は、このセクションの手順に従って Milvus クラスタを起動してください。
1. Milvus マニフェストの取得
次のコマンドを実行して、Milvus マニフェストを取得します。
$ helm template my-release zilliztech/milvus > milvus_manifest.yaml
上記のコマンドは、Milvus クラスタ用のチャートテンプレートを生成し、その出力を `milvus_manifest.yaml` という名前のマニフェストファイルに保存します。このマニフェストを使用すると、Milvus クラスタを、そのコンポーネントと依存関係を別々のポッドに配置してインストールできます。
- すべての Milvus コンポーネントが単一のポッド内に含まれるスタンドアロンモードで Milvus インスタンスをインストールする場合は、代わりに `
helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false zilliztech/milvus > milvus_manifest.yaml` を実行し、スタンドアロンモードの Milvus インスタンス用のチャートテンプレートを生成する必要があります。 - Milvusの設定を変更するには、
value.yamlテンプレートをダウンロードし、希望の設定を記述した上で、helm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yamlを実行して、それに応じてマニフェストを生成してください。
2. イメージ取得スクリプトのダウンロード
イメージ取得スクリプトは Python で開発されています。requirement.txt ファイル内のスクリプトとその依存関係を一緒にダウンロードしてください。
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/requirements.txt
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/save_image.py
3. イメージの取得と保存
以下のコマンドを実行して、必要なイメージを取得・保存します。
$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml
画像は、現在のディレクトリ内の「images 」という名前のサブフォルダに取得されます。
4. 画像の読み込み
これで、ネットワーク制限環境内のホストに、次のように画像を読み込むことができます:
$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done
5. Milvusのデプロイ
$ kubectl apply -f milvus_manifest.yaml
ここまでは、オンラインインストールの手順2および3に従って、クラスタの状態を確認し、ローカルポートを Milvus に転送することができます。
稼働中の Milvus クラスタのアップグレード
実行中のMilvusクラスタを最新バージョンにアップグレードするには、次のコマンドを実行してください:
$ helm repo update
$ helm upgrade my-release zilliztech/milvus --reset-then-reuse-values
Milvusのアンインストール
Milvus をアンインストールするには、次のコマンドを実行します。
$ helm uninstall my-release
次の手順
Docker に Milvus をインストールしたら、次のことができます:
「Hello Milvus」を確認して、Milvusの機能を確認してください。
Milvusの基本的な操作を学びましょう:
クラウド上に Milvus クラスターをデプロイする:
Milvusの可観測性と管理のための直感的なWebインターフェース「Milvus WebUI」をご覧ください。
Milvusデータのバックアップを行うオープンソースツール「Milvus Backup」をご覧ください。
Milvusのデバッグや動的な構成更新を行うためのオープンソースツール「Birdwatcher」をご覧ください。
Milvusを直感的に管理できるオープンソースのGUIツール「Attu」をご覧ください。