在 Kubernetes 上部署 Milvus:Kubernetes 使用者分步指南
Milvus是一個開放原始碼向量資料庫,其設計目的是透過向量表示來儲存、索引和搜尋大量非結構化資料,因此非常適合 AI 驅動的應用程式,例如相似性搜尋、語意搜尋、檢索增強生成(RAG)、推薦引擎和其他機器學習任務。
但 Milvus 更為強大的是它與 Kubernetes 的無縫整合。如果您是 Kubernetes 的愛好者,就會知道這個平台非常適合編排可擴充的分散式系統。Milvus 充分利用 Kubernetes 的功能,讓您輕鬆部署、擴充及管理分散式 Milvus 叢集。本指南將使用 Milvus Operator,提供在 Kubernetes 上設定 Milvus 的清晰、循序漸進的說明。
先決條件
在我們開始之前,請確保您已具備下列先決條件:
Kubernetes 集群已啟動並運作。如果您在本機進行測試,
minikube
是很好的選擇。kubectl
安裝並設定與 Kubernetes 叢集互動。熟悉基本的 Kubernetes 概念,例如 Pod、服務和部署。
步驟 1:安裝 Minikube (用於本機測試)
如果您需要建立一個本機 Kubernetes 環境,minikube
是最適合您的工具。正式的安裝說明在minikube 入門頁面。
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
或者,您可以為 minikube 的二進位檔案建立一個符號連結,命名為kubectl
,以方便使用。
$ sudo ln -s $(which minikube) /usr/local/bin/kubectl
$ kubectl cluster-info
步驟 2:配置 StorageClass
在 Kubernetes 中,StorageClass定義工作負載可用的儲存類型,提供管理不同儲存配置的彈性。在繼續之前,您必須確保群集中有預設的 StorageClass。以下是如何檢查並在必要時設定一個。
1.檢查安裝的儲存類別
要查看 Kubernetes 群集中可用的 StorageClasses,請執行下列指令:
$ kubectl get sc
這將會顯示群集中安裝的儲存類別清單。如果已設定預設 StorageClass,則會以(default)
標示。
2.配置預設 StorageClass(如有必要)
如果沒有設定預設 StorageClass,您可以透過在 YAML 檔案中定義 StorageClass 來建立預設 StorageClass。使用以下範例建立預設 StorageClass:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: default-storageclass
provisioner: k8s.io/minikube-hostpath
此 YAML 配置定義了一個名為default-storageclass
的StorageClass
,它使用minikube-hostpath
供應器,常用於本機開發環境。
3.套用 StorageClass
default-storageclass.yaml
檔案建立後,請使用下列指令將其套用至叢集:
$ kubectl apply -f default-storageclass.yaml
這將為您的群集設定預設的 StorageClass,以確保您的儲存需求在未來能被妥善管理。
步驟 3:使用 Milvus Operator 安裝 Milvus
Milvus Operator 簡化在 Kubernetes 上部署 Milvus、管理部署、縮放和更新。在安裝 Milvus Operator 之前,您需要安裝cert-manager,它為 Milvus Operator 使用的 webhook 伺服器提供憑證。
1.安裝 cert-manager
Milvus Operator 需要cert-manager來管理安全通訊的憑證。確保您安裝了1.1.3或更新版本的cert-manager。要安裝它,請執行以下指令:
$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml
安裝完成後,執行以下指令以驗證 cert-manager pods 是否正在執行:
$ 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 pod 是否正在運行:
$ kubectl get pods -n milvus-operator
3.部署 Milvus 集群
一旦 Milvus Operator pod 運行,您就可以使用 Operator 部署 Milvus 集群。以下指令會使用預設組態,將 Milvus 叢集及其元件和相依性分別部署在不同的 Pod 中:
$ 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 大小工具,以獲得更簡化的方法。此工具可讓您調整各種設定,例如資源分配和儲存選項,然後下載相應的 YAML 檔案與您所需的配置。這可確保您的 Milvus 部署能針對您的特定使用情況進行最佳化。
圖:Milvus 大小工具
完成部署可能需要一些時間。您可以透過指令檢查 Milvus 叢集的狀態:
$ kubectl get milvus my-release
一旦您的 Milvus 叢集準備就緒,Milvus 叢集中的所有 Pod 應該都已執行或完成:
$ kubectl get pods
步驟 4:存取您的 Milvus 叢集
一旦您的 Milvus 叢集部署完成,您需要透過將本機連接埠轉寄到 Milvus 服務連接埠來存取它。按照以下步驟擷取服務連接埠並設定連接埠轉送。
1.取得服務連接埠
首先,使用下列指令找出服務連接埠。將<YOUR_MILVUS_PROXY_POD>
改為您的 Milvus 代理 pod 的名稱,通常以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 的Python SDK PyMilvus連線到集群並執行基本操作。
1.安裝 PyMilvus
要透過 Python 與 Milvus 互動,您需要安裝pymilvus
套件:
$ pip install pymilvus
2.連接至 Milvus
以下是 Python 腳本範例,可連線到您的 Milvus 叢集,並示範如何執行基本操作,例如建立集合。
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等工具為維護部署的健康和效能提供了寶貴的支援。
現在您已準備好在 Kubernetes 上發揮 Milvus 的全部潛力,祝您部署愉快!🚀
更多資源
- 先決條件
- 步驟 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