云端迁移:备份中心助力企业跨云迁移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搭建和管理企业级网站应用
相关文章
|
19天前
|
运维 Kubernetes Shell
【赵渝强老师】K8s中Pod的临时容器
Pod 是 Kubernetes 中的基本调度单位,由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。临时容器用于故障排查和性能诊断,不适用于构建应用程序。当 Pod 中的容器异常退出或容器镜像不包含调试工具时,临时容器非常有用。文中通过示例展示了如何使用 `kubectl debug` 命令创建临时容器进行调试。
|
19天前
|
Kubernetes 调度 容器
【赵渝强老师】K8s中Pod中的业务容器
Pod 是 Kubernetes 中的基本调度单元,由一个或多个容器组成。除了业务容器,Pod 还包括基础容器、初始化容器和临时容器。本文通过示例介绍如何创建包含业务容器的 Pod,并提供了一个视频讲解。示例中创建了一个名为 "busybox-container" 的业务容器,并使用 `kubectl create -f firstpod.yaml` 命令部署 Pod。
|
19天前
|
Kubernetes 容器 Perl
【赵渝强老师】K8s中Pod中的初始化容器
Kubernetes的Pod包含业务容器、基础容器、初始化容器和临时容器。初始化容器在业务容器前运行,用于执行必要的初始化任务。本文介绍了初始化容器的作用、配置方法及优势,并提供了一个示例。
|
3月前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
3年前的云栖大会,我们发布分布式云容器平台ACK One,随着3年的发展,很高兴看到ACK One在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下ACK One 3年来的发展演进,以及如何帮助客户解决分布式领域多云多集群管理的挑战。
阿里云容器服务 ACK One 分布式云容器企业落地实践
|
2月前
|
Kubernetes Docker 容器
容器运行时Containerd k8s
容器运行时Containerd k8s
41 3
|
3月前
|
人工智能 Prometheus 监控
使用 NVIDIA NIM 在阿里云容器服务(ACK)中加速 LLM 推理
本文介绍了在阿里云容器服务 ACK 上部署 NVIDIA NIM,结合云原生 AI 套件和 KServe 快速构建高性能模型推理服务的方法。通过阿里云 Prometheus 和 Grafana 实现实时监控,并基于排队请求数配置弹性扩缩容策略,提升服务稳定性和效率。文章提供了详细的部署步骤和示例,帮助读者快速搭建和优化模型推理服务。
184 7
使用 NVIDIA NIM 在阿里云容器服务(ACK)中加速 LLM 推理
|
3月前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
针对软件供应链的攻击事件在以每年三位数的速度激增,其中三方或开源软件已经成为攻击者关注的重要目标,其攻击方式和技术也在不断演进。通过供应链的传播,一个底层软件包的漏洞的影响范围可以波及世界。企业亟需更加标准和完善的供应链风险洞察和防护机制。本文将结合最佳实践的形式,面向容器应用完整的生命周期展示如何基于容器服务ACK/ACR/ASM助力企业构建云原生软件供应链安全。
|
3月前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
3月前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
阿里云ACK容器服务生产级可观测体系建设实践
|
2月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--k8s集群使用容器镜像仓库Harbor
本文介绍了在CentOS 7.9环境下部署Harbor容器镜像仓库,并将其集成到Kubernetes集群的过程。环境中包含一台Master节点和两台Node节点,均已部署好K8s集群。首先详细讲述了在Harbor节点上安装Docker和docker-compose,接着通过下载Harbor离线安装包并配置相关参数完成Harbor的部署。随后介绍了如何通过secret和serviceaccount两种方式让Kubernetes集群使用Harbor作为镜像仓库,包括创建secret、配置节点、上传镜像以及创建Pod等步骤。最后验证了Pod能否成功从Harbor拉取镜像运行。
125 0