业务迁移实录:腾讯云 TKE 集群搭建与全量服务切换
说明:为保护业务信息,本文涉及的业务域名与业务名称均已脱敏。主业务域以
example.com代称(其下子业务以"业务A / 业务B / 业务C / 官网"代称),待下线旧域以example.net代称。集群、网络等基础设施参数均为通用技术信息,可直接参考。
背景
原业务运行在自建/旧 Kubernetes 集群上,随着业务增长与运维成本压力,决定将全部服务迁移至腾讯云 TKE 托管集群,并借此机会统一网关、存储与网络架构。整体迁移分为六个阶段:
- 新建云集群
- 网络打通(内网互通 + NAT 外网访问)
- 搭建基础服务(Higress 网关、CSI-NFS 存储)
- 迁移业务服务(中间件 / 前端 / 后端)
- 第三方对接调整(IP 白名单、通知 URL)
- 旧业务域下线并关闭旧集群
一、新建云集群
集群配置如下:
| 集群配置 | 值 |
|---|---|
| 集群名称 | guangzhou-1(命名规则:<地域>-<编号>) |
| Kubernetes 版本 | 1.32.2 |
| 集群规格 | L5 |
| 操作系统 | TencentOS Server 3.1 (TK4) |
网络配置:
| 网络配置 | 值 | 备注 |
|---|---|---|
| 集群 IP 类型 | IPv4 | |
| VPC 网络 | vpc-xxxxxxx(示例占位) | 沿用原 VPC,实现内网互通 |
| Kube-proxy 转发模式 | ipvs | 大规模 Service 下性能更好 |
| 容器网络插件 | VPC-CNI | Pod 直接使用 VPC 内网 IP |
| 容器子网 | 172.16.16.0/18 | 在 vpc-xxxxxxx 下新增子网 |
组件配置:
| 组件配置 | 值 | 备注 |
|---|---|---|
| 存储组件 | CFS | 仅 CFS 支持 NFS 存储,需先开通权限 |
| 监控组件 | monitoragent | Prometheus 有免费指标但较复杂,暂不启用 |
| 网络组件 | ip-masq-agent | 用于 Pod 访问外网时的 IP 伪装 |
选择 VPC-CNI + ipvs 的组合,是为后续 Pod 间流量可控、以及 NFS/网关等基础组件的高可用打底;容器子网单独规划
172.16.16.0/18,与 VPC 已有网段互不冲突。
二、网络打通与外网访问
集群沿用原 VPC,内网天然互通;集群内 Pod 访问公网(如调用第三方接口)则需要 NAT 网关。
- 新建传统型 NAT 网关(绑定公网 EIP);
- 新建路由表,目标网段
172.16.16.0/18,下一跳选择公网 NAT 网关; - 验证:从 Pod 内
curl外网地址,确认连通后再进入下一阶段。
三、搭建基础服务
3.1 Higress 网关
Higress 作为集群统一的南北向流量入口,基于 Istio 与 Envoy,兼容 Ingress / Gateway API:
helm repo add higress.io https://higress.cn/helm-charts
helm install higress -n higress-system higress.io/higress --create-namespace --render-subchart-notes
3.2 CSI-NFS 存储
CFS 提供 NFS 协议,需在集群中安装 CSI-NFS 驱动,将 CFS 挂载为 Kubernetes 存储类(StorageClass),供有状态应用(如定时任务日志、中间件数据目录)使用。具体安装步骤参考腾讯云官方文档:NFS 数据卷配置。
四、迁移业务服务
4.1 中间件(1 天)
- xxl-job:在新的 TKE 集群中重新部署工作负载(调度中心与执行器);
- Kafka:切换到轻量服务器自建实例,不随集群迁移。
4.2 前端应用(1 ~ 1.5 天)
前端迁移有两种方案,需结合实际取舍:
| 方案 | 优点 | 风险 / 成本 |
|---|---|---|
| 合并所有项目为一个应用 | 资源占用小 | 路由合并有失效风险(但与原实现一致) |
| 每个业务独立域名、独立部署 | 互不影响 | 占用小程序业务域名配额,资源占用多 |
最终各前端业务通过 EdgeOne 配置 301 重定向,收敛到主业务域下:
| 业务 | 重定向目标 | 备注 |
|---|---|---|
| 业务A(小程序) | 301 → service-a.example.com | 小程序需添加业务域名 |
| 业务B(小程序) | 301 → service-b.example.com | 小程序需添加业务域名 |
| 业务C(小程序) | 301 → service-c.example.com | 小程序需添加业务域名 |
| 官网 | 301 → www.example.com |
4.3 后端测试与预发布环境(0.5 天)
- 在新集群重新部署工作负载;
- 先切换测试 / 预发布环境验证,确认无误后再动正式环境。
4.4 后端正式环境、前端正式环境(1 天)
- 重新部署后端正式工作负载;
- 前端正式域名切换,各页面配置 301 重定向,平滑过渡。
4.5 数据清洗系统(1 小时)
- 重新部署工作负载,注意依赖的数据源与定时任务配置保持一致。
五、第三方对接调整(0.5 天)
- 通知 URL:原通知回调地址变更,采用 301 重定向兼容旧地址,避免第三方漏改导致回调失败;
- NAT 网关 IP 白名单:出口 IP 随 NAT 网关变化,需将新公网 IP 同步给第三方(如酒店渠道商)并更新白名单。
六、旧业务域下线,关闭旧集群(2 周)
*.example.net全部 301 重定向到*.example.com对应页面。由于没有通配符证书,每个子域名都需要单独配置重定向与证书;- 观察一段时间确认无异常流量后,关闭旧集群。
建议在重定向生效、旧集群流量归零、且监控无告警后再执行集群关闭,同时保留旧集群快照作为回退手段。
排期与总结
| 阶段 | 耗时 |
|---|---|
| 新建云集群 | 0.5 天 |
| 网络打通(NAT) | 1 天 |
| 基础服务(Higress、CSI-NFS) | 2 天 |
| 业务服务迁移 | 4.5 天 |
| 第三方对接调整 | 0.5 天 |
| 旧业务域下线、关闭旧集群 | 2 周 |
本次迁移的核心经验:
- 网络先行:VPC-CNI 直接沿用原 VPC,内网互通零成本;NAT 网关统一出口,便于白名单管理;
- 网关统一:Higress 作为唯一流量入口,迁移过程中可按域名 / 路由灰度切换,风险可控;
- 301 平滑过渡:无论前端、通知 URL 还是旧业务域,都用 301 重定向兜底,保证第三方与用户无感;
- 先验证后切换:测试 / 预发布环境先行,正式环境最后切换,必要时保留旧集群兜底回退。