云端迁移:备份中心助力企业跨云迁移K8s容器服务平台

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文将简要介绍阿里云容器服务ACK的备份中心,并以某科技公司在其实际的迁移过程中遇到具体挑战为例,阐述如何有效地利用备份中心来助力企业的容器服务平台迁移项目。

【阅读原文】戳:云端迁移:备份中心助力企业跨云迁移K8s容器服务平台

企业跨云(或从云下数据中心上云)迁移容器服务平台时,面临的挑战是多方面的。这包括但不限于数据安全、服务中断风险、平台兼容性、迁移复杂度等。对于拥有复杂微服务架构和大量数据的应用系统来说,容器服务平台的迁移需要繁重复杂的操作,一个不慎就可能导致业务中断或是数据丢失。

 

本文将简要介绍阿里云容器服务ACK的备份中心,并以某科技公司在其实际的迁移过程中遇到具体挑战为例,阐述如何有效地利用备份中心来助力企业的容器服务平台迁移项目。

 

 

 

 

ACK备份中心简介

 

 

 

针对K8s集群中运行的业务,ACK推出备份中心一站式容器化业务灾备及迁移方案。

 

备份中心概述:

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/backup-center-overview?spm=a2c4g.11186623.0.i5

 

对于灾备场景:集群的运维人员可以在控制台一键为业务创建周期性的备份计划或单次的应用备份。与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)驱动差异。此外,为了最小化迁移对业务的影响,利用增量备份能力,提前在业务低峰进行数据备份且备份期间不影响正常运行的应用,降低实际切换时的停机时间。




我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微信微博知乎

获取关于我们的更多信息~

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
24天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
78 2
|
1月前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
26天前
|
存储 Kubernetes Docker
【赵渝强老师】Kubernetes中Pod的基础容器
Pod 是 Kubernetes 中的基本单位,代表集群上运行的一个进程。它由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。基础容器负责维护 Pod 的网络空间,对用户透明。文中附有图片和视频讲解,详细介绍了 Pod 的组成结构及其在网络配置中的作用。
【赵渝强老师】Kubernetes中Pod的基础容器
|
13天前
|
Kubernetes Cloud Native API
深入理解Kubernetes——容器编排的王者之道
深入理解Kubernetes——容器编排的王者之道
29 1
|
26天前
|
运维 Kubernetes Shell
【赵渝强老师】K8s中Pod的临时容器
Pod 是 Kubernetes 中的基本调度单位,由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。临时容器用于故障排查和性能诊断,不适用于构建应用程序。当 Pod 中的容器异常退出或容器镜像不包含调试工具时,临时容器非常有用。文中通过示例展示了如何使用 `kubectl debug` 命令创建临时容器进行调试。
|
26天前
|
Kubernetes 调度 容器
【赵渝强老师】K8s中Pod中的业务容器
Pod 是 Kubernetes 中的基本调度单元,由一个或多个容器组成。除了业务容器,Pod 还包括基础容器、初始化容器和临时容器。本文通过示例介绍如何创建包含业务容器的 Pod,并提供了一个视频讲解。示例中创建了一个名为 "busybox-container" 的业务容器,并使用 `kubectl create -f firstpod.yaml` 命令部署 Pod。
|
26天前
|
Kubernetes 容器 Perl
【赵渝强老师】K8s中Pod中的初始化容器
Kubernetes的Pod包含业务容器、基础容器、初始化容器和临时容器。初始化容器在业务容器前运行,用于执行必要的初始化任务。本文介绍了初始化容器的作用、配置方法及优势,并提供了一个示例。
|
1月前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
75 4
|
1月前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
63 3
|
26天前
|
Kubernetes 监控 Java
如何在Kubernetes中配置镜像和容器的定期垃圾回收
如何在Kubernetes中配置镜像和容器的定期垃圾回收