使用 Helm 在 Kubernetes 中執行 Milvus

本頁面說明如何使用Milvus Helm 圖表在 Kubernetes 中啟動 Milvus 實例。

概述

Helm 使用一種稱為「charts」的封裝格式。charts 是一組檔案的集合,用於描述一組相關的 Kubernetes 資源。Milvus 提供了一組 charts,以協助您部署 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。若要投入生產環境使用:

重要注意事項:

  • 版本命名:僅可使用字母、數字和連字號(不允許使用點號)
  • 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 叢集的設定。

  1. 建立一個包含所需設定的values.yaml 檔案。

    以下假設您希望啟用proxy.http 。

    extraConfigFiles:
      user.yaml: |+
        proxy:
          http:
            enabled: true
    

    有關適用的設定項目,請參閱《系統設定》。

  2. 套用values.yaml 檔案。

helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
  1. 檢查已更新的設定。

    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 後,您可以: