跳到主要内容
版本:v2.4.x

使用 Helm Chart 升级 Milvus Standalone

本指南介绍如何使用 Milvus Helm Chart 升级 Milvus Standalone。

前提条件

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

自 Milvus Helm Chart 版本 4.2.21 起,我们引入了 pulsar-v3.x Chart 作为依赖。为了向后兼容,请将 Helm 升级到 v3.14 或更高版本,并确保在使用 helm upgrade 时添加 --reset-then-reuse-values 选项。

检查 Milvus 版本

运行以下命令检查新的 Milvus 版本。

Shell
helm repo update
helm search repo zilliztech/milvus --versions
说明

https://milvus-io.github.io/milvus-helm/ 上的 Milvus Helm Chart repo 已归档,你可以从 https://zilliztech.github.io/milvus-helm/ 获取进一步更新,具体如下:

Shell
helm repo add zilliztech https://zilliztech.github.io/milvus-helm
helm repo update zilliztech
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus --reset-then-reuse-values

归档仓库仍可用于 4.0.31 及更早版本的 Helm Chart。对于后续版本,请使用新仓库。

Text
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 的升级路径:

进行滚动升级

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

滚动升级要求协调程序以活动-待机模式工作。您可以使用我们提供的 脚本 将协调程序配置为活动-待机模式,然后开始滚动升级。

基于 Kubernetes 提供的滚动更新功能,上述脚本会根据部署的依赖关系对部署进行有序更新。此外,Milvus 还实现了一种机制,确保其组件在升级过程中与依赖它们的组件保持兼容,从而大大减少了潜在的服务停机时间。

该脚本仅适用于升级与 Helm 一起安装的 Milvus。下表列出了脚本中可用的命令标志。

参数说明默认值需要
iMilvus 实例名称NoneTrue
nMilvus 安装的命名空间defaultFalse
tMilvus 目标版本NoneTrue
w新的 Milvus 镜像标签milvusdb/milvus:v2.2.3True
o运算符updateFalse

确保 Milvus 实例中的所有部署都处于正常状态后。你可以运行以下命令将 Milvus 实例升级到 2.4.23。

Shell
sh rollingUpdate.sh -n default -i my-release -o update -t 2.4.23 -w 'milvusdb/milvus:v2.4.23'
说明
  1. 该脚本 不适 用于与 RocksMQ 一起安装的 Milvus 实例。
  2. 脚本对部署的升级顺序进行了硬编码,无法更改。
  3. 脚本使用 kubectl patch 更新部署,并使用 kubectl rollout status 观察部署状态。
  4. 脚本使用 kubectl patch 将部署的 app.kubernetes.io/version 标签更新为命令中 -t 标志后指定的标签。

使用 Helm 升级 Milvus

要将 Milvus 从 v2.2.3 之前的次版本升级到最新版本,请运行以下命令:

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

在前面的命令中使用 Helm Chart 版本。有关如何获取 Helm Chart 版本的详细信息,请参阅 检查 Milvus 版本

迁移元数据

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

1. 检查 Milvus 版本

运行 $ helm list 检查 Milvus 应用程序版本。您可以看到 APP VERSION 是 2.1.4。

Text
NAME             	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART        	APP VERSION
my-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。您可以看到以下输出。

Text
NAME                                            READY   STATUS    RESTARTS   AGE
my-release-etcd-0 1/1 Running 0 84s
my-release-milvus-standalone-75c599fffc-6rwlj 1/1 Running 0 84s
my-release-minio-744dd9586f-qngzv 1/1 Running 0 84s

3. 检查镜像标签

检查 pod my-release-milvus-proxy-6c548f787f-scspp 的镜像标签。您可以看到 Milvus 集群的版本是 v2.1.4。

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

4. 迁移元数据

Milvus 2.2 的一个主要变化是段索引的元数据结构。因此,当 Milvus 从 v2.1.x 升级到 v2.2.0 时,你需要使用 Helm 来迁移元数据。 下面是 一个脚本,供你安全迁移元数据。

该脚本仅适用于安装在 K8s 集群上的 Milvus。如果过程中出现错误,请先使用回滚操作回滚到之前的版本。

下表列出了元数据迁移步骤。

参数说明默认值需要
iMilvus 实例名称。NoneTrue
nMilvus 安装的命名空间。defaultFalse
sMilvus 源版本。NoneTrue
t目标 Milvus 版本。NoneTrue
rMilvus 元的根路径。by-devFalse
w新的 Milvus 镜像标签。milvusdb/milvus:v2.2.0False
m元迁移镜像标签。milvusdb/meta-migration:v2.2.0False
o元数据迁移操作。migrateFalse
d迁移完成后是否删除迁移 pod。falseFalse
c元迁移 pvc 的存储类别。default storage classFalse
eMilvus 使用的 etcd enpoint。etcd svc installed with milvusFalse

1. 迁移元数据

  1. 下载 迁移脚本
  2. 停止 Milvus 组件。Milvus etcd 中的任何实时会话都可能导致迁移失败。
  3. 创建 Milvus 元数据备份。
  4. 迁移 Milvus 元数据。
  5. 使用新镜像启动 Milvus 组件。

2. 将 Milvus 从 2.1.x 版升级到 2.4.23 版

以下命令假定你将 Milvus 从 v2.1.4 升级到 2.4.23。请将它们更改为适合你需要的版本。

  1. 指定 Milvus 实例名称、源 Milvus 版本和目标 Milvus 版本。

    Shell
    ./migrate.sh -i my-release -s 2.1.4 -t 2.4.23
  2. 如果 Milvus 没有安装在默认的 K8s 命名空间,请用 -n 指定命名空间。

    Shell
    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.4.23
  3. 如果 Milvus 安装的是自定义 rootpath,请用 -r 指定根路径。

    Shell
    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.4.23 -r by-dev
  4. 如果你的 Milvus 安装的是自定义 image,请用 -w 指定图片标签。

    Shell
    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.4.23 -r by-dev -w milvusdb/milvus:v2.4.23
  5. 如果想在迁移完成后自动移除迁移 pod,请设置 -d true

    Shell
    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.4.23 -w milvusdb/milvus:v2.4.23 -d true
  6. 如果迁移失败,请回滚并重新迁移。

    Shell
    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.4.23 -r by-dev -o rollback -w milvusdb/milvus:v2.1.1
    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.4.23 -r by-dev -o migrate -w milvusdb/milvus:v2.4.23