使用 Milvus Operator 升级 Milvus Standalone
本指南介绍了如何使用 Milvus Operator 将 Milvus 2.6.x Standalone 部署升级至 v3.0.3。
该流程已在 Milvus 2.6.20 至 Milvus v3.0.3 的环境中经过验证,测试环境包含 Milvus Operator 1.3.0、Woodpecker、集群内 etcd 以及集群内 MinIO。 如果您使用的是其他 Milvus 2.6.x 补丁版本、Milvus Operator 版本、消息队列或依赖项配置,请先在非生产环境中验证升级是否成功。
先决条件
- 一个由 Milvus Operator 管理的、包含 Milvus 2.6.x Standalone 部署的 Kubernetes 集群
kubectl可访问该集群- 用于现有部署的完整 Milvus 自定义资源 (CR) 清单
- 现有 Milvus Operator 所使用的安装方法和清单
- Milvus 元数据和持久化数据的最新备份
消息队列限制:升级至 Milvus v3.0.3 时,必须保留当前的消息队列选择。升级过程中不支持在不同的消息队列系统之间切换。未来版本将支持更改消息队列系统。
本操作流程不支持通过将 Milvus 镜像降级回 2.6.x 版本来执行降级或回滚。 在 v3.0.3 写入数据后,仅恢复镜像的回滚操作可能无法读取更新后的状态。如果升级失败,请停止写入操作,并使用恢复计划来还原升级前的元数据和持久化数据备份。请先在非生产环境中验证该恢复计划。
升级流程
步骤 1:备份当前的 Milvus CR
在更改部署之前,请保存当前的 CR:
kubectl get milvus <instance-name> \
--namespace <namespace> \
--output yaml > milvus-before-upgrade.yaml
请将现有部署的源清单用作升级清单。切勿在未先移除服务器管理的元数据和状态字段的情况下,直接应用导出的备份文件。
步骤 2:确认 Milvus Operator 版本
检查已安装的 Milvus Operator 所使用的镜像:
kubectl get deployments --all-namespaces \
-o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{range .spec.template.spec.containers[*]}{.image}{" "}{end}{"\n"}{end}' \
| grep milvus-operator
经过验证的升级方案将 Milvus Operator 版本保持为 1.3.0。除非您的支持政策要求单独升级 Operator,否则请保留当前管理您的 Milvus 2.6.x 部署的 Operator 版本。 请勿将较新版本的 Operator 降级至已测试版本。若需更改 Operator 版本,请使用与现有安装相同的 Helm 或kubectl 安装方法,并采用相同的发布名称和命名空间,然后在更新 Milvus CR 之前验证 Operator 变更。
步骤 3:更新 Milvus 镜像
在完整的 Milvus CR 清单中,仅修改spec.components.image 字段。保留现有的模式、组件设置、消息队列、etcd、存储及其他依赖项设置。以下摘录显示了需要修改的字段;请勿用此摘录替换您的完整 CR。
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: <instance-name>
namespace: <namespace>
spec:
components:
image: milvusdb/milvus:v3.0.3
应用完整的 CR 清单:
kubectl apply --filename milvus.yaml
验证升级
检查 CR 状态、Pod 状态和容器镜像:
kubectl get milvus <instance-name> \
--namespace <namespace> \
--output jsonpath='{.status.status}{"\t"}{.status.currentImage}{"\n"}'
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 CR 报告的镜像为Healthy ,当前镜像为milvusdb/milvus:v3.0.3 ,且现有 Collections 仍可查询和搜索。在启用任何 v3.0.3 专属功能之前,请完成这些检查。