
类型:向量数据库
简介:存储、索引和管理由深度神经网络和机器学习(ML)模型生成的大规模嵌入向量。
本文将介绍如何使用Milvus Operator升级Milvus集群以及Milvus Standalone。随着Milvus的不断更新,用户需要保持系统的最新版本,以确保性能和兼容性。
一、使用Milvus Operator升级Milvus集群
1、升级Milvus操作符
首先需要升级Milvus操作符。运行以下命令将操作符版本升级到 v1.0.1。
升级Milvus操作符后,可以选择以下几种升级方法:
(1)滚动升级
如果当前的Milvus版本是v2.2.3或更高版本,可以选择进行滚动升级,以便在升级过程中尽量减少服务停机时间。
(2)通过更改映像进行升级
如果Milvus版本是v2.2.3之前的次版本,建议直接通过更改映像版本来进行升级。此方式会有短暂的停机时间,但操作较为简单。
(3)迁移元数据并升级
如果版本是v2.1.x,迁移元数据是升级到v2.5.1前的必要步骤。
2、滚动升级
自Milvus 2.2.3版本起,Milvus支持协调器处于主动待机模式,启用滚动升级功能。在协调器升级时,Milvus能够继续响应传入请求。相比于早期版本,升级过程将不再需要完全移除协调器,减少了停机时间。
由于滚动升级默认是禁用的,需要在配置文件中明确启用此功能。
(1)启用滚动升级
在配置文件中,将spec.components.enableRollingUpdate设置为true,并确保spec.components.image设置为目标Milvus版本。
例如,修改如下:
(2)配置并执行升级
如果希望缩短升级时间,可以将spec.components.imageUpdateMode设置为all,这将使Milvus同时更新所有pod的映像。还可以选择将spec.components.imageUpdateMode设置为rollingDowngrade,以便将协调器pod映像替换为较低版本。
配置文件修改完成后,保存为 milvusupgrade.yml,并使用以下命令执行补丁:
kubectl patch -f milvusupgrade.yml
3、通过更改映像升级
如果希望通过更改映像进行升级,可以按照以下步骤操作:
创建并编辑milvusupgrade.配置文件,指定新的Milvus映像版本。
执行升级命令:
kubectl patch -f milvusupgrade.
这种方法适用于快速升级,但会造成短暂的服务停机。
4、迁移元数据
自Milvus 2.2.0起,Milvus的元数据与早期版本不兼容。因此升级到v2.5.1之前需要进行元数据迁移。假设正在将Milvus从v2.1.4 升级到v2.5.1,以下是迁移的步骤。
(1)创建迁移配置文件
创建一个 . 配置文件,设置name、sourceVersion和targetVersion。例如以下配置将Milvus从v2.1.4升级到v2.5.1:
(2)应用新配置
运行以下命令应用新配置:
(3)检查迁移状态
执行以下命令检查迁移状态:
kubectl describe milvus release-name
如果输出中的状态为ready,则表示迁移成功。也可以使用以下命令检查所有pod状态是否为ready,以确保迁移过程无误:
kubectl get pod
(4)删除迁移文件
升级成功后,记得删除 文件中的my-release-upgrade,以清理不再需要的配置。
二、使用Milvus Operator升级Milvus Standalone
1、升级Milvus操作符
升级Milvus操作符与上文介绍的集群升级相同,执行以下命令:
将Milvus操作符升级到最新版本后,有以下选择:
(1)将Milvus从v2.2.3或更高版本升级到2.5.1,可以进行滚动升级。
(2)将Milvus从v2.2.3之前的次版本升级到2.5.1,建议你通过更改映像版本来升级Milvus。
(3)将Milvus从v2.1.x升级到2.5.1,需要在实际升级前迁移元数据。
2、进行滚动升级
自Milvus 2.2.3起,你可以将Milvus协调器配置为主动待机模式工作,并为它们启用滚动升级功能,这样Milvus就能在协调器升级期间响应传入的请求。在以前的版本中,升级时需要移除协调器,然后再创建协调器,这可能会导致服务出现一定的停机时间。
基于Kubernetes提供的滚动更新功能,Milvus操作符会根据部署的依赖关系强制执行有序更新。此外,Milvus还实施了一种机制,确保其组件在升级期间与依赖于它们的组件保持兼容,从而大大减少了潜在的服务停机时间。
滚动升级功能默认为禁用。你需要通过配置文件明确启用它。
在上述配置文件中,将spec.components.enableRollingUpdate设置为true ,将spec.components.image设置为所需的Milvus版本。
默认情况下,Milvus会以有序的方式对协调器进行滚动升级,即逐个替换协调器pod映像。要缩短升级时间,可以考虑将spec.components.imageUpdateMode设置为all ,这样Milvus就会同时替换所有pod映像。
可以将spec.components.imageUpdateMode设置为rollingDowngrade ,让Milvus用较低的版本替换协调器pod映像。
然后将配置保存为YAML文件(例如milvusupgrade.yml ),并将此配置文件修补到Milvus实例中,如下所示:
kubectl patch -f milvusupgrade.yml
3、通过更改映像升级Milvus
在正常情况下,可以通过更改映像将你的Milvus升级到最新版本。但要注意的是,用这种方法升级Milvus时会有一定的停机时间。
编写如下配置文件,并将其保存为milvusupgrade.yaml:
然后运行以下命令执行升级:
kubectl patch -f milvusupgrade.yaml
4、迁移元数据
自Milvus 2.2.0起,元数据与以前版本的元数据不兼容。以下示例片段假定从Milvus 2.1.4升级到Milvus v2.5.1。
(1)创建用于元数据迁移的.yaml 文件
创建元数据迁移文件。下面是一个示例。需要在配置文件中指定name 、sourceVersion和targetVersion 。下面的示例将name设置为my-release-upgrade ,将sourceVersion设置为v2.1.4 ,将targetVersion 设置为v2.5.1 。Milvus实例将从v2.1.4升级到 v2.5.1。
(2)应用新配置
运行以下命令应用新配置。
(3)检查元数据迁移状态
运行以下命令检查元数据迁移的状态。
kubectl describe milvus release-name
输出中的状态为ready意味着元数据迁移成功。或者也可以运行kubectl get pod检查所有pod。如果所有pod都是ready ,则元数据迁移成功。
(4)删除my-release-upgrade
升级成功后需要删除YAML文件中的my-release-upgrade 。















