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

归档软件源仍可用于 4.0.31 之前的图表。对于后续版本,请使用新版本库。

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.4.17。

进行滚动升级

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

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

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

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

参数说明默认值需要
iMilvus 实例名称None为真
nMilvus 安装的命名空间default
tMilvus 目标版本None
w新的 Milvus 图像标签milvusdb/milvus:v2.2.3
o操作符update

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

sh rollingUpdate.sh -n default -i my-release -o update -t 2.4.17 -w 'milvusdb/milvus:v2.4.17'
  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.检查图像标签

检查 podmy-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 的一个主要变化是段索引的元数据结构。因此,当 Milvus 从 v2.1.x 升级到 v2.2.0 时,你需要使用 Helm 来迁移元数据。 下面是一个脚本,供你安全迁移元数据。

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

下表列出了元数据迁移的操作符。

参数说明默认值需要
iMilvus 实例名称。None
nMilvus 安装的命名空间。default
sMilvus 源版本。None
t目标 Milvus 版本。None目标版本
rMilvus 元的根路径。by-dev
w新的 Milvus 图像标签。milvusdb/milvus:v2.2.0
m元迁移图像标签。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 从 2.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
    

翻译自DeepLogo

想要更快、更简单、更好用的 Milvus SaaS服务 ?

Zilliz Cloud是基于Milvus的全托管向量数据库,拥有更高性能,更易扩展,以及卓越性价比

免费试用 Zilliz Cloud
反馈

此页对您是否有帮助?