milvus-logo
LFAI
首页
  • 管理指南
    • 升级

使用 Milvus Operator 升级 Milvus 群集

本指南介绍如何使用 Milvus Operator 升级 Milvus 群集。

升级 Milvus Operator

运行以下命令将 Milvus Operator 版本升级到 v1.0.1。

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 Operator 升级到最新版本后,您有以下选择:

进行滚动升级

从 Milvus 2.2.3 版开始,你可以将 Milvus 协调器配置为主动待机模式,并为它们启用滚动升级功能,这样 Milvus 就能在协调器升级期间响应传入的请求。在以前的版本中,升级时需要移除协调器,然后再创建协调器,这可能会导致服务出现一定的停机时间。

基于 Kubernetes 提供的滚动更新功能,Milvus Operator 会根据部署的依赖关系对部署进行有序更新。此外,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.4.9

在上述配置文件中,将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.4.9

您可以将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.yml ),并按如下步骤将此配置文件应用到 Milvus 实例:

kubectl apply -f milvusupgrade.yml

通过更改映像升级 Milvus

在正常情况下,你可以通过更改映像将 Milvus 升级到最新版本。但要注意的是,用这种方法升级 Milvus 时会有一定的停机时间。

编写如下配置文件,并将其保存为milvusupgrade.yaml

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

然后运行以下命令执行升级:

kubectl apply -f milvusupgrade.yaml

迁移元数据

自 Milvus 2.2.0 起,元数据与以前版本的元数据不兼容。以下示例片段假定从 Milvus 2.1.4 升级到 Milvus 2.4.9。

1.为元数据迁移创建.yaml 文件

创建元数据迁移文件。下面是一个示例。需要在配置文件中指定namesourceVersiontargetVersion 。下面的示例将name 设置为my-release-upgrade ,将sourceVersion 设置为v2.1.4 ,将targetVersion 设置为v2.4.9 。这意味着您的 Milvus 群集将从 v2.1.4 升级到 v2.4.9。

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

2.应用新配置

运行以下命令应用新配置。

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

3.3. 检查元数据迁移状态

运行以下命令检查元数据迁移的状态。

kubectl describe milvus release-name

输出中的ready 表示元数据迁移成功。

或者,也可以运行kubectl get pod 检查所有 pod。如果所有 pod 都是ready ,则元数据迁移成功。

4.删除my-release-upgrade

升级成功后,删除 YAML 文件中的my-release-upgrade

翻译自DeepLogo

反馈

此页对您是否有帮助?