Kubernetes 跨云重建执行手册
重建集群,迁移工作负载,不复制托管控制面
ACK、CCE、TKE 的控制面、网络、负载均衡、存储和身份集成不同。推荐在目标云创建新集群,通过 IaC/GitOps 重新部署,再单独迁移镜像、持久卷和外部数据库。
- 阿里云 ACK、华为云 CCE、腾讯云 TKE 之间的工作负载迁移
- 双集群并行、分批引流和可回滚切换
- 使用 Helm、Kustomize、GitOps、OpenTofu、Skopeo/Crane 与 Velero 的组合迁移
本手册不迁移源云托管控制面,也不保证源云 CSI 快照能够直接在另一家云恢复。
- 盘点 Kubernetes 版本、API 版本、CRD、Operator、准入控制器和集群级插件
- 盘点节点架构、GPU、内核、运行时、污点、标签、亲和性和容量
- 扫描 YAML/Helm 中的云厂商注解、LoadBalancer、Ingress、StorageClass 和 CSI 驱动
- 盘点镜像仓库、私有镜像拉取身份、多架构 Manifest 和不可变 Digest
- 盘点 PVC、卷模式、快照、备份、外部数据库、缓存、消息队列和对象存储
- 盘点 Secret 来源、KMS、工作负载身份、证书、DNS、WAF、CDN 和出口白名单
- 定义服务级切流单位、会话处理、健康门槛和源集群保留期限
| 层次 | 迁移方式 | 不应直接复制的内容 |
|---|---|---|
集群与节点 | 在目标云用 IaC/控制台重建 | 控制面、节点实例、源云自动伸缩组 |
工作负载 | GitOps/Helm/Kustomize 重新部署 | 源云默认注解、已废弃 API、运行状态字段 |
镜像 | Skopeo/Crane 复制并锁定 Digest | 只改仓库域名而不校验多架构镜像 |
持久卷 | 应用备份、文件系统备份、CSI/Velero 支持路径 | 假设跨云快照可直接恢复 |
外部数据 | 使用数据库/对象存储专用手册 | 把托管服务当成集群资源 |
入口与身份 | 目标端重建,再分批切流 | LoadBalancer、IAM 和 KMS 的源云对象 |
Velero 可备份和恢复 Kubernetes API 资源并辅助处理卷,但官方迁移文档明确指出,跨云厂商的持久卷快照不是原生通用迁移路径。
- 用独立目标集群和最小权限身份创建网络、集群、节点、负载均衡与存储。
- Secret 从密钥系统重新注入,不从
kubectl get secret -o yaml导出明文进入 Git 或工单。 - 镜像复制账号只授予源仓库读取和目标仓库指定命名空间写入权限。
- Velero/备份工具使用独立对象存储位置和受限身份,目标集群读取备份时优先只读。
- 切换完成后撤销临时跨云凭据、旧集群工作负载身份和过宽安全组。
- 选择一个包含 Deployment、Service、Ingress、ConfigMap、Secret 引用和 PVC 的非核心服务。
- 在目标集群用版本库重新部署,不复制运行状态与源云自动生成字段。
- 复制镜像并核对 Digest、架构、签名和漏洞扫描结果。
- 迁移一份可丢弃数据,验证 PVC、权限、挂载、性能和恢复步骤。
- 验证 Service、Ingress、证书、DNS、源 IP、会话、伸缩、日志、指标和告警。
- 引入少量测试或真实影子流量,记录延迟、错误、资源水位和回切耗时。
- 用 IaC 重建 VPC、子网、集群、节点池、存储类、镜像仓库和基础插件。
- 通过 GitOps/Helm/Kustomize 分批部署无状态工作负载,先不接生产入口。
- 复制镜像并把部署引用固定到目标仓库 Digest,避免切换时从源云拉取。
- 对 PVC 按应用一致性要求使用数据库备份、文件备份或 Velero/CSI 适配路径。
- 外部数据库、缓存和对象存储分别按专用手册迁移,不由 Velero 代替。
声明式资源以版本库为准,源目标集群使用相同发布提交但通过环境覆盖处理差异。持久数据的增量方式取决于应用:数据库使用日志复制,对象存储使用增量复制,文件卷使用经过验证的文件级同步或应用复制。
割接前冻结集群级变更、CRD 升级和会改变数据格式的发布。若两个集群同时承接写流量,必须证明应用支持多活或双写冲突处理;否则只允许单写。
- 目标 Kubernetes/API 版本与所有 CRD、Operator、Webhook 兼容
- Deployment/StatefulSet 就绪、副本、PDB、伸缩和调度符合设计
- 镜像 Digest、CPU 架构、签名、镜像拉取与私有仓库权限正确
- PVC 容量、文件/数据校验、性能、备份和恢复结果合格
- Service、Ingress、证书、会话、源 IP、出入口白名单和健康检查正确
- 日志、指标、追踪、告警、审计、网络策略和运行手册已经生效
不要用 Pod 数量相同代替业务验收。执行接口、交易、异步任务和故障恢复测试,并保存证据。
- 确认目标集群容量、数据增量、入口、监控与回滚均通过门禁。
- 停止源集群会产生冲突写入的任务,完成最终数据追平。
- 通过负载均衡权重、DNS 或服务级路由逐步引入流量。
- 每批观察错误率、P95/P99、Pod 重启、节点压力、队列和业务指标。
- 全量切换后保持源集群工作负载缩容或只读,不立即删除集群与备份。
无状态服务可以把流量权重切回源集群;有状态服务必须先停止目标写入并按其数据手册处理差异。回滚时不得让两个集群同时消费同一非幂等队列或执行同一批定时任务。
提前保留源集群镜像、配置、凭据、入口与足够容量,并验证源集群在缩容后能够恢复。目标端产生的订单、上传对象或数据库写入必须有反向同步或业务补偿路径。
- 双集群、双节点池、双负载均衡、双日志与监控的并行费用
- 镜像和备份对象跨云出流量、存储与请求费用
- VPN/专线、NAT、跨云数据库和持久卷增量同步费用
- 试迁、压测、预留容量和源集群回滚容量
不要在稳定观察期前缩减源集群到无法回滚的容量;这部分并行成本属于迁移风险预算。
核验日期:2026-07-14。正式任务前重新核对 Kubernetes/Velero 版本、API、CSI、云插件、备份位置和镜像工具。本手册未声称已对所有云与存储组合做实际迁移测试。
Built with