🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI
主頁
  • 管理指南
    • 升級

使用 Helm 圖表升級 Milvus 集群

本指南描述如何使用 Milvus Helm 圖表升級你的 Milvus 集群。

先決條件

  • Helm 版本 >= 3.14.0
  • Kubernetes 版本 >= 1.20.0

自 Milvus Helm 圖表版本 4.2.21 起,我們引入 pulsar-v3.x 圖表作為依賴。為了向下相容性,請升級您的 helm 到 v3.14 或更高版本,並確保在使用helm upgrade 時加入--reset-then-reuse-values 選項。

檢查 Milvus Helm 海圖

執行下列指令來檢查新的 Milvus 版本。

$ helm repo update zilliztech
$ helm search repo zilliztech/milvus --versions

位於https://milvus-io.github.io/milvus-helm/ 的 Milvus Helm Charts repo 已經歸檔,您可以從https://zilliztech.github.io/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 --reset-then-reuse-values

存檔的 repo 仍可使用於 4.0.31 之前的圖表。對於之後的版本,請使用新的 repo。

NAME                    CHART VERSION   APP VERSION             DESCRIPTION                                       
zilliztech/milvus       4.1.34          2.4.5                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.33          2.4.4                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.32          2.4.3                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.31          2.4.1                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.30          2.4.1                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.29          2.4.0                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.24          2.3.11                  Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.23          2.3.10                  Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.22          2.3.10                  Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.21          2.3.10                  Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.20          2.3.10                  Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.18          2.3.10                  Milvus is an open-source vector database built ... 
zilliztech/milvus       4.1.18          2.3.9                   Milvus is an open-source vector database built ...                                       
zilliztech/milvus       4.1.17          2.3.8                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.16          2.3.7                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.15          2.3.5                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.14          2.3.6                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.13          2.3.5                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.12          2.3.5                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.11          2.3.4                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.10          2.3.3                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.9           2.3.3                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.8           2.3.2                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.7           2.3.2                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.6           2.3.1                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.5           2.3.1                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.4           2.3.1                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.3           2.3.1                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.2           2.3.1                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.1           2.3.0                   Milvus is an open-source vector database built ...
zilliztech/milvus       4.1.0           2.3.0                   Milvus is an open-source vector database built ...

您可以為您的 Milvus 選擇升級路徑,如下所示:

