查看原文
其他

国内外云厂商容器服务备份恢复方案调研

啊北 云原生实验室 2022-11-27


本文转自掘金,原文:https://juejin.cn/post/7153562201859719204,版权归原作者所有。欢迎投稿,投稿请添加微信好友:cloud-native-yang

因为业务需求,需要针对自建的集群进行备份和恢复,所以针对国内外友商的容器服务备份恢复方案做了一个简单的调研分析。

阿里云 ACK 备份恢复应用

简介

阿里云容器服务 ACK 提供了针对应用的备份,恢复与迁移的一站式解决方案,能够实现有状态应用的崩溃一致性备份、有状态应用一致性备份及跨可用区、跨地域的备份和恢复。

  • 崩溃一致性备份:不保证应用缓存和操作系统缓存完全备份在存储介质中。

  • 应用一致性备份:保证应用缓存及操作系统缓存备份在存储介质。

ACK 备份中心的使用场景有:

  • ACK 集群内持久化应用容灾和同地域集群间迁移
  • 混合云容灾和应用迁移
  • 公共云跨地域集群之间的容灾

ACK 服务备份恢复步骤

创建备份仓库

ACK 目前提供的备份服务是使用阿里云的 OSS 存储来进行数据备份,每个集群需要指定一次备份仓库。

创建备份任务

创建备份任务时需要指定下列参数:

参数描述
名称设置备份任务的名称,必填项。
备份仓库选择需要关联的备份仓库,必填项。
备份命名空间支持选中一个或者多个备份命名空间。表示备份选中的一个或多个命名空间中的应用,必填项。
指定标签备份填写需要备份的应用标签,以指定备份带有该标签的应用。
排除命名空间支持选中一个或者多个排查命名空间。表示备份时排除选中的命名空间中的应用。
指定资源支持填写多个资源对象名称,多个资源对象名称以英文逗号(,)间隔,例如 deploy, configmap 等。指定资源后可以只备份特定资源。
排除资源支持填写多个资源对象名称,多个资源对象名称以英文逗号(,)间隔,例如 pod, secret 等。表示排除备份选中的资源对象应用。
备份存储卷设置是否开启备份存储卷以及存储应用中的数据。当选中备份存储卷时,默认为您进行数据备份。如果存储卷是云盘,则通过快照进行备份;如果存储卷不是云盘,则会通过HBR[1]方式进行备份。
备份有效期设置备份任务的数据存储有效期,过期之后数据将无法恢复。
备份类型选择立即备份或定时备份。当设置为定时备份时,需要配置备份周期。支持 Crontab 表达式设置定时备份。关于如何使用 Crontab 表达式,请参见how-use-cron-linux[2]

为文件系统类型的数据卷制作快照

若创建备份任务时已选中备份存储卷且存储类型使用了非云盘类型,即使用混合云备份服务 HBR(Hybrid Backup Recovery)进行文件备份。根据恢复需求,可在恢复集群中选择制作云盘快照或文件系统 CNFS 快照。

恢复应用和数据卷

执行恢复应用时,需要配置以下参数:

配置项说明
名称恢复任务名称,仅支持小写字母和数字。
备份仓库选择备份文件所在的仓库。
选择备份选择备份文件。
重定义命名空间若需要修改备份数据的命名空间,请单击添加,选择备份数据所属的命名空间,在冒号后设置恢复后数据所属的命名空间。

优势

  1. 覆盖场景广,包含同一集群内数据备份恢复,混合云之间的数据备份恢复与迁移以及跨地域的数据备份恢复。
  2. 备份颗粒度细腻,能够通过资源对象名称,命名空间和有效期等条件筛选出需要备份的指定资源,避免造成资源的浪费。
  3. 支持备份存储卷,针对不同的存储卷,可支持云盘类型存储(通过快照备份)和文件系统类型(通过 HBR 来备份)。

不足

目前 ACK 的备份仓库仅支持阿里云自身的 OSS 存储,不支持其它厂商的对象存储,且目前删除备份数据库只能通过 OpenAPI 平台删除,无法在前端页面通过白屏化的操作删除。

腾讯云 TKE 备份恢复方案

简介

腾讯云容器服务 TKE 并未提供专门的备份恢复工具,而是使用腾讯云对象存储 COS 搭配开源备份恢复工具 Velero 来实现集群资源备份和还原。

TKE 服务备份恢复步骤

  1. 在需要被迁移的集群和目标集群上都安装 Velero 实例,并且两个集群的 Velero 实例指向相同的腾讯云 对象存储 COS[3] 位置
  2. 使用 Velero 在需要被迁移的集群执行备份操作,生成备份数据存储到对象存储 COS。
  3. 在目标集群上使用 Velero 执行数据的还原操作实现迁移。

优势

