KubernetesでHelmを使ってMilvusを起動する
このページでは、Milvus Helmチャートを使用してKubernetesでMilvusインスタンスを起動する方法を説明します。
概要
Helmはチャートと呼ばれるパッケージングフォーマットを使用します。チャートとは、Kubernetesリソースの関連するセットを記述したファイルのコレクションです。Milvusは、Milvusの依存関係やコンポーネントをデプロイするのに役立つチャートのセットを提供します。
前提条件
K8sクラスタを作成する。
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 Chartのインストール
Milvus Helm Chartsをインストールする前に、Milvus Helmリポジトリを追加する必要があります。
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/
https://github.com/milvus-io/milvus-helm
にある Milvus Helm Charts リポジトリはアーカイブされており、https://github.com/zilliztech/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
アーカイブされたリポジトリは、4.0.31までのチャートで利用可能です。それ以降のリリースについては、新しいレポをご利用ください。
Milvusチャートをリポジトリから取得するには以下のようにします:
$ helm repo update
このコマンドを実行することで、常に最新のMilvus Helmチャートを取得することができます。
オンラインインストール
1.Milvusクラスタのデプロイ
Helmチャートをインストールしたら、Kubernetes上でMilvusを起動できます。ここでは、Milvusの起動手順を説明します。
$ helm install my-release milvus/milvus
上記のコマンドでは、my-release
がリリース名、milvus/milvus
がローカルにインストールされているチャートリポジトリです。別の名前を使用する場合は、my-release
を適切なものに置き換えてください。
上記のコマンドは、Milvusクラスタとそのコンポーネントおよび依存関係をデフォルトの設定でデプロイします。これらの設定をカスタマイズするには、Milvus Sizing Toolを使用して実際のデータサイズに基づいて設定を調整し、対応するYAMLファイルをダウンロードすることをお勧めします。コンフィギュレーションパラメータの詳細については、Milvusシステムコンフィギュレーションチェックリストをご参照ください。
- リリース名にはアルファベット、数字、ダッシュのみを使用してください。リリース名にはドットは使用できません。
- MilvusをHelmと共にインストールする場合、デフォルトのコマンドラインはMilvusのクラスタバージョンをインストールします。Milvusをスタンドアロンでインストールする場合は、さらなる設定が必要です。
- Kubernetesのdeprecated API migration guideによると、PodDisruptionBudgetのpolicy/v1beta1APIバージョンはv1.25で提供されなくなった。代わりにpolicy/v1APIバージョンを使用するようにマニフェストとAPIクライアントを移行することが推奨されます。
Kubernetes v1.25以降でPodDisruptionBudgetのpolicy/v1beta1APIバージョンをまだ使用しているユーザのための回避策として、代わりに以下のコマンドを実行してmilvusをインストールすることができます:
helm install my-release milvus/milvus --set pulsar.bookkeeper.pdb.usePolicy=false,pulsar.broker.pdb.usePolicy=false,pulsar.proxy.pdb.usePolicy=false,pulsar.zookeeper.pdb.usePolicy=false
- 詳細については、Milvus Helm ChartおよびHelmを参照してください。
2.Milvusクラスタのステータスの確認
以下のコマンドを実行し、Milvusクラスタ内のすべてのPodのステータスを確認します。
$ kubectl get pods
すべてのPodが稼働していれば、上記コマンドの出力は以下のようになるはずです:
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-indexnode-5c5f7b5bd9-l8hjg 1/1 Running 0 3m24s
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-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
3.ローカルポートをMilvusに転送する
以下のコマンドを実行して、Milvusクラスタがサービスを提供しているポートを取得します。
$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
出力は、Milvusインスタンスがデフォルトのポート19530でサービスを提供していることを示しています。
Milvusをスタンドアロンモードでデプロイしている場合、ポッド名をmy-release-milvus-proxy-xxxxxxxxxx-xxxxx
からmy-release-milvus-xxxxxxxxxx-xxxxx
に変更します。
次に、以下のコマンドを実行して、ローカルポートをMilvusがサービスを提供するポートに転送します。
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
オプションとして、上記のコマンドで27017:19530
の代わりに:19530
を使用することで、kubectl
にローカルポートを割り当てさせることができ、ポートの競合を管理する必要がなくなります。
デフォルトでは、kubectlのポートフォワーディングはlocalhost
のみをリッスンします。Milvusに選択したIPアドレスまたはすべてのIPアドレスをリッスンさせたい場合は、address
フラグを使用してください。以下のコマンドは、port-forwardをホストマシンのすべてのIPアドレスでリッスンするようにします。
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
オフラインインストール
ネットワークが制限されている環境では、このセクションの手順に従ってMilvusクラスタを起動してください。
1.Milvusマニフェストの取得
以下のコマンドを実行してMilvusマニフェストを取得します。
$ helm template my-release milvus/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 pulsar.enabled=false milvus/milvus > milvus_manifest.yaml
を実行して、スタンドアロンモードのMilvusインスタンス用のチャートテンプレートをレンダリングする必要があります。 - Milvusのコンフィギュレーションを変更するには、Milvusテンプレートをダウンロードし、必要な設定をそのテンプレートに配置します。
value.yaml
テンプレートをダウンロードし、必要な設定をそのテンプレートに配置し、helm template -f values.yaml my-release milvus/milvus > milvus_manifest.yaml
を使用して、それに従ってマニフェストをレンダリングします。
2.image-pulling スクリプトのダウンロード
画像抽出スクリプトは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
Milvusのアンインストール
以下のコマンドを実行し、Milvusをアンインストールします。
$ helm uninstall my-release
次の作業
DockerにMilvusをインストールしました:
Hello MilvusでMilvusの機能を確認する。
Milvusの基本操作を学ぶ:
Milvusクラスターをクラウド上にデプロイする:
MilvusのデータバックアップのためのオープンソースツールであるMilvus Backupをご紹介します。
Milvusのデバッグとダイナミックコンフィギュレーションアップデートのためのオープンソースツール、Birdwatcherのご紹介。
Milvusを直感的に管理するオープンソースのGUIツールAttuをご覧ください。