【阅读原文】戳:云端迁移:备份中心助力企业跨云迁移K8s容器服务平台
企业跨云(或从云下数据中心上云)迁移容器服务平台时,面临的挑战是多方面的。这包括但不限于数据安全、服务中断风险、平台兼容性、迁移复杂度等。对于拥有复杂微服务架构和大量数据的应用系统来说,容器服务平台的迁移需要繁重复杂的操作,一个不慎就可能导致业务中断或是数据丢失。
本文将简要介绍阿里云容器服务ACK的备份中心,并以某科技公司在其实际的迁移过程中遇到具体挑战为例,阐述如何有效地利用备份中心来助力企业的容器服务平台迁移项目。
ACK备份中心简介
针对K8s集群中运行的业务,ACK推出备份中心一站式容器化业务灾备及迁移方案。
备份中心概述:
对于灾备场景:集群的运维人员可以在控制台一键为业务创建周期性的备份计划或单次的应用备份。与ETCD备份相比,备份中心支持命名空间、标签、资源类型等维度,选择需要备份的应用;对于有状态应用,支持同时备份业务挂载的存储卷数据。而对于有完善gitops流程的企业,也可以通过备份中心的数据保护功能做仅针对存储卷数据的灾备。
对于容器服务平台迁移场景:在混合云场景下,通过备份中心可轻松备份集群中选定的资源与存储卷数据至阿里云云端,并在目标ACK集群中恢复该备份,实现应用无缝迁移。备份中心提供了直观的用户界面,同时提升了可观测性,方便确认具体的资源备份清单,以及实时数据备份的具体进度。
具体来说,集群的运维人员可以通过以下简单流程,备份原平台中的业务并恢复至ACK:
• 创建ACK One注册集群,将需要迁移的其他云厂商或云下K8s集群接入到注册集群。
(若业务涉及的数据量较大,建议打通云企业网)
• 接入后的K8s集群享有ACK的大部分能力,在注册集群中部署备份中心组件。
• 在注册集群中备份需要迁移的业务至指定备份仓库,若业务为有状态应用,可同时备份存储卷内数据。
• 创建(或使用已有的)目标ACK集群并确保已有足够的计算资源,部署备份中心组件。
• 在目标ACK集群中初始化备份仓库,等待备份记录同步后,恢复业务。
ACK One注册集群概述:
https://help.aliyun.com/zh/ack/overview-9?spm=a2c4g.11186623.0.0.1c416218Ugyqe5
跨云迁移的具体挑战与备份中心解决方案
某科技公司需将一个提供对外服务的业务集群,以及一个内部使用的集群中的全部应用及挂载的存储卷数据均迁移至阿里云。下文将从业务涉及的集群资源与存储卷数据两部分分别阐述迁移碰到的难点,以及备份中心对应提供的解决方案。
- 集群资源的跨集群迁移 -
精细化备份策略需求
挑战:一方面,原K8s集群运行多年,部分资源无法明确用途或通过当前CI工具重新部署,迁移时需要保证这些资源得到全量恢复以确保业务的连续性。另一方面,由于部分自建数据库需迁移至阿里云的中间件,备份策略需要精细化调整,排除不需要的应用及相关数据,减少不必要的数据传输量、提升迁移效率。
解决方案:此需求可抽象为:在全量备份排除部分应用及对应存储卷数据,此外由于跨集群迁移是集群的系统组件及运行环境发生变化,同时还应排除kube-system等系统资源。可通过排除命名空间、通过注释声明无需备份的存储卷等功能反选备份内容实现。
类似地,只需要迁移部分应用及涉及资源时,也可以通过命名空间、打标等方式灵活筛选备份内容。备份中心支持自适应调整备份内容,如备份Ingress时自动备份IngressClass、备份CR时自动备份CRD。
完成备份后,可在控制台查询实际备份的所有集群资源与存储声明列表,确认无遗漏。
容器服务平台系统组件及底层云资源的兼容问题
挑战:不同云厂商提供的系统组件及对应的配置方式或多或少都有差异,这导致该企业无法简单地复制原有配置文件或直接利用现有的CI工具进行迁移,需要对相关资源进行适配。本案例中需要适配的内容有:
• 网络相关:云厂商提供的负载均衡服务存在差异,且要求用户使用指定的注释配置集群中的Service及Ingress资源,这些注释在跨云时需要重新配置。
• 存储相关:云厂商提供的存储介质虽然类似,但集群的CSI存储插件驱动不同,需要变更PVC、PV等资源配置。
• 镜像仓库地址:迁移业务至ACK之前,大部分企业会选择迁移镜像至阿里云容器镜像服务ACR中,Deployment、Statefulset、Job等应用资源的镜像相关字段都需要修改镜像仓库地址。
解决方案:备份中心支持恢复前的资源调整,对于简单调整可直接通过控制台选项实现,对于复杂调整可在恢复前通过ConfigMap配置灵活调整。对于以上提及的适配内容,可通过以下功能解决:
• 网络相关:支持通过Configmap覆盖注释,并默认自动保留端口。
• 存储相关:对主流云厂商,自动屏蔽CSI存储插件间实现的差异,自动转换为ACK CSI的默认存储类并生成新PVC、PV的资源描述文件(如YAML文件)。若有特殊的存储类转换需求,也可在控制台选择每个PVC恢复时使用的新存储类。
• 镜像仓库地址:通过填写映射,自动转换命中的镜像仓库地址。
低版本K8s集群业务向高版本迁移
挑战:该企业存在将旧版集群升级至新版本的需求,不同版本的集群在API资源定义和行为上可能存在不兼容的变更,迁移过程中需要对现有YAML文件进行调整,以确保它们在新版本集群中能够正常工作。
解决方案:备份中心支持1.16及以上的K8s集群资源无缝迁移至最新版本,无需任何额外的配置或操作。具体的实现方式为:
• 备份时,默认备份资源在集群中所有支持的apiVersion版本。如在1.16版本集群中备份Deployment时,将备份extensions/v1beta1、apps/v1beta1、apps/v1beta2以及apps/v1四个版本。
• 恢复时,资源将优先按照恢复集群版本推荐的apiVersion进行恢复。如在1.16版本集群备份的Deployment在1.31集群中将恢复为apps/v1版本,自动实现版本转换。
• 对于无兼容版本的资源,如1.16集群中的extensions.ingress资源,支持按K8s配置默认升级至最新版本,也支持跳过恢复由运维人员手动创建。
- 存储卷数据的跨云迁移 -
数据上云流程复杂
挑战:该企业需要将数据从原厂商云盘转移至到阿里云云盘,这个过程不仅技术上具有挑战性,多阶段的数据流转也大大增加了迁移的复杂度和操作的繁琐性,也可能导致更长的服务中断,从而影响客户体验和服务质量。
解决方案:在混合云场景中,备份时,备份中心底层使用阿里云云备份服务将存储卷中数据存放在云端。支持其他云厂商的块存储、对象存储和文件系统存储,也支持Ceph、nfs等主流自建存储。
恢复时,根据原存储的类型,自适应选择默认的ACK CSI存储类恢复至对应的阿里云云盘、OSS和NAS中,也支持以指定的存储类恢复,实现存储介质的转换。
为保证数据一致性备份停机时间长
挑战:由于存储数据的实时动态性,通常需要在迁移期间暂停服务以防止新的数据写入,避免迁移完成后出现数据丢失或不匹配的情况,这种停机操作对业务的连续性也构成挑战。
解决方案:云备份服务为增量备份,可提前在业务低峰时期对存储卷数据进行备份,大幅降低停机时的实际备份量;此外云备份服务在备份时还会对数据进行压缩、去重,有效提升备份的效率。
加密与安全传输
挑战:跨云迁移时需要考虑数据在迁移过程中的加密方案,保证敏感信息的数据安全。
解决方案:云备份服务通过数据本地加密,确保数据传输及在云端存储的安全性。此外还可为备份仓库管理的OSS Bucket开启服务端加密。
容器服务平台迁移总结
为确保应用迁移的完整性,备份覆盖CI集群与生产集群中所有CRD等资源,并按需求排除了需要切换至中间件的应用与存储卷数据。备份中心支持自动的API兼容与灵活的资源调整,帮助该企业轻松实现集群的合并和升级,规避了大量的资源冲突与调整。
备份中心的存储类转换功能实现跨云云盘数据的迁移,屏蔽了底层的数据类型转换与不同云服务商的底层存储接口(CSI)驱动差异。此外,为了最小化迁移对业务的影响,利用增量备份能力,提前在业务低峰进行数据备份且备份期间不影响正常运行的应用,降低实际切换时的停机时间。
我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。
获取关于我们的更多信息~