备份恢复方案的选型搭配自由及多样化,用户可根据实际场景与业务需求,自由选择对象存储以及备份工具,自主完成备份恢复。

不足

  1. 没有白屏化操作,全程需要用户手动实现集群资源的备份与恢复,用户操作难度高且不友好。
  2. 备份恢复由用户自身选择开源工具,无法保证资源备份和恢复的质量与数量,存在数据无法恢复的风险。
  3. 自建或其他云平台的集群资源迁移到 TKE 时,需要考虑和解决因跨平台导致集群环境差异问题,为此需要通过 Velero 提供的众多实用备份和还原策略帮助解决问题。

华为云 CBR 备份恢复方案

简介

华为云提供专门的云备份产品 CBR 用于云内的弹性云服务器(Elastic Cloud Server,ECS)、云耀云服务器(Hyper  Elastic Cloud Server,HECS)、裸金属服务器(Bare Metal  Server,BMS)(下文统称为服务器)、云硬盘(Elastic Volume Service,EVS)、SFS  Turbo 文件系统、云下 VMware 虚拟化环境和本地文件目录,提供简单易用的备份服务,当发生病毒入侵、人为误删除、软硬件故障等事件时,可将数据恢复到任意备份点。

CBR 服务备份恢复步骤

云备份 CBR 针对不同的场景,不同的数据提供不同的备份策略和恢复策略。

  1. 备份

备份即一个备份对象执行一次备份任务产生的备份数据,包括备份对象恢复所需要的全部数据。云备份产生的备份可以分为几种类型:

  • 云硬盘备份:云硬盘备份提供对云硬盘的基于快照技术的数据保护。
  • 云服务器备份:云服务器备份提供对弹性云服务器和裸金属服务器的基于多云硬盘一致性快照技术的数据保护。同时,未部署数据库等应用的服务器产生的备份为服务器备份,部署数据库等应用的服务器产生的备份为数据库服务器备份。
  • SFS Turbo 备份:SFS Turbo 备份提供对 SFS Turbo 文件系统的数据保护。
  • 混合云备份:混合云备份提供对线下备份存储 OceanStor Dorado 阵列中的备份数据以及 VMware 服务器备份的数据保护。
  • 文件备份:文件备份提供对云上服务器或用户数据中心虚拟机中的单个或多个文件的数据保护,无需再以整机或整盘的形式进行备份。
  1. 存储库

云备份使用存储库来存放备份。创建备份前,需要先创建至少一个存储库,并将服务器或磁盘绑定至存储库。服务器或磁盘产生的备份则会存放至绑定的存储库中。

存储库分为备份存储库和复制存储库两种。备份存储库用于存放备份对象产生的备份,复制存储库用于存放复制操作产生的备份。

不同类型的备份对象产生的备份需要存放在不同类型的存储库中。

  1. 策略

策略分为备份策略和复制策略。

  • 备份策略:需要对备份对象执行自动备份操作时,可以设置备份策略。通过在策略中设置备份任务执行的时间、周期以及备份数据的保留规则,将备份存储库绑定到备份策略,可以为存储库执行自动备份。
  • 复制策略:需要对备份或存储库执行自动复制操作时,可以设置复制策略。通过在策略中设置复制任务执行的时间、周期以及备份数据的保留规则,将备份存储库绑定到复制策略,可以为存储库执行自动复制。复制产生的备份需要存放在复制存储库中。

优势

华为云的备份产品 CBR 提供了较为全面的备份恢复方案,不仅仅针对容器服务,同时也针对云服务器,云硬盘等。同时,针对不同的数据类型以及不同的业务场景,提供了不同的备份策略以及存储库选择,保障了用户数据的安全性和正确性,确保业务安全。

不足

华为云 CBR 暂不支持批量恢复数据操作。

Google Backup for GKE

简介

Backup for GKE 是一项用于在 GKE 中备份和恢复工作负载的服务。它有两个组成部分:

  • 用作服务控制平面的 Google Cloud API[4]
  • GKE 插件(Backup for GKE 代理),您必须在每个要对其执行备份和恢复操作的集群中启用它。

启用后,Backup for GKE 服务会与 GKE 界面、Google Cloud CLI 和 REST API 集成,从而为开发和运维提供一致的工作流。备份会捕获两种形式的数据:

  • 配置备份:从正在备份的集群 API 服务器中提取的一组 kubernetes 资源说明,用于捕获集群状态。
  • 卷备份:一组与配置备份中找到的 PersistentVolumeClaim 资源相对应的卷备份。

Backup for GKE 包含两个主要组件:

  • 在 Google Cloud 中运行的一项服务,支持基于资源的 REST API。此服务充当 Backup for GKE 的控制平面。该服务包含与此 API 交互的 Google Cloud Console 界面元素。
  • 在执行备份或恢复的每个集群中运行的代理。代理与 Backup for GKE API 进行交互,从而在这些集群中运行备份和恢复操作。

