Milvus Operator を使用して Kubernetes で Milvus を実行する
このページでは、Milvus Operator を使用して Kubernetes で Milvus インスタンスを起動する方法について説明します。
概要
Milvus Operatorは、Kubernetes(K8s)クラスター向けにMilvusのサービススタック全体をデプロイおよび管理するためのソリューションです。このスタックには、すべてのMilvusコンポーネントに加え、etcd、Pulsar、MinIOなどの関連依存関係が含まれます。
前提条件
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 Operatorのインストール
Milvus Operator は、Kubernetes カスタムリソースの上に、Milvus クラスタのカスタムリソースを定義します。カスタムリソースが定義されると、K8s API を宣言的な方法で使用し、Milvus デプロイメントスタックを管理して、そのスケーラビリティと高可用性を確保できます。
Helm を使用して Milvus Operator をインストールするには、次のコマンドを実行してください。
$ helm install milvus-operator \
-n milvus-operator --create-namespace \
--wait --wait-for-jobs \
https://github.com/zilliztech/milvus-operator/releases/download/v1.3.7/milvus-operator-1.3.7.tgz
インストール処理が完了すると、次のような出力が表示されます。
NAME: milvus-operator
LAST DEPLOYED: Thu Jul 7 13:18:40 2022
NAMESPACE: milvus-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Milvus Operator Is Starting, use `kubectl get -n milvus-operator deploy/milvus-operator` to check if its successfully installed
If Operator not started successfully, check the checker's log with `kubectl -n milvus-operator logs job/milvus-operator-checker`
Full Installation doc can be found in https://github.com/zilliztech/milvus-operator/blob/main/docs/installation/installation.md
Quick start with `kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_minimum.yaml`
More samples can be found in https://github.com/zilliztech/milvus-operator/tree/main/config/samples
CRD Documentation can be found in https://github.com/zilliztech/milvus-operator/tree/main/docs/CRD
以前にMilvus Operatorをインストールしたことがある場合は、次のコマンドを使用してアップグレードしてください。
helm upgrade milvus-operator \
-n milvus-operator --create-namespace \
--wait --wait-for-jobs \
https://github.com/zilliztech/milvus-operator/releases/download/v1.3.7/milvus-operator-1.3.7.tgz
kubectl を使用してMilvus Operatorをインストールするには、次のコマンドを実行してください。
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
インストール処理が完了すると、次のような出力が表示されます。
namespace/milvus-operator created
customresourcedefinition.apiextensions.k8s.io/milvusclusters.milvus.io created
serviceaccount/milvus-operator-controller-manager created
role.rbac.authorization.k8s.io/milvus-operator-leader-election-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-manager-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-metrics-reader created
clusterrole.rbac.authorization.k8s.io/milvus-operator-proxy-role created
rolebinding.rbac.authorization.k8s.io/milvus-operator-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-proxy-rolebinding created
configmap/milvus-operator-manager-config created
service/milvus-operator-controller-manager-metrics-service created
service/milvus-operator-webhook-service created
deployment.apps/milvus-operator-controller-manager created
Milvus OperatorのPodが実行中かどうかは、次のように確認できます:
$ kubectl get pods -n milvus-operator
NAME READY STATUS RESTARTS AGE
milvus-operator-5fd77b87dc-msrk4 1/1 Running 0 46s
Milvusのデプロイ
1. Milvusクラスタのデプロイ
Milvus OperatorのPodが実行されている状態になったら、次のようにMilvusクラスタをデプロイできます。
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_woodpecker.yaml
上記のコマンドは、メッセージキューとしてWoodpecker(v3.0-betaで推奨)を使用し、Streaming Nodeを含むすべての新しいアーキテクチャコンポーネントを備えたMilvusクラスターをデプロイします。
このデプロイにおけるアーキテクチャの主な特徴:
- メッセージキュー:Woodpecker を使用(インフラのメンテナンス負担を軽減)
- ストリーミングノード:データ処理能力の向上のために有効化
- Mix Coordinator:効率向上のためにコーディネーターコンポーネントを統合
これらの設定をカスタマイズするには、Milvus Sizing Toolを使用して実際のデータサイズに基づいて構成を調整し、対応する YAML ファイルをダウンロードすることをお勧めします。構成パラメータの詳細については、『Milvus システム構成チェックリスト』を参照してください。
- リリース名には、英字、数字、ハイフンのみを含めることができます。リリース名にドットを使用することはできません。
- また、すべてのコンポーネントが単一のポッド内に収まるスタンドアロンモードでMilvusインスタンスをデプロイすることも可能です。その場合は、上記のコマンド内の設定ファイルのURLを次のように変更してください。
https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml
2. Milvusクラスタの状態を確認する
以下のコマンドを実行して、Milvusクラスタの状態を確認します
$ kubectl get milvus my-release -o yaml
Milvusクラスタの準備が整うと、上記のコマンドの出力は以下のようになります。status.status フィールドが「Unhealthy 」のままである場合、Milvusクラスタはまだ作成中です。
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
...
status:
conditions:
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
reason: StorageReady
status: "True"
type: StorageReady
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
message: Pulsar is ready
reason: PulsarReady
status: "True"
type: PulsarReady
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
message: Etcd endpoints is healthy
reason: EtcdReady
status: "True"
type: EtcdReady
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
message: All Milvus components are healthy
reason: MilvusClusterHealthy
status: "True"
type: MilvusReady
endpoint: my-release-milvus.default:19530
status: Healthy
Milvus Operatorは、etcd、Pulsar、MinIOなどのMilvus依存関係を構築した後、プロキシ、コーディネーター、ノードなどのMilvusコンポーネントを作成します。
Milvusクラスタの準備が完了すると、Milvusクラスタ内のすべてのポッドのステータスは以下のようになります。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 2m36s
my-release-etcd-1 1/1 Running 0 2m36s
my-release-etcd-2 1/1 Running 0 2m36s
my-release-milvus-datanode-58955c65b9-j4j7s 1/1 Running 0 92s
my-release-milvus-mixcoord-686f84968f-jcv5d 1/1 Running 0 92s
my-release-milvus-proxy-646f48fc7c-4lctb 1/1 Running 0 92s
my-release-milvus-querynode-0-d89d7677b-x7j7q 1/1 Running 0 91s
my-release-milvus-streamingnode-556bdcc87c-2qwcc 1/1 Running 0 92s
my-release-minio-0 1/1 Running 0 2m36s
my-release-minio-1 1/1 Running 0 2m36s
my-release-minio-2 1/1 Running 0 2m35s
my-release-minio-3 1/1 Running 0 2m35s
3. ローカルポートを Milvus に転送する
以下のコマンドを実行して、Milvus クラスタがサービスを提供しているポートを確認します。
$ kubectl get pod my-release-milvus-proxy-84f67cdb7f-pg6wf --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
出力結果から、Milvus インスタンスがデフォルトのポート19530 でサービスを提供していることがわかります。
Milvusをスタンドアロンモードでデプロイした場合は、pod名を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 フラグを使用してください。次のコマンドを実行すると、ポート転送がホストマシンのすべての IP アドレスでリスニングするようになります。
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
これで、転送されたポートを使用して Milvus に接続できるようになります。
(オプション) Milvus の設定を更新する
次のように `patch ` コマンドを実行することで、Milvus クラスタの設定を確認および更新できます。
以下のコマンドを実行すると、変更後の設定内容をプレビューできます。
以下では、
spec.components.disableMetricパラメータをfalsemsに更新する場合を想定しています。$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}' \ --dry-run=client -o yaml該当する設定項目については、「システム構成」を参照してください。
設定を更新します。
$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}'
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 のアンインストール
以下のコマンドを実行して、Milvus クラスタをアンインストールします。
$ kubectl delete milvus my-release
- デフォルトの設定で Milvus クラスタを削除した場合、etcd、Pulsar、MinIO などの依存関係は削除されません。そのため、次回同じ Milvus クラスタインスタンスをインストールする際には、これらの依存関係が再利用されます。
- Milvus クラスタとともに依存関係および永続ボリュームクレーム (PVC) を削除するには、設定ファイルを参照してください。
Milvus Operator のアンインストール
Milvus Operator をアンインストールするには、2 つの方法があります。
Helm を使用したアンインストール
$ helm -n milvus-operator uninstall milvus-operator
kubectl を使用したアンインストール
$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.3.7/deploy/manifests/deployment.yaml
次の手順
Docker に Milvus をインストールしたら、次のことができます:
「Hello Milvus」を確認して、Milvusの機能を確認してください。
Milvusの基本的な操作を学びましょう:
クラウド上に Milvus クラスターをデプロイする:
Milvusの可観測性と管理のための直感的なWebインターフェース「Milvus WebUI」をご覧ください。
Milvusデータのバックアップを行うオープンソースツール「Milvus Backup」をご覧ください。
Milvusのデバッグや動的な構成更新を行うためのオープンソースツール「Birdwatcher」をご覧ください。
Milvusを直感的に管理できるオープンソースのGUIツール「Attu」をご覧ください。