将应用迁移到 VMware vSphere Kubernetes Service (VKS) 这样的现代化平台,从来都不是一项“一刀切”的工作。无论你是从通用的 Kubernetes 提供商(如 OpenShift、EKS 或 GKE)迁移、从虚拟机迁移,还是将云服务遣返至本地,你所选择的策略都很大程度上取决于你当前的自动化成熟度和工作负载需求。
在本文中,我们将探讨两种主要的迁移模式:重新平台化(即“平移”,Lift and Shift)与重新部署(流水线驱动)。以下指南可以帮助你为你的组织选择正确的路径。
策略一:“平移”(重新平台化)
适用场景:几乎没有或完全没有自动化与部署流水线的组织
如果你的团队仍在使用手动部署应用,或者缺乏成熟的 GitOps 实践,最可行的路径通常是使用 Velero 等工具采用“备份与恢复”的方法。
工作原理
备份源状态:Velero 会查询源端的 Kubernetes API,抓取所有对象(如 Deployments、Secrets、ConfigMaps、Services 等),并将它们打包存入兼容 S3 的存储桶中。
恢复到 VKS:在目标 VKS 集群上安装 Velero,并从该备份中进行恢复。由于 VKS 100% 符合 CNCF 标准,它会将这些 API 详细信息完美重放到新集群中。
注意事项
有选择性地备份:你不能简单粗暴地备份所有内容。必须避开系统命名空间(如 kube-system),并使用标签(labels)和选择器(selectors)仅针对特定的应用工作负载进行备份。
手动清理:这本质上是一种 1:1 的状态复制。如果目标环境需要不同的配置(例如,不同的负载均衡器 IP 或存储类 StorageClass),你多半需要在恢复后进行一些手动修改。
技术债务:虽然这种方法能把应用跑起来,但它实际上只是将“技术债务”从一个集群搬到了另一个集群。一旦完成平移,运行中的配置立即成为“单一事实来源(Source of Truth)”,这极有可能会偏离你原有的任何源代码。
策略二:“流水线重定向”(重新部署)
适用场景:已具备 CI/CD 流水线(如 Jenkins、Flux、ArgoCD、Harness 等)的组织
如果你已经将配置存储在 Git 中,并通过流水线进行部署,请不要使用 Velero 进行应用迁移。这样做会破坏 Git 仓库与运行中集群之间的关联。相反,你应该将 VKS 仅仅视为另一个标准的 Kubernetes 端点。
工作原理
重定向流水线:只需将现有的部署流水线目标指向新的 VKS API 端点即可。
验证配置:检查你的 Git 仓库,看看是否存在已弃用的 API,或者新的 VKS 环境中可能不存在的自定义资源定义(CRD)(例如,特定的 Ingress 控制器或安全工具)。
部署:触发流水线,在 VKS 上部署一个全新的应用实例。
“VCF 原生”的演进之路
这次迁移也是使你的基础设施运维走向成熟的绝佳时机。与其仅仅是搬运应用,不如借此机会采用以下 VCF 原则:
自助服务租户:使用 VCF 自动化能力(通过 Terraform)来创建项目(Projects)和租户(Tenants),允许平台团队自助服务并管理他们自己的 VKS 集群。
拥抱 GitOps:将基础设施工具(如 Ingress、Cert Manager)的控制权,交由新 VKS 集群内的 ArgoCD 或 Flux 来管理。
有状态应用的困境:处理持久化数据
迁移无状态应用相对容易。但对于使用持久卷声明(PVC)的有状态应用(如数据库、消息队列)来说,挑战则大得多。
你不能简单地将磁盘对象从一个集群“移动”到另一个集群,因为 PVC 是死死绑定在源基础设施中特定的卷 ID(Volume ID)和 CSI 驱动程序上的。
解决方案
对于外部存储(NFS/对象存储):这非常简单。只需将新的应用实例指向现有的 NFS 共享或对象存储地址即可。
对于块存储(CSI):你必须使用像 Velero 这样支持 CSI 快照的备份工具。它不仅备份配置,还会备份数据本身(磁盘快照)。在恢复期间,Velero 会触发并在 VKS 上创建新磁盘,然后使用快照数据将其实例化恢复(Rehydration)。
最佳实践:隔离有状态工作负载。将有状态应用与无状态应用混跑在同一个集群中,会使集群的生命周期管理变得极其困难。在条件允许的情况下,请为有状态工作负载分配专用的集群。
应对“跨大版本跳跃”(集群升级)
上述的迁移策略同样适用于集群升级。如果你正在运行较老版本的 Kubernetes(例如 v1.30)并且需要跨越到现代版本(例如 v1.35),逐个版本进行原地顺序升级不仅痛苦,而且极其耗时。
如果你拥有成熟的部署流水线,并且 VKS 基础设施在设计时就预留了充足的网络和备用容量支持,那么采用“蓝绿(Blue/Green)”重新部署策略往往是更优解:
构建新集群:直接在目标版本(v1.35)上部署一个全新的 VKS 集群。
部署应用:让流水线将所有应用部署到这个新集群中。
切换流量:更改 DNS 或负载均衡配置,将流量指向新集群。
这种方法速度更快、环境更干净,并且彻底避免了在生产环境的活动集群上进行多步骤顺序升级所带来的巨大风险。
结语
虽然 VKS 提供了强大的底层基础设施,但具体的迁移路径是由你的应用架构和运维成熟度来决定的。
自动化程度低? 使用 Velero 进行平移(Lift and shift)。
自动化程度高? 重定向你的 CI/CD 流水线。
有状态应用? 围绕 CSI 快照进行严谨规划。
只要理解并合理运用这些模式,你就能将一项令人望而生畏的迁移任务,转化为一次结构化且完全可控的技术转型。
如果你希望充分发挥 VCF 上的 Kubernetes 优势,并希望借助我们专业服务团队的丰富经验与专业知识,请联系VMware by Broadcom 销售团队。我们非常期待与你深入探讨你环境中的具体技术需求,以及我们的团队如何为您保驾护航。
原文:
https://blogs.vmware.com/cloud-foundation/2026/02/25/mastering-application-migration-to-vks-patterns-and-best-practices/