Backup for GKE 备份恢复步骤

  1. 定义自定义备份和恢复逻辑

管理员可以创建 ProtectedApplication 资源来自定义各个有状态应用的备份和恢复。ProtectedApplication 资源定义了哪些 kubernetes 资源属于应用实例。ProtectedApplications 是一个可选配置步骤,可将其他备份和恢复逻辑应用于该应用。如果没有为备份定义 ProtectedApplications,请考虑以下含义:

  • 要定义备份和恢复范围,最精细的选项是命名空间。
  • 备份期间会进行卷备份,而不会尝试使用这些卷让工作负载处于静默状态。

只有使用 Deployment 或 StatefulSet 部署的应用才能使用 ProtectedApplication 资源。此外,在定义 ProtectedApplication 资源时,有三种备份和恢复策略可供使用:

  • 全部备份和全部恢复
  • 备份一个和全部恢复
  • 转储和加载
  1. 规划一组备份方案

备份方案为一系列备份提供配置、位置和管理功能。备份方案包含备份配置,此配置涉及源集群、选择要备份的工作负载以及存储此方案下生成的备份工件的区域。

用户可以为每个集群创建一个或多个备份方案。有两个主要原因导致用户可能需要为集群使用多个备份方案:

  • 用户希望将备份工件存储在多个区域中。在这种情况下,请为每个要存储备份的区域创建一个备份计划。
  • 用户希望对集群的备份进行分区,例如:
    • 用户可能希望制作分散在一天时间中的多个较小备份,而不是在一天中的一个时间点制作非常大的备份。
    • 用户希望更频繁地备份集群的某些部分,其余部分则不(例如,每天备份某一些命名空间,每小时备份其他命名空间)。

建议每个集群至少有一个备份方案。

  1. 备份工作负载

备份会捕获两种形式的数据:

  • 配置备份:从正在备份的集群的 API 服务器中提取的一组 kubernetes 资源说明。
  • 卷备份:一组与配置备份中找到的 PersistentVolumeClaim 资源相对应的卷。

如果用户的备份方案定义了备份的时间表,则系统会自动根据该时间表创建备份。此外,用户也可以手动创建备份。

  1. 规划一组恢复方案

恢复方案是为相应备份预配置的恢复场景。恢复方案可以向管理员申请分配使用这些配置的权限。发生突发事件时,用户可以快速且独立地恢复备份。例如,已部署应用中的软件更新可能会使永久性数据损坏,从而将应用命名空间置于无效状态,这需要恢复。

在恢复期间,用户还可以选择应用替换规则,用于匹配一组资源并针对新值替换这些资源上属性的当前值。

  1. 恢复备份

创建备份后,管理员可以为该备份创建恢复方案,以便开始将备份的部分内容恢复到目标集群(可能与最初从中创建备份的集群不同)。

恢复备份后,系统会在目标集群中重新创建 kubernetes 资源。创建资源后,工作负载功能的实际恢复需要遵循常规集群协调过程(例如,Pod 会被安排到节点,然后在这些节点上启动)。

优势

  1. Backup for GKE 支持自定义备份方案与自定义恢复方案,适用于多种业务场景。
  2. Backup for GKE 提供了自定义资源 ProtectedApplication 进行数据的备份与恢复,屏蔽了底层的备份与恢复细节,用户无须感知具体的备份与恢复逻辑,降低了二次开发的难度。
  3. Back for GKE 同时支持白屏化操作与命令行操作,白屏化操作降低了运维人员的操作难度,而命令行操作更有利于研发人员进行研发操作。

不足

  1. Backup for GKE 是以插件形式向 GKE 集群提供备份恢复服务,需要预先安装,而不是集成在 GKE 中的。
  2. Backup for GKE 目前只支持备份 kubernetes 资源和底层永久性卷,不支持备份 GKE 集群的配置信息和资源引用的容器镜像。

总结

