使用 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 選擇升級路徑,如下所示:
使用 Helm 升級 Milvus,從 v2.2.3 之前的次要版本升級到 v2.5.4。
在從 Milvus v2.1.x 升級到 v2.5.4 之前遷移元資料。
使用 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。如果在過程中發生錯誤,請先用回滾操作回滾到之前的版本。
下表列出了您可以進行的元資料遷移操作。
參數 | 說明 | 預設值 | 需要 |
---|---|---|---|
i | Milvus 實例名稱。 | None | 真實 |
n | Milvus 安裝的命名空間。 | default | 假 |
s | Milvus 原始版本。 | None | 真 |
t | 目標 Milvus 版本。 | None | 真 |
r | Milvus 元的根目錄。 | by-dev | 假 |
w | 新的 Milvus 圖片標籤。 | milvusdb/milvus:v2.2.0 | 假 |
m | meta 遷移圖片標籤。 | milvusdb/meta-migration:v2.2.0 | 錯誤 |
o | 元移轉操作。 | migrate | 錯誤 |
d | 是否在移轉完成後刪除移轉 pod。 | false | 否 |
c | 元遷移 pvc 的儲存類別。 | default storage class | 錯誤 |
e | milvus 使用的 etcd enpoint。 | etcd svc installed with milvus | 錯誤 |
1.遷移元資料
- 下載遷移腳本。
- 停止 Milvus 元件。Milvus etcd 中的任何活動會話都可能導致遷移失敗。
- 為 Milvus 元資料建立備份。
- 遷移 Milvus 元資料。
- 使用新的映像啟動 Milvus 元件。
2.將 Milvus 從 v2.1.x 升級到 2.2.0
以下命令假設你將 Milvus 從 v2.1.4 升級到 2.2.0。將它們改成適合你需要的版本。
指定 Milvus 實例名稱、源 Milvus 版本和目標 Milvus 版本。
./migrate.sh -i my-release -s 2.1.4 -t 2.2.0
如果你的 Milvus 沒有安裝在預設的 K8s 命名空間,用
-n
指定命名空間。./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0
如果您的 Milvus 安裝在自訂的
rootpath
,請用-r
指定根目錄。./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev
如果你的 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
如果您想在遷移完成後自動移除遷移 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
如果遷移失敗,請回滾並重新遷移。
./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