使用 Helm 在 Kubernetes 中執行 Milvus
本頁面說明如何使用Milvus Helm 圖表在 Kubernetes 中啟動 Milvus 實例。
概述
Helm 使用一種稱為「charts」的封裝格式。charts 是一組檔案的集合,用以描述一組相關的 Kubernetes 資源。Milvus 提供了一組 charts,以協助您部署 Milvus 的依賴項與組件。
先決條件
安裝StorageClass。您可以透過以下方式檢查已安裝的 StorageClass。
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate false安裝前請先確認硬體與軟體需求。
在安裝 Milvus 之前,建議使用Milvus 規格規劃工具,根據您的資料量估算硬體需求。這有助於確保您的 Milvus 安裝能獲得最佳效能與資源分配。
若在拉取映像檔時遇到任何問題,請透過community@zilliz.com聯絡我們,並提供問題詳情,我們將為您提供必要的支援。
安裝 Milvus Helm Chart
在安裝 Milvus Helm Chart 之前,您需要新增 Milvus Helm 儲存庫。
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
位於https://github.com/milvus-io/milvus-helm 的 Milvus Helm Charts 儲存庫已歸檔。我們現在使用位於https://github.com/zilliztech/milvus-helm 的新儲存庫。歸檔的儲存庫仍可提供 4.0.31 及更早版本的 Charts,但後續版本請使用新儲存庫。
接著請依照以下步驟從儲存庫取得 Milvus Helm Charts:
$ helm repo update
您隨時可執行此指令以取得最新的 Milvus Helm 圖表。
線上安裝
1. 部署 Milvus 叢集
安裝 Helm 圖表後,即可在 Kubernetes 上啟動 Milvus。本節將引導您部署 Milvus 叢集。
需要獨立部署嗎?
若您希望以獨立模式(單節點)部署 Milvus 進行開發或測試,請使用以下指令:
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.3 \
--set cluster.enabled=false \
--set pulsarv3.enabled=false \
--set standalone.messageQueue=woodpecker \
--set woodpecker.enabled=true \
--set streaming.enabled=true
注意:獨立模式預設使用 Woodpecker 作為訊息佇列,並啟用「串流節點」元件。獨立部署會將 Woodpecker內嵌於Milvus Pod 中執行;專用的 Woodpecker服務(獨立 Pod)僅適用於分散式/叢集部署。詳細資訊請參閱《架構概覽》與《Woodpecker》。
部署 Milvus 叢集:
若採用 Woodpecker 服務模式,建議使用 Milvus 3.0.3 或更新版本,並搭配 Woodpecker v0.1.46 或更新版本。
以下指令將部署一個針對 v3.0.3 進行過最佳化設定的 Milvus 叢集,並使用 Woodpecker 作為建議的消息佇列:
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.3 \
--set woodpecker.enabled=true \
--set woodpecker.image.tag=v0.1.46 \
--set streaming.enabled=true \
--set streaming.woodpecker.embedded=false \
--set indexNode.enabled=false
此命令的功能:
- 使用Woodpecker作為訊息佇列(建議採用以減少維護工作)
- 將Woodpecker 作為專用服務(獨立的 StatefulSet)運行,而非嵌入至串流節點中
- 啟用新的串流節點 (Streaming Node) 元件以提升效能
- 停用舊版索引節點(相關功能現由資料節點處理)
Milvus 2.6.x 中的架構變更:
- 訊息佇列:現建議使用Woodpecker(相較於 Pulsar,可減少基礎架構維護工作)
- 新元件:引入「串流節點」,並預設啟用
- 整合的元件:索引節點與資料節點已合併為單一的資料節點
完整的架構詳情,請參閱《架構概覽》。
替代訊息佇列:若要使用 Pulsar、Kafka 或 RocksMQ 取代 Woodpecker 進行部署,請參閱「可選依賴項」。
後續步驟: 上述指令會以建議的設定部署 Milvus。若要投入生產環境使用:
- 請使用Milvus 規模規劃工具,根據您的資料量來優化設定
- 請參閱《Milvus 系統配置檢查清單》以了解進階配置選項
2. 檢查 Milvus 叢集狀態
透過檢查 Pod 狀態來確認部署是否成功:
kubectl get pods
請等待所有 Pod 顯示「Running」狀態。採用 v3.0.3 配置時,您應會看到類似以下的 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-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-milvus-streamingnode-7b8cfc769c-mqmsm 1/1 Running 0 3m24s
my-release-milvus-woodpecker-0 1/1 Running 0 3m24s
my-release-milvus-woodpecker-1 1/1 Running 0 3m24s
my-release-milvus-woodpecker-2 1/1 Running 0 3m24s
my-release-milvus-woodpecker-3 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
需驗證的關鍵元件:
- Milvus 元件:
mixcoord、datanode、querynode、proxy、streamingnode - 依賴項:
etcd(元資料)、minio(物件儲存)、woodpecker(訊息佇列)
透過streaming.woodpecker.embedded=false ,Woodpecker會以專用的 StatefulSet形式運行(my-release-milvus-woodpecker ,預設為 4 個複本 — 3 個節點的法定人數加上 1 個備用節點以確保容錯; 請勿將woodpecker.replicaCount 設定低於 3)並由無頭服務作為前端,採用 MinIO 作為儲存後端——因此該叢集擁有獨立的woodpecker Pod 集合,與串流節點相互區隔。
設定完畢端口轉發後(請參閱下一步),您亦可透過http://127.0.0.1:9091/webui/ 存取Milvus WebUI。詳細資訊請參閱Milvus WebUI。
3. 連線至 Milvus
若要從 Kubernetes 外部連線至您的 Milvus 叢集,您需要設定端口轉發。
設定端口轉發:
kubectl port-forward service/my-release-milvus 27017:19530
此指令會將您的本地端埠27017 轉發至 Milvus 埠19530 。您應會看到:
Forwarding from 127.0.0.1:27017 -> 19530
連線詳細資訊:
- 本地端連線:
localhost:27017 - Milvus 預設埠:
19530
端口轉發選項:
- 自動指派本地端口:使用
:19530取代27017:19530,讓 kubectl 自行選擇可用端口 - 監聽所有介面:新增
--address 0.0.0.0以允許來自其他機器的連線:kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530 - 獨立部署:若使用獨立模式,服務名稱保持不變
使用 Milvus 時請保持此終端機開啟。現在您可以透過任何 Milvus SDK 連線至localhost:27017 來存取 Milvus。
(可選)更新 Milvus 設定
您可以透過編輯 `values.yaml ` 檔案並重新套用,來更新 Milvus 叢集的設定。
建立一個包含所需設定的
values.yaml檔案。以下假設您希望啟用
proxy.http。extraConfigFiles: user.yaml: |+ proxy: http: enabled: true有關適用的設定項目,請參閱《系統設定》。
套用
values.yaml檔案。
helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
檢查已更新的設定。
helm get values my-release輸出結果應顯示已更新的設定。
存取 Milvus WebUI
Milvus 內建名為 Milvus WebUI 的圖形化使用者介面工具,您可透過瀏覽器存取。Milvus WebUI 透過簡單直覺的介面,提升系統的可觀察性。您可以使用 Milvus WebUI 觀察 Milvus 各元件與依賴項的統計資料和指標、檢查資料庫與收集項的詳細資訊,並列出詳細的 Milvus 配置。 有關 Milvus WebUI 的詳細資訊,請參閱Milvus WebUI
若要啟用對 Milvus WebUI 的存取,您需要將代理 pod 進行端口轉發至本機端口。
$ 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 WebUI。
離線安裝
若您身處網路受限環境,請依照本節的步驟啟動 Milvus 叢集。
1. 取得 Milvus 配置檔
執行以下指令以取得 Milvus 配置檔。
$ helm template my-release zilliztech/milvus > milvus_manifest.yaml
上述命令會為 Milvus 叢集渲染圖表範本,並將輸出結果儲存至名為milvus_manifest.yaml 的清單檔案中。透過此清單,您可以安裝一個 Milvus 叢集,其各組件與依賴項將分別置於不同的 Pod 中。
- 若要以獨立模式安裝 Milvus 實例(即所有 Milvus 元件均包含於單一 Pod 內),則應執行
helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false --set standalone.messageQueue=woodpecker --set woodpecker.enabled=true --set streaming.enabled=true zilliztech/milvus > milvus_manifest.yaml,以渲染獨立模式下 Milvus 實例的圖表範本。 - 若要變更 Milvus 設定,請下載
value.yaml範本,在其中填入您所需的設定,並使用helm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yaml據此渲染對應的 manifests 檔案。
2. 下載映像檔拉取腳本
映像拉取腳本以 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 --reset-then-reuse-values
解除安裝 Milvus
執行以下指令以解除安裝 Milvus。
$ helm uninstall my-release
可選的依賴項
此部署使用Woodpecker作為訊息佇列、etcd作為元資料儲存,以及MinIO作為物件儲存。若要使用其他訊息佇列,或連接外部物件儲存/元資料,請參閱:
- 訊息佇列:Woodpecker(預設)·Pulsar·Kafka·RocksMQ
- 物件儲存:MinIO(預設)·AWS S3·Azure Blob·GCP Cloud Storage·阿里雲 OSS·騰訊 COS·華為 OBS·S3 相容
- 元資料:etcd
Storage V3 預設為停用狀態。在使用依賴此功能的特性之前,請先啟用它。有關需求與相容性考量,請參閱Storage V3。
下一步
在 Docker 中安裝 Milvus 後,您可以:
請參閱《Hello Milvus》以了解 Milvus 的功能。
學習 Milvus 的基本操作:
在雲端部署您的 Milvus 叢集:
探索Milvus WebUI,這是專為 Milvus 可觀察性與管理設計的直觀網頁介面。
探索Milvus Backup,這是一款用於 Milvus 資料備份的開源工具。
探索Birdwatcher,這是一款用於 Milvus 除錯與動態配置更新的開源工具。
探索Attu,這是一款用於直觀管理 Milvus 的開源圖形化介面工具。