使用 Helm 在 Kubernetes 中執行 Milvus
本頁說明如何使用 MilvusHelm 圖表在 Kubernetes 中啟動 Milvus 實例。
概述
Helm 使用一種稱為圖表的封裝格式。圖表是描述相關 Kubernetes 資源集的檔案集合。Milvus 提供了一組圖表來幫助您部署 Milvus 的相依性和元件。
先決條件
安裝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 Helm Chart
在安裝 Milvus Helm Charts 之前,您需要新增 Milvus Helm repository。
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
位於https://github.com/milvus-io/milvus-helm 的 Milvus Helm Charts repo 已經歸檔。我們現在使用新的套件庫https://github.com/zilliztech/milvus-helm 。存檔的 repo 仍可用於 4.0.31 之前的圖表,但對於之後的版本,請使用新的 repo。
然後如下從儲存庫取得 Milvus 圖表:
$ helm repo update
您可以隨時執行這個指令來取得最新的 Milvus Helm 海圖。
線上安裝
1.部署 Milvus 集群
安裝 Helm 圖表後,您就可以在 Kubernetes 上啟動 Milvus。本節將引導您部署 Milvus 叢集。
需要獨立部署來代替?
如果您喜歡以獨立模式 (單一節點) 部署 Milvus 進行開發或測試,請使用此指令:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.15 \
--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 集群:
以下指令使用 Woodpecker 作為建議的訊息佇列,以 v2.6.15 的最佳化設定部署 Milvus 叢集:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.15 \
--set pulsarv3.enabled=false \
--set woodpecker.enabled=true \
--set streaming.enabled=true \
--set indexNode.enabled=false
此指令的作用:
- 使用Woodpecker作為訊息佇列 (建議使用以減少維護)
- 啟用新的Streaming Node元件以改善效能
- 停用傳統的索引節點(功能現在由資料節點處理)
- 停用 Pulsar,改用 Woodpecker
Milvus 2.6.x 的架構變更
- 訊息佇列:現在建議使用Woodpecker(相較於 Pulsar 可減少基礎架構的維護)
- 新元件:引入串流節點,並預設啟用
- 合併元件:索引節點和資料節點合併為單一資料節點
如需完整的架構詳細資訊,請參閱架構概述。
替代訊息佇列選項:
如果您偏好使用Pulsar(傳統選擇) 而非 Woodpecker:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.15 \
--set streaming.enabled=true \
--set indexNode.enabled=false
接下來的步驟:上面的指令以建議的配置部署 Milvus。對於生產使用:
- 使用Milvus Sizing Tool根據您的資料大小優化設定
- 檢閱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.15 設定下,您應該會看到類似的 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 連線到 Milvus,網址是localhost:27017 。
(可選)更新 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 隨附一個內建的 GUI 工具,稱為 Milvus WebUI,您可以透過瀏覽器存取。Milvus Web UI 以簡單直觀的介面增強系統的可觀察性。您可以使用 Milvus Web UI 觀察 Milvus 元件和相依性的統計和指標、檢查資料庫和收集的詳細資訊,以及列出 Milvus 的詳細配置。有關 Milvus Web UI 的詳細資訊,請參閱Milvus WebUI。
要啟用對 Milvus Web UI 的存取,您需要將代理 pod 的連接埠轉發到本機連接埠。
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
現在,您可以存取 Milvus Web UI,網址是http://localhost:27018 。
離線安裝
如果您處在網路受限的環境,請依照本節的步驟啟動 Milvus 叢集。
1.取得 Milvus 清單
執行下列命令取得 Milvus 清單。
$ helm template my-release zilliztech/milvus > milvus_manifest.yaml
上述命令會渲染 Milvus 叢集的圖表模板,並將輸出保存到一個名為milvus_manifest.yaml 的艙單檔案中。使用此清單,您可以在獨立的 Pod 中安裝 Milvus 叢集及其元件和相依性。
- 若要在單機模式下安裝 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來渲染相應的艙單。
2.下載影像拉取腳本
image-pulling script 是用 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 備份,Milvus 資料備份的開放原始碼工具。
探索Birdwatcher,用於調試 Milvus 和動態組態更新的開放原始碼工具。
探索Attu,一個開放源碼 GUI 工具,用於直觀的 Milvus 管理。