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

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

  • 升級

  • 升級 Milvus 集群

使用 Milvus Operator 升級 Milvus 集群

本指南描述如何使用 Milvus Operator 升級您的 Milvus 集群。

升級你的 Milvus 操作員

執行以下指令,將您的 Milvus Operator 版本升級至 v1.2.0。

helm repo add zilliztech-milvus-operator https://zilliztech.github.io/milvus-operator/
helm repo update zilliztech-milvus-operator
helm -n milvus-operator upgrade milvus-operator zilliztech-milvus-operator/milvus-operator

一旦您將 Milvus 操作員升級到最新版本,您有以下選擇:

進行滾動升級

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

基於 Kubernetes 提供的滾動更新功能,Milvus 操作者會根據部署的依賴關係,強制執行部署的有序更新。此外,Milvus 實作了一套機制,以確保其元件在升級過程中與依賴元件的系統保持相容,大幅減少潛在的服務停機時間。

預設關閉了滾動升級功能。您需要通過配置文件明確地啟用它。

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
spec:
  components:
    enableRollingUpdate: true
    imageUpdateMode: rollingUpgrade # Default value, can be omitted
    image: milvusdb/milvus:v2.5.4

在上述配置文件中,將spec.components.enableRollingUpdate 設定為true ,並將spec.components.image 設定為所需的 Milvus 版本。

預設情況下,Milvus 會以有序的方式為協調器執行滾動升級,其中會逐一取代協調器 pod 映像檔。若要減少升級時間,請考慮將spec.components.imageUpdateMode 設為all ,讓 Milvus 在同一時間取代所有 Pod 影像。

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
spec:
  components:
    enableRollingUpdate: true
    imageUpdateMode: all
    image: milvusdb/milvus:v2.5.4

您可以將spec.components.imageUpdateMode 設為rollingDowngrade ,讓 Milvus 以較低的版本取代協調器 Pod 影像。

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
spec:
  components:
    enableRollingUpdate: true
    imageUpdateMode: rollingDowngrade
    image: milvusdb/milvus:<some-old-version>

然後將您的設定儲存為 YAML 檔案 (例如milvusupgrade.yaml),並將此設定檔修補到您的 Milvus 實例,如下所示:

kubectl patch -f milvusupgrade.yaml --patch-file milvusupgrade.yaml --type merge 

透過變更 Milvus 的映像來升級它

在一般情況下,您可以簡單地透過改變映像檔,將您的 Milvus 更新到最新版本。然而,請注意,以這種方式升級 Milvus 時會有一定的停機時間。

編譯如下配置檔,並將其保存為milvusupgrade.yaml

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
spec:
  # Omit other fields ...
  components:
   image: milvusdb/milvus:v2.5.4

然後執行以下步驟來執行升級:

kubectl patch -f milvusupgrade.yaml --patch-file milvusupgrade.yaml --type merge 

遷移元資料

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

1.建立.yaml 檔案進行元資料遷移

建立一個元資料遷移檔案。以下是一個範例。您需要在設定檔中指定name,sourceVersion, 和targetVersion 。以下範例將name 設定為my-release-upgrade,sourceVersion 設定為v2.1.4,targetVersion 設定為v2.5.4 。這表示您的 Milvus 集群將從 v2.1.4 升級到 v2.5.4。

apiVersion: milvus.io/v1beta1
kind: MilvusUpgrade
metadata:
  name: my-release-upgrade
spec:
  milvus:
    namespace: default
    name: my-release
  sourceVersion: "v2.1.4"
  targetVersion: "v2.5.4"
  # below are some omit default values:
  # targetImage: "milvusdb/milvus:v2.5.4"
  # toolImage: "milvusdb/meta-migration:v2.2.0"
  # operation: upgrade
  # rollbackIfFailed: true
  # backupPVC: ""
  # maxRetry: 3

2.套用新設定

執行下列指令建立新的配置。

$ kubectl create -f https://github.com/zilliztech/milvus-operator/blob/main/config/samples/beta/milvusupgrade.yaml

3.檢查元資料遷移的狀態

執行下列指令檢查元資料遷移的狀態。

kubectl describe milvus release-name

輸出中的狀態ready 表示元資料遷移成功。

或者,您也可以執行kubectl get pod 來檢查所有的 Pod。如果所有的 pod 都是ready ,則表示元資料遷移成功。

4.刪除my-release-upgrade

升級成功後,刪除 YAML 檔案中的my-release-upgrade

免費嘗試托管的 Milvus

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

開始使用
反饋

這個頁面有幫助嗎?