- 進行滾動升級](#conduct-a-rolling-upgrade) 從 Milvus v2.2.3 及以後的版本升級到 v2.5.4。

進行滾動升級

自 Milvus 2.2.3 起,您可以設定 Milvus 協調器工作在主動待命模式,並啟用它們的滾動升級功能,以便 Milvus 可以在協調器升級期間回應傳入的請求。在之前的版本中,協調器需要在升級過程中移除然後再創建,這可能會導致服務出現一定的停機時間。

滾動升級需要協調器在主動待命模式下工作。您可以使用我們提供的腳本,設定協調器在主動待命模式下工作,並開始滾動升級。

基於 Kubernetes 提供的滾動更新功能,上述腳本會根據部署的依賴關係強制執行有序更新。此外,Milvus 實作了一套機制,以確保其元件在升級期間仍能與那些依賴它們的元件相容,大幅減少潛在的服務停機時間。

該腳本只適用於與 Helm 一起安裝的 Milvus 的升級。下表列出了腳本中可用的命令旗標。

參數說明預設值需要
iMilvus 實例名稱None真實
nMilvus 安裝的命名空間default
t目標 Milvus 版本None
w新的 Milvus 圖片標籤milvusdb/milvus:v2.2.3
o操作update

一旦您確保 Milvus 實例中的所有部署都處於正常狀態。您可以執行以下指令,將 Milvus 實例升級至 2.5.4。

sh rollingUpdate.sh -n default -i my-release -o update -t 2.5.4 -w 'milvusdb/milvus:v2.5.4'
  1. 腳本硬體編碼了部署的升級順序,無法變更。
  2. 腳本使用kubectl patch 更新部署,並使用kubectl rollout status 觀察其狀態。
  3. 腳本使用kubectl patch 將部署的app.kubernetes.io/version 標籤更新為指令中-t 旗標之後指定的標籤。

使用 Helm 升級 Milvus

要將 Milvus 從 v2.2.3 之前的次要版本升級到最新版本,請執行下列指令:

helm repo update zilliztech
helm upgrade my-release zilliztech/milvus --reset-then-reuse-values --version=4.1.24 # use the helm chart version here

使用前面命令中的 Helm 圖表版本。有關如何取得 Helm 圖表版本的詳細資訊,請參閱檢查 Milvus 版本

遷移元資料

自 Milvus 2.2.0 起,元資料與先前版本的元資料不相容。以下示例片段假設從 Milvus 2.1.4 升級到 Milvus 2.2.0。

1.檢查 Milvus 版本

執行$ helm list 檢查您的 Milvus 應用程式版本。您可以看到APP VERSION 是 2.1.4。

NAME                NAMESPACE   REVISION    UPDATED                                 STATUS      CHART           APP VERSION    
new-release         default     1           2022-11-21 15:41:25.51539 +0800 CST     deployed    milvus-3.2.18   2.1.4 

2.檢查正在運行的 pod

執行$ kubectl get pods 檢查執行中的 Pod。您可以看到以下輸出。

NAME                                             READY   STATUS      RESTARTS   AGE
my-release-etcd-0                               1/1     Running     0          21m
my-release-etcd-1                               1/1     Running     0          21m
my-release-etcd-2                               1/1     Running     0          21m
my-release-milvus-datacoord-664c58798d-fl75s    1/1     Running     0          21m
my-release-milvus-datanode-5f75686c55-xfg2r     1/1     Running     0          21m
my-release-milvus-indexcoord-5f98b97589-2l48r   1/1     Running     0          21m
my-release-milvus-indexnode-857b4ddf98-vmd75    1/1     Running     0          21m
my-release-milvus-proxy-6c548f787f-scspp        1/1     Running     0          21m
my-release-milvus-querycoord-c454f44cd-dwmwq    1/1     Running     0          21m
my-release-milvus-querynode-76bb4946d-lbrz6     1/1     Running     0          21m
my-release-milvus-rootcoord-7764c5b686-62msm    1/1     Running     0          21m
my-release-minio-0                              1/1     Running     0          21m
my-release-minio-1                              1/1     Running     0          21m
my-release-minio-2                              1/1     Running     0          21m
my-release-minio-3                              1/1     Running     0          21m
my-release-pulsar-bookie-0                      1/1     Running     0          21m
my-release-pulsar-bookie-1                      1/1     Running     0          21m
my-release-pulsar-bookie-2                      1/1     Running     0          21m
my-release-pulsar-bookie-init-tjxpj             0/1     Completed   0          21m
my-release-pulsar-broker-0                      1/1     Running     0          21m
my-release-pulsar-proxy-0                       1/1     Running     0          21m
my-release-pulsar-pulsar-init-c8vvc             0/1     Completed   0          21m
my-release-pulsar-recovery-0                    1/1     Running     0          21m
my-release-pulsar-zookeeper-0                   1/1     Running     0          21m
my-release-pulsar-zookeeper-1                   1/1     Running     0          20m
my-release-pulsar-zookeeper-2                   1/1     Running     0          20m

3.檢查影像標籤

檢查 pod 的 image 標籤my-release-milvus-proxy-6c548f787f-scspp 。您可以看到您的 Milvus 集群的版本是 v2.1.4。

$ kubectl get pods my-release-milvus-proxy-6c548f787f-scspp -o=jsonpath='{$.spec.containers[0].image}'
# milvusdb/milvus:v2.1.4

4.遷移元資料

Milvus 2.2 的一個主要改變是段索引的 metadata 結構。因此,當您將 Milvus 從 v2.1.x 升級到 v2.2.0 時,您需要使用 Helm 來遷移 metadata。這裡有一個腳本可以讓您安全地遷移 metadata。

這個腳本只適用於安裝在 K8s 集群上的 Milvus。如果在過程中發生錯誤,請先用回滾操作回滾到之前的版本。

下表列出了您可以進行的元資料遷移操作。

參數說明預設值需要
iMilvus 實例名稱。None真實
nMilvus 安裝的命名空間。default
sMilvus 原始版本。None
t目標 Milvus 版本。None
rMilvus 元的根目錄。by-dev
w新的 Milvus 圖片標籤。milvusdb/milvus:v2.2.0
mmeta 遷移圖片標籤。milvusdb/meta-migration:v2.2.0錯誤
o元移轉操作。migrate錯誤
d是否在移轉完成後刪除移轉 pod。false
c元遷移 pvc 的儲存類別。default storage class錯誤
emilvus 使用的 etcd enpoint。etcd svc installed with milvus錯誤

1.遷移元資料

  1. 下載遷移腳本
  2. 停止 Milvus 元件。Milvus etcd 中的任何活動會話都可能導致遷移失敗。
  3. 為 Milvus 元資料建立備份。
  4. 遷移 Milvus 元資料。
  5. 使用新的映像啟動 Milvus 元件。

2.將 Milvus 從 v2.1.x 升級到 2.2.0

以下命令假設你將 Milvus 從 v2.1.4 升級到 2.2.0。將它們改成適合你需要的版本。

  1. 指定 Milvus 實例名稱、源 Milvus 版本和目標 Milvus 版本。

    ./migrate.sh -i my-release -s 2.1.4 -t 2.2.0
    
  2. 如果你的 Milvus 沒有安裝在預設的 K8s 命名空間,用-n 指定命名空間。

    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0
    
  3. 如果您的 Milvus 安裝在自訂的rootpath ,請用-r 指定根目錄。

    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev
    
  4. 如果你的 Milvus 安裝了自訂的image ,用-w 指定圖片標籤。

    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev -w milvusdb/milvus:v2.2.0
    
  5. 如果您想在遷移完成後自動移除遷移 Pod,請設定-d true

    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -w milvusdb/milvus:v2.2.0 -d true
    
  6. 如果遷移失敗,請回滾並重新遷移。

    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev -o rollback -w milvusdb/milvus:v2.1.4
    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev -o migrate -w milvusdb/milvus:v2.2.0
    

免費嘗試托管的 Milvus

Zilliz Cloud 無縫接入,由 Milvus 提供動力,速度提升 10 倍。

開始使用
反饋

這個頁面有幫助嗎?