KubernetesでMilvusをデプロイする:Kubernetesユーザーのためのステップバイステップガイド
Milvusは、ベクトル表現を通じて大量の非構造化データを保存、インデックス化、検索するために設計されたオープンソースのベクトルデータベースであり、類似検索、意味検索、検索拡張世代(RAG)、レコメンデーションエンジン、その他の機械学習タスクなどのAI駆動型アプリケーションに最適である。
しかし、Milvusをさらに強力にしているのは、Kubernetesとのシームレスな統合だ。Kubernetesに詳しい方なら、このプラットフォームがスケーラブルな分散システムのオーケストレーションに最適であることを知っているだろう。MilvusはKubernetesの機能を最大限に活用し、分散Milvusクラスタを容易にデプロイ、スケール、管理することができます。本ガイドでは、Milvus Operatorを使用してKubernetes上でMilvusをセットアップするための明確なステップバイステップのウォークスルーを提供します。
前提条件
始める前に、以下の前提条件が整っていることを確認してください:
Kubernetesクラスタが稼働していること。ローカルでテストする場合は、
minikube
。kubectl
インストールされ、Kubernetesクラスタとやり取りできるように設定されていること。ポッド、サービス、デプロイメントなどの基本的なKubernetesの概念に精通していること。
ステップ1:Minikubeのインストール(ローカルテストの場合)
ローカルのKubernetes環境をセットアップする必要がある場合は、minikube
。正式なインストール手順はminikube getting startedページにある。
1.Minikubeのインストール
minikubeのリリースページにアクセスし、お使いのオペレーティングシステムに適したバージョンをダウンロードします。macOS/Linuxの場合は、以下のコマンドを使用できる:
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
2.Minikubeを起動する
$ minikube start
3.クラスタとの対話
これで、minikube内のkubectlを使ってクラスタと対話できるようになります。kubectlをインストールしていない場合、minikubeはデフォルトで適切なバージョンをダウンロードします。
$ minikube kubectl cluster-info
または、kubectl
というminikubeのバイナリへのシンボリックリンクを作成すると、簡単に使用できます。
$ sudo ln -s $(which minikube) /usr/local/bin/kubectl
$ kubectl cluster-info
ステップ2: StorageClassの設定
Kubernetesでは、StorageClassがワークロードで利用可能なストレージのタイプを定義し、異なるストレージ構成を柔軟に管理できるようにします。先に進む前に、デフォルトのStorageClassがクラスタで利用可能であることを確認する必要があります。ここでは、確認方法と、必要に応じて設定する方法を説明します。
1.インストールされているStorageClassの確認
Kubernetesクラスタで利用可能なStorageClassを確認するには、以下のコマンドを実行する:
$ kubectl get sc
クラスタにインストールされているストレージクラスの一覧が表示されます。デフォルトのStorageClassがすでに構成されている場合は、(default)
でマークされます。
2.デフォルトのStorageClassを設定する(必要な場合)
デフォルトのStorageClassが設定されていない場合は、YAMLファイルで定義することで作成できます。以下の例を使用して、デフォルトのStorageClassを作成します:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: default-storageclass
provisioner: k8s.io/minikube-hostpath
この YAML 構成は、minikube-hostpath
プロビジョナを使用するdefault-storageclass
というStorageClass
を定義します。
3.StorageClass の適用
default-storageclass.yaml
ファイルを作成したら、以下のコマンドを使用してクラスタに適用します:
$ kubectl apply -f default-storageclass.yaml
これにより、クラスタのデフォルトStorageClassが設定され、今後ストレージのニーズが適切に管理されるようになります。
ステップ3: Milvus Operatorを使用したMilvusのインストール
Milvus Operatorは、Kubernetes上でのMilvusのデプロイ、スケーリング、アップデートの管理を簡素化します。Milvus Operatorをインストールする前に、Milvus Operatorが使用するWebhookサーバー用の証明書を提供するcert-managerをインストールする必要があります。
1.cert-manager のインストール
Milvus Operatorでは、安全な通信のための証明書を管理するためにcert-managerが必要です。必ずcert-managerバージョン1.1.3以降をインストールしてください。インストールするには、以下のコマンドを実行してください:
$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml
インストール後、cert-manager ポッドが実行されていることを確認してください:
$ kubectl get pods -n cert-manager
2.Milvus Operatorのインストール
cert-managerが起動したら、Milvus Operatorをインストールします。以下のコマンドを実行し、kubectl
を使用してデプロイします:
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
Milvus Operatorポッドが稼働しているかどうかは、以下のコマンドで確認できる:
$ kubectl get pods -n milvus-operator
3.Milvusクラスタのデプロイ
Milvus Operatorポッドが起動したら、Milvusクラスタをデプロイします。次のコマンドは、デフォルトの設定を使用して、コンポーネントと依存関係を別々のポッドに入れたMilvusクラスタをデプロイします:
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
Milvusの設定をカスタマイズするには、YAMLファイルを独自の設定YAMLファイルに置き換える必要があります。ファイルを手動で編集または作成するだけでなく、Milvus Sizing Toolを使用して設定を調整し、対応するYAMLファイルをダウンロードすることもできます。
Milvusの設定をカスタマイズするには、デフォルトのYAMLファイルを独自の設定で置き換える必要があります。このファイルを手動で編集または作成し、特定の要件に合わせることができます。
また、Milvus Sizing Toolを使用して、より合理的なアプローチを行うこともできます。このツールを使用すると、リソースの割り当てやストレージのオプションなど、さまざまな設定を調整し、希望する設定の対応するYAMLファイルをダウンロードすることができます。これにより、Milvusの導入が特定のユースケースに最適化されます。
図:Milvusサイジングツール
デプロイの完了には時間がかかる場合があります。Milvusクラスタのステータスはコマンドで確認できます:
$ kubectl get milvus my-release
Milvusクラスタの準備が整うと、Milvusクラスタ内のすべてのポッドが実行中または完了するはずです:
$ kubectl get pods
ステップ4: Milvusクラスタへのアクセス
Milvusクラスタがデプロイされたら、ローカルポートをMilvusサービスポートに転送してアクセスする必要があります。以下の手順に従って、サービスポートを取得し、ポート転送を設定します。
1.サービスポートの取得
まず、以下のコマンドでサービスポートを特定します。<YOUR_MILVUS_PROXY_POD>
を Milvus プロキシポッドの名前に置き換えてください。通常はmy-release-milvus-proxy-
で始まります:
$ kubectl get pod <YOUR_MILVUS_PROXY_POD> --template ='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
このコマンドはMilvusサービスが使用しているポート番号を返します。
2.ポートを転送する
ローカルでMilvusクラスタにアクセスするには、以下のコマンドを使用してローカルポートをサービスポートに転送します。<YOUR_LOCAL_PORT>
を使用するローカルポートに、<YOUR_SERVICE_PORT>
を前のステップで取得したサービスポートに置き換えてください:
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus <YOUR_LOCAL_PORT>:<YOUR_SERVICE_PORT>
このコマンドにより、ホスト・マシンのすべてのIPアドレスをリッスンするポート転送が可能になります。サービスがlocalhost
だけをリッスンする必要がある場合は、--address 0.0.0.0
オプションを省略できます。
ポートフォワーディングが設定されると、指定したローカルポート経由でMilvusクラスタにアクセスし、操作や統合を行うことができます。
ステップ5: Python SDKを使用したMilvusへの接続
Milvusクラスターを起動し、実行することで、任意のMilvus SDKを使用してMilvusと対話することができます。この例では、MilvusのPython SDKであるPyMilvusを使用してクラスタに接続し、基本的な操作を実行します。
1.PyMilvusのインストール
Python経由でMilvusとやりとりするには、pymilvus
パッケージをインストールする必要があります:
$ pip install pymilvus
2.Milvusへの接続
以下は、Milvusクラスタに接続し、コレクションの作成などの基本的な操作を実行するPythonスクリプトのサンプルです。
from pymilvus import MilvusClient
# Connect to the Milvus server
client = MilvusClient(uri="http://localhost:<YOUR_LOCAL_PORT>")
# Create a collection
collection_name = "example_collection"
if client.has_collection(collection_name):
client.drop_collection(collection_name)
client.create_collection(
collection_name=collection_name,
dimension=768, # The vectors we will use in this demo has 768 dimensions
)
説明します:
Milvusへの接続: スクリプトは、ステップ4で設定したローカルポートを使用して、
localhost
で実行されているMilvusサーバに接続します。コレクションを作成します:このスクリプトは、
example_collection
という名前のコレクションがすでに存在するかどうかをチェックし、存在する場合はそれを削除してから、768次元のベクトルを持つ新しいコレクションを作成します。
このスクリプトは、Milvusクラスタへの接続を確立してコレクションを作成し、ベクトルの挿入や類似検索の実行など、より複雑な操作の出発点として機能します。
結論
Kubernetes上の分散セットアップにMilvusをデプロイすることで、大規模なベクトルデータを管理するための強力な機能が解放され、シームレスなスケーラビリティと高性能なAI駆動型アプリケーションが可能になります。このガイドに従って、Milvus Operatorを使用してMilvusをセットアップする方法を学び、プロセスを合理的かつ効率的にしました。
Milvusの探求を続けながら、需要の増大に合わせてクラスタを拡張したり、Amazon EKS、Google Cloud、Microsoft Azureなどのクラウドプラットフォームに展開したりすることを検討してください。管理と監視を強化するために、Milvus Backup、Birdwatcher、Attuなどのツールは、デプロイの健全性とパフォーマンスを維持するための貴重なサポートを提供します。
これでMilvus on Kubernetesの潜在能力をフルに活用する準備が整いました!🚀
その他のリソース
- 前提条件
- ステップ1:Minikubeのインストール(ローカルテストの場合)
- ステップ2: StorageClassの設定
- ステップ3: Milvus Operatorを使用したMilvusのインストール
- ステップ4: Milvusクラスタへのアクセス
- ステップ5: Python SDKを使用したMilvusへの接続
- 結論
- その他のリソース
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word