将原虚拟机部署的企业综合管理系统整体迁移至阿里云 ACK,完成微服务容器化改造与全链路运维体系建设,解决发版慢、扩容难、多环境配置不一致的核心痛点。
客户企业的综合管理系统涵盖统一认证、用户权限、组织架构、业务审批、报表统计、定时任务等模块,采用微服务架构,支撑多个部门日常办公。系统原基于虚拟机部署,存在三个核心问题:发版慢、扩容难、多环境配置不一致。本项目主导将系统迁移至阿里云 ACK,完成容器化改造与运维体系建设。
将原虚拟机上的 Spring Cloud 微服务逐个容器化:编写多阶段 Dockerfile 减小镜像体积,对接 Nacos 注册中心实现服务发现,配置中心实现配置外置。迁移后服务可弹性扩缩、快速回滚。
为每个微服务编写 Helm Chart,通过 values 文件分环境覆盖(dev/test/staging/prod),实现「同一份 Chart、多套环境」。镜像 tag 与配置解耦,发布只需切换 values。
Prometheus 采集各微服务 JVM 指标(堆内存、GC、线程)、接口响应耗时、Nacos 注册状态;Grafana 出大盘;ELK 统一日志检索。制定分级告警规则,缩短故障发现时间。
Harbor + Trivy 做镜像漏洞扫描,强化镜像准入(高危漏洞阻断推送);Ansible Playbook 统一管理多环境基础配置,缩短新环境上线时间。
配置 HPA 基于 CPU/内存自动扩缩容;结合业务峰谷做定时扩缩容(上班前扩、夜间缩);优化 resources requests/limits 提升资源利用率,降低 ACK 月均费用。
不做停机全切,而是新旧并行、逐个微服务迁移。ACK 上的新实例和虚拟机上的旧实例同时注册到同一个注册中心,靠注册中心做服务发现,流量逐步从旧实例切到新实例。每个服务迁完验证稳定,再迁下一个,任何一步出问题都能立刻切回旧实例。
核心靠 Nacos 注册中心。新旧实例注册到同一个 Nacos,消费方通过 Nacos 做服务发现和负载均衡,自然把流量分摊到新旧实例。下线旧实例就是从 Nacos 注销,流量平滑转移,不用改任何调用方代码。
用 DTS 全量+增量同步保证数据一致,切换放在业务低峰期,切换前反复校验两边数据。保留旧库一段时间作为兜底,确认稳定后再下线。最忌讳的是没有增量同步就直接切,会丢迁移期间产生的数据。
虚拟机时代配置经常硬编码或散在各机器的配置文件里。迁移时统一收口到 Nacos 配置中心和 Helm values,按环境隔离。这一步顺带解决了原来"多环境配置不一致"的老问题。
每一步都留退路:旧实例在确认新实例稳定前不删、旧库切换后保留只读一段时间、镜像版本可追溯。任何阶段出问题都能切回上一个稳定状态,这是敢在生产做迁移的底气。
按先定位根因再解决的思路,从外到内逐层看:
kubectl get pod 看是 Pending / CrashLoopBackOff / ImagePullBackOff,不同状态指向不同问题。kubectl describe pod 看 Events,调度失败/拉镜像失败/探针失败一目了然。kubectl logs(崩溃看 --previous)定位应用层报错。核心是新旧并行、逐个服务灰度迁移,不做停机全切: