跳到主要内容
版本:v3.0.x

使用 Helm Chart 升级 Milvus 集群

本指南介绍如何使用 Helm 将你的 Milvus 2.6.x 集群升级到 v3.0.0。

该流程已在使用 Milvus Helm Chart 5.0.22 将 Milvus 2.6.20 升级到 Milvus v3.0.0 的场景中验证。如果你使用其他 Milvus 2.6.x patch release 或 Helm Chart 版本,请先在非生产环境中验证升级流程。

前提条件

  • Helm 3.14.0 或更高版本
  • 一个由 Helm 管理的现有 Milvus 2.6.x 部署
  • 现有部署使用的 Helm values
  • 当前 Milvus metadata 和持久化数据的备份

Message Queue 限制:升级到 Milvus v3.0.0 时,你必须保持当前的 message queue 选择。升级期间不支持在不同的 message queue 系统之间切换。未来版本将支持变更 message queue 系统。

请勿在此过程中更改或降级 Helm Chart。保留你的 Helm release 已安装的 Chart 版本。经过测试的基线保留 Helm Chart 5.0.22,仅将 Milvus image tag 更改为 v3.0.0

本流程未验证通过将 Milvus image 切回 2.6.x 来进行 downgrade 或 rollback。v3.0.0 写入数据后,仅回滚 image 可能无法读取更新后的状态。如果升级失败,请停止写入,并使用恢复计划还原升级前的 metadata 和持久化数据备份。请先在非生产环境中验证恢复计划。

升级流程

经验证,使用 Helm Chart 5.0.22 创建的 Milvus 2.6.20 部署采用 MixCoord 和 StreamingNode,且未运行 IndexNode。如果你的部署使用相同的拓扑,则无需单独执行 coordinator-migration 步骤。

Step 1: Confirm the current topology

保存当前 release 的完整 values,并检查正在运行的 Pods:

Shell
helm get values <release-name> \
--namespace <namespace> \
--all > milvus-values-before-upgrade.yaml

kubectl get pods --namespace <namespace>

确认集群使用 MixCoord 和 StreamingNode,且没有正在运行的 IndexNode Pod。本指南后续的升级命令会保留现有 Helm values。如果你当前的 values 启用了 IndexNode,或使用其他组件拓扑,请不要执行这种仅升级镜像的升级方式。请先在非生产环境中复现该拓扑,并获取经工程团队批准的迁移方案。

Step 2: 更新 Helm repository

添加或更新 Milvus Helm repository:

Shell
helm repo add zilliztech https://zilliztech.github.io/milvus-helm --force-update
helm repo update zilliztech

位于 https://milvus-io.github.io/milvus-helm/ 的 Milvus Helm Chart repo 已归档。对于 4.0.31 及以上版本的 chart,请使用新的 repo:https://zilliztech.github.io/milvus-helm/

步骤 3:升级 Milvus

检查 Helm release 已安装的 Chart 版本:

Shell
helm list --namespace <namespace>

CHART 列中,移除值中的 milvus- 前缀,并将剩余版本作为 <current-chart-version>。然后运行升级命令:

Shell
helm upgrade <release-name> zilliztech/milvus \
--namespace <namespace> \
--version <current-chart-version> \
--set image.all.tag="v3.0.0" \
--reset-then-reuse-values \
--wait \
--timeout 30m

--reset-then-reuse-values 选项会保留上一 release 的 values,同时基于所选 Chart 默认值应用显式的镜像覆盖。

验证升级

检查 Helm revision、Pod 状态和 container image:

Shell
helm history <release-name> --namespace <namespace>

kubectl get pods --namespace <namespace>

kubectl get pods --namespace <namespace> \
-o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{range .spec.containers[*]}{.image}{" "}{end}{"\n"}{end}'

验证所有必需的 workload 均已 ready,所有 Milvus 组件都使用 v3.0.0,并且现有 Collection 仍可查询和搜索。在启用任何 v3.0.0 特定功能之前,请先完成这些检查。

升级到 Milvus 3.0 不会启用 Storage V3。验证升级后,请先查看 Storage V3,再启用依赖 Storage V3 的功能。一旦 Milvus 写入 Storage V3 数据,就不支持降级到无法读取 Storage V3 的旧版 Milvus。