使用 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 milvus https://zilliztech.github.io/milvus-helm/
位於https://github.com/milvus-io/milvus-helm
的 Milvus Helm Charts repo 已經歸檔,您可以從https://github.com/zilliztech/milvus-helm
取得進一步的更新,如下所示:
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
helm repo update
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus
存檔的 repo 仍可使用於 4.0.31 之前的圖表。對於之後的版本,請使用新的 repo。
然後從儲存庫取得 Milvus 圖表,如下所示:
$ helm repo update
您可以隨時執行這個指令來取得最新的 Milvus Helm 圖表。
線上安裝
1.部署 Milvus 集群
安裝 Helm 圖表後,您就可以在 Kubernetes 上啟動 Milvus。本節將引導您完成啟動 Milvus 的步驟。
$ helm install my-release milvus/milvus
在上述指令中,my-release
是發行版名稱,而milvus/milvus
是本機安裝的圖表儲存庫。若要使用其他名稱,請將my-release
替換為您認為合適的名稱。
上面的命令使用預設配置部署 Milvus 叢集及其元件和相依性。要自訂這些設定,我們建議您使用Milvus 大小調整工具,根據您的實際資料大小調整配置,然後下載相應的 YAML 檔案。要瞭解有關配置參數的更多資訊,請參閱Milvus 系統配置清單。
- 版本名稱只能包含字母、數字和破折號。版本名稱中不允許使用點。
- 使用 Helm 安裝 Milvus 時,預設命令列會安裝群集版本的 Milvus。獨立安裝 Milvus 時需要進一步設定。
- 根據Kubernetes 的廢棄 API 移轉指南,PodDisruptionBudget 的policy/v1beta1API 版本自 v1.25 起不再提供服務。建議您遷移艙單和 API 用戶端,改用policy/v1API 版本。
對於仍在 Kubernetes v1.25 及更新版本上使用 PodDisruptionBudget 的policy/v1beta1API 版本的使用者,作為變通方案,您可以執行下列指令來安裝 Milvus:
helm install my-release milvus/milvus --set pulsar.bookkeeper.pdb.usePolicy=false,pulsar.broker.pdb.usePolicy=false,pulsar.proxy.pdb.usePolicy=false,pulsar.zookeeper.pdb.usePolicy=false
- 請參閱Milvus Helm Chart和Helm以取得更多資訊。
2.檢查 Milvus 群集狀態
執行下列指令來檢查 Milvus 叢集中所有 Pod 的狀態。
$ kubectl get pods
一旦所有 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-indexnode-5c5f7b5bd9-l8hjg 1/1 Running 0 3m24s
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-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 WebUI,網址是http://127.0.0.1:9091/webui/
,以瞭解更多關於您的 Milvus 實例的資訊。詳情請參閱Milvus WebUI。
3.將本機連接埠轉送至 Milvus
執行下列指令,取得 Milvus 叢集服務的連接埠。
$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
輸出顯示 Milvus 實例在預設的19530 連接埠提供服務。
如果您以獨立模式部署 Milvus,請將 Pod 名稱從my-release-milvus-proxy-xxxxxxxxxx-xxxxx
改為my-release-milvus-xxxxxxxxxx-xxxxx
。
然後執行下列指令,將本機連接埠轉寄到 Milvus 服務的連接埠。
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
您可以選擇在上述指令中使用:19530
而不是27017:19530
,讓kubectl
替您分配一個本機連接埠,這樣您就不必管理連接埠衝突。
預設情況下,kubectl 的連接埠轉發只會在localhost
上監聽。如果您希望 Milvus 監聽選定或所有的 IP 位址,請使用address
。以下指令會使 port-forward 在主機上的所有 IP 位址上聆聽。
存取 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 milvus/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 pulsar.enabled=false milvus/milvus > milvus_manifest.yaml
來渲染單機模式下 Milvus 實例的圖表模板。 - 要變更 Milvus 配置,下載
value.yaml
範本,將您所需的設定放入其中,並使用helm template -f values.yaml my-release milvus/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
卸載 Milvus
執行以下命令卸載 Milvus。
$ helm uninstall my-release
下一步
在 Docker 中安裝 Milvus 後,您可以
檢查Hello Milvus,看看 Milvus 可以做什麼。
學習 Milvus 的基本操作:
在雲端部署您的 Milvus 叢集:
探索Milvus WebUI,Milvus 可觀察與管理的直覺式網頁介面。
探索Milvus 備份,Milvus 資料備份的開放原始碼工具。
探索Birdwatcher,用於調試 Milvus 和動態組態更新的開放原始碼工具。
探索Attu,一個開放源碼 GUI 工具,用於直觀的 Milvus 管理。