NameAdvantageDisadvantage
ACK1.  覆盖场景广,包含同一集群内数据备份恢复,混合云之间的数据备份恢复与迁移以及跨地域的数据备份恢复。
2.   备份颗粒度细腻,能够通过资源对象名称,命名空间和有效期等条件筛选出需要备份的指定资源,避免造成资源的浪费。
3.   支持备份存储卷,针对不同的存储卷,可支持云盘类型存储(通过快照备份)和文件系统类型(通过 HBR 来备份)。
目前 ACK 的备份仓库仅支持阿里云自身的 OSS 存储,不支持其它厂商的对象存储,且目前删除备份数据库只能通过 OpenAPI 平台删除,无法在前端页面通过白屏化的操作删除。
TKE备份恢复方案的选型搭配自由及多样化,用户可根据实际场景与业务需求,自由选择对象存储以及备份工具,自主完成备份恢复。1.  没有白屏化操作,全程需要用户手动实现集群资源的备份与恢复,用户操作难度高且不友好。
2.   备份恢复由用户自身选择开源工具,无法保证资源备份和恢复的质量与数量,存在数据无法恢复的风险。
3.   自建或其他云平台的集群资源迁移到 TKE 时,需要考虑和解决因跨平台导致集群环境差异问题,为此需要通过 Velero 提供的众多实用备份和还原策略帮助解决问题。
CBR华为云的备份产品 CBR 提供了较为全面的备份恢复方案,不仅仅针对容器服务,同时也针对云服务器,云硬盘等。同时,针对不同的数据类型以及不同的业务场景,提供了不同的备份策略以及存储库选择,保障了用户数据的安全性和正确性,确保业务安全。华为云 CBR 暂不支持批量恢复数据操作。
Backup for GKE1.  Backup for GKE 支持自定义备份方案与自定义恢复方案,适用于多种业务场景。
2.  Backup for  GKE 提供了自定义资源 ProtectedApplication 来进行数据的备份与恢复,屏蔽了底层的备份与恢复细节,用户无须感知具体的备份与恢复逻辑,降低了二次开发的难度。
3.  Back for GKE 同时支持白屏化操作与命令行操作,白屏化操作降低了运维人员的操作难度,而命令行操作更有利于研发人员进行研发操作。
1.  Backup for GKE 是以插件形式向 GKE 集群提供备份恢复服务,需要预先安装,而不是集成在 GKE 中的。
2.  Backup for  GKE 目前只支持备份 kubernetes 资源和底层永久性卷,不支持备份 GKE 集群的配置信息和资源引用的容器镜像。

以上就是本次国内外云厂商容器服务备份恢复方案调研的全部内容了。本来想多调研一些厂商的,比如说青云,七牛云以及亚马逊等,但是时间仓促,就只调研了以上四家厂商。

参考文档

  • 备份和恢复应用-备份-恢复-快照-容器服务 ACK-阿里云[5]
  • 使用对象存储 COS 作为 Velero 存储实现集群资源备份和还原- TKE-腾讯云[6]
  • 什么是云备份 _ 云备份 CBR_ 产品介绍 _ 华为云[7]
  • Backup for GKE 概览[8]

引用链接

[1]

HBR: https://link.juejin.cn?target=https%3A%2F%2Fhelp.aliyun.com%2Fdocument_detail%2F62362.htm%23concept-62362-zh

[2]

how-use-cron-linux: https://link.juejin.cn?target=https%3A%2F%2Fopensource.com%2Farticle%2F17%2F11%2Fhow-use-cron-linux

[3]

对象存储 COS: https://link.juejin.cn?target=https%3A%2F%2Fcloud.tencent.com%2Fdocument%2Fproduct%2F436

[4]

Google Cloud API: https://link.juejin.cn?target=https%3A%2F%2Fcloud.google.com%2Fapis%2Fdocs%2Foverview%3Fhl%3Dzh-cn

[5]

备份和恢复应用-备份-恢复-快照-容器服务 ACK-阿里云: https://link.juejin.cn?target=https%3A%2F%2Fhelp.aliyun.com%2Fdocument_detail%2F188780.html

[6]

使用对象存储 COS 作为 Velero 存储实现集群资源备份和还原- TKE-腾讯云: https://link.juejin.cn?target=https%3A%2F%2Fcloud.tencent.com%2Fdocument%2Fproduct%2F457%2F50122

[7]

什么是云备份 _ 云备份 CBR_ 产品介绍 _ 华为云: https://link.juejin.cn?target=https%3A%2F%2Fsupport.huaweicloud.com%2Fproductdesc-cbr%2Fcbr_01_0002.html

[8]

Backup for GKE 概览: https://link.juejin.cn?target=https%3A%2F%2Fcloud.google.com%2Fkubernetes-engine%2Fdocs%2Fadd-on%2Fbackup-for-gke%2Fconcepts%2Fbackup-for-gke%3Fhl%3Dzh-cn




你可能还喜欢

点击下方图片即可阅读

全球顶级开源公司是如何找到前 1000 名社区用户的?

2022-10-13

使用 Docker Client 和 Go SDK 为容器分配 GPU 资源

2022-10-12

使用 Golang 玩转 Bridge 与 NetNamespace 互联

2022-10-10

使用 Grafana Mimir 实现云原生监控报警可视化

2022-10-09


云原生是一种信仰 🤘



点击 "阅读原文" 获取更好的阅读体验!


发现朋友圈变“安静”了吗?

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存