milvus-logo
LFAI
フロントページへ
  • スタート

KubernetesでHelmを使ってMilvusを起動する

このページでは、Milvus Helmチャートを使用してKubernetesでMilvusインスタンスを起動する方法を説明します。

概要

Helmはチャートと呼ばれるパッケージングフォーマットを使用します。チャートとは、Kubernetesリソースの関連するセットを記述したファイルのコレクションです。Milvusは、Milvusの依存関係やコンポーネントをデプロイするのに役立つチャートのセットを提供します。

前提条件

  • Helm CLIをインストールする。

  • 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をインストールしました:

翻訳DeepL

Try Managed Milvus for Free

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

Get Started
フィードバック

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