使用 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 Charts 之前,您需要先新增 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 Charts。
線上安裝
1. 部署 Milvus 叢集
安裝 Helm 圖表後,即可在 Kubernetes 上啟動 Milvus。本節將引導您部署 Milvus 叢集。
需要獨立部署嗎?
若您希望以獨立模式(單一節點)部署 Milvus 進行開發或測試,請使用以下指令:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.24 \
--set cluster.enabled=false \
--set pulsarv3.enabled=false \
--set standalone.messageQueue=woodpecker \
--set woodpecker.enabled=true \
--set streaming.enabled=true
注意:獨立模式預設使用 Woodpecker 作為訊息佇列,並啟用 Streaming Node 元件。詳細資訊請參閱《架構概覽》及《使用 Woodpecker》。
部署 Milvus 叢集:
以下命令將部署一個針對 v2.6.24 進行過最佳化設定的 Milvus 叢集,並使用 Woodpecker 作為推薦的訊息佇列:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.24 \
--set pulsarv3.enabled=false \
--set woodpecker.enabled=true \
--set streaming.enabled=true \
--set indexNode.enabled=false
此命令的功能:
- 使用Woodpecker作為訊息佇列(建議採用以減少維護工作)
- 啟用新的「串流節點」元件以提升效能
- 停用舊版索引節點(相關功能現已由資料節點處理)
- 停用 Pulsar,改用 Woodpecker
Milvus 2.6.x 中的架構變更:
- 訊息佇列:現建議使用Woodpecker(相較於 Pulsar,可減少基礎架構維護工作)
- 新元件:引入「串流節點」,並預設啟用
- 整合的元件:索引節點與資料節點已合併為單一的資料節點
完整的架構詳情,請參閱《架構概覽》。
其他訊息佇列選項:
若您偏好使用Pulsar(傳統選擇)而非 Woodpecker:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.24 \
--set streaming.enabled=true \
--set indexNode.enabled=false
後續步驟: 上述指令會以建議的設定部署 Milvus。若要投入生產環境使用:
- 請使用Milvus 規模規劃工具,根據您的資料量來優化設定
- 請參閱《Milvus 系統配置檢查清單》以了解進階設定選項
重要注意事項:
- 版本命名:僅可使用字母、數字和連字號(不允許使用點號)
- Kubernetes v1.25 及以上版本:若遇到 PodDisruptionBudget 相關問題,請採用此解決方案:
helm install my-release zilliztech/milvus \ --set pulsar.bookkeeper.pdb.usePolicy=false \ --set pulsar.broker.pdb.usePolicy=false \ --set pulsar.proxy.pdb.usePolicy=false \ --set pulsar.zookeeper.pdb.usePolicy=false
如需更多資訊,請參閱Milvus Helm Chart及Helm 文件。
2. 檢查 Milvus 叢集狀態
透過檢查 Pod 狀態來驗證部署是否成功:
kubectl get pods
請等待所有 Pod 顯示「Running」狀態。採用 v2.6.24 配置時,您應會看到類似以下的 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-streaming-node-xxxxxxxxx 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
需驗證的關鍵元件:
- Milvus 元件:
mixcoord、datanode、querynode、proxy、streaming-node - 依賴項:
etcd(元資料)、minio(物件儲存)、pulsar(訊息佇列)
設定完畢端口轉發後(請參閱下一步),您亦可透過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 Web UI。
離線安裝
若您身處網路受限環境,請依照本節的步驟啟動 Milvus 叢集。
1. 取得 Milvus 清單
執行以下指令以取得 Milvus 配置檔。
$ helm template my-release zilliztech/milvus > milvus_manifest.yaml
上述命令會為 Milvus 叢集渲染圖表範本,並將輸出結果儲存至名為milvus_manifest.yaml 的 manifests 檔案中。透過此 manifests 檔案,您可以安裝一個 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 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
接下來該做什麼
在 Docker 中安裝 Milvus 後,您可以:
查看「Hello Milvus」以了解 Milvus 的功能。
學習 Milvus 的基本操作:
在雲端部署您的 Milvus 叢集:
探索Milvus WebUI,這是專為 Milvus 可觀測性與管理而設計的直觀網頁介面。
探索Milvus Backup,這是一款用於 Milvus 資料備份的開源工具。
探索Birdwatcher,這是一款用於 Milvus 除錯及動態配置更新的開源工具。
探索Attu,這是一款用於直覺式管理 Milvus 的開源 GUI 工具。