使用 Helm 图表升级 Milvus 集群
本指南介绍了如何使用 Helm 将 Milvus 2.6.x 集群升级至 v3.0.2。
本流程已通过 Milvus 2.6.20 至 Milvus v3.0.2 的升级验证,所用 Helm Chart 版本为 5.0.22。如果您使用的是其他 Milvus 2.6.x 补丁版本或 Helm Chart 版本,请先在非生产环境中验证升级过程。
先决条件
- Helm 3.14.0 或更高版本
- 由 Helm 管理的现有 Milvus 2.6.x 部署
- 现有部署所使用的 Helm 配置值
- Milvus 元数据和持久化数据的最新备份
消息队列限制:升级至 Milvus v3.0.2 时,必须保留当前的消息队列选择。升级过程中不支持在不同的消息队列系统之间切换。未来版本将支持更改消息队列系统。
请勿在此过程中更改或降级 Helm Chart。请保留 Helm 发布中已安装的 Chart 版本。经过测试的基准方案保留了 Helm Chart 5.0.22,仅将 Milvus 镜像标签更改为v3.0.2 。
本操作流程未验证将 Milvus 镜像降级回 2.6.x 的操作。 在 v3.0.2 写入数据后,仅回滚镜像的操作可能无法读取更新后的状态。如果升级失败,请停止写入操作,并采用恢复方案来还原升级前的元数据和持久化数据备份。请先在非生产环境中验证该恢复方案。
升级流程
使用 Helm Chart 5.0.22 创建的经过验证的 Milvus 2.6.20 部署采用了 MixCoord 和 StreamingNode,且未运行 IndexNode。如果您的部署使用相同的拓扑结构,则无需执行单独的协调器迁移步骤。
步骤 1:确认当前拓扑
保存当前发布版本的完整参数,并检查正在运行的 Pod:
helm get values <release-name> \
--namespace <namespace> \
--all > milvus-values-before-upgrade.yaml
kubectl get pods --namespace <namespace>
确认集群使用 MixCoord 和 StreamingNode,且没有 IndexNode Pod 在运行。本指南后文中的升级命令会保留现有的 Helm 配置值。如果您的当前配置启用了 IndexNode 或采用了其他组件拓扑,请勿执行此“仅镜像”升级。 请先在非生产环境中重现该拓扑,并获取经工程团队批准的迁移方案。
步骤 2:更新 Helm 仓库
添加或更新 Milvus Helm 仓库:
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 Charts 存储库已归档。请使用新存储库https://zilliztech.github.io/milvus-helm/ 获取 4.0.31 及更高版本的图表。
步骤 3:升级 Milvus
检查 Helm 发布中已安装的图表版本:
helm list --namespace <namespace>
在“CHART ”列中,从值中移除“milvus- ”前缀,并将剩余的版本号格式化为“<current-chart-version> ”。然后运行升级命令:
helm upgrade <release-name> zilliztech/milvus \
--namespace <namespace> \
--version <current-chart-version> \
--set image.all.tag="v3.0.2" \
--reset-then-reuse-values \
--wait \
--timeout 30m
--reset-then-reuse-values 选项在应用显式镜像覆盖以替代所选Chart默认值的同时,会保留上一版本的值。
验证升级
检查 Helm 修订版本、Pod 状态和容器镜像:
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}'
请确认所有必需的工作负载均已就绪,所有 Milvus 组件均使用v3.0.2 ,且现有 Collection 仍可进行查询和搜索。在启用任何 v3.0.2 专属功能之前,请完成这些检查。
升级至 Milvus 3.0 不会启用 Storage V3。在验证升级成功后,请先了解Storage V3,再启用依赖于它的功能。一旦 Milvus 写入了 Storage V3 数据,将无法降级到无法读取 Storage V3 的旧版 Milvus。