Kasten k10 实战系列 06 - Kasten K10 应用备份与恢复


Userlevel 1
Badge

1. 前言

为了发展有新的商业模式,企业都纷纷开始部署云原生的应用。在云原生的世界里,我们面临着不断实施和部署新应用的需要,以及吸引新的客户。 但与以往不同的是 Kubernetes 上需要采用云原生方式来进行软件的开发、部署与运维,这时陈旧的运维技术与工具是否能否经受住新模式的考验呢? 对企业的 CIO 来说,将关键应用转移到Kubernetes 的最大挑战之一就是在 Kubenetes 上的灾难与恢复能力。在这章中,我们将讨论何在 K10 策略设定中使用灾备的概念来保护 K8S 上的应用程序。

文章目录

  1. 前言
  2. Kasten 解决了客户的什么问题?
  3. 云原生应用的备份

    • 3.1 数据管理的逻辑
    • 3.2 备份的对象及分类
  4. 备份存储库的准备

    • 4.1 创建标准存储库
    • 4.2 启用不可变存储库
  5. 云原生应用的发现
  6. 云原生应用的备份与还原

    • 6.1 周期性的快照
    • 6.2 将快照导出为备份
    • 6.3 应用的选择与排除
    • 6.4 备份策略的使用
    • 6.5 备份结果查看
    • 6.6 应用的还原
  7. 结论
  8. 参考链接

Kasten 实战系列导航

2. Kasten 解决了客户的什么问题?

基于 Kubernetes 底层原生开发的 Kasten K10,在 K8S 中表现为一个独立名空间的应用,与 K8S 平台非常契合。需要使用灾备 的应用,在 K8S Cluster 层部署应用,即可以完成无代理应用感知的备份。Kasten K10 解决了云原生 Kubernetes 应用企业级容灾的 5 个关键问题

  • 原生的架构适配 自动发现集群上运行的所有应用程序组件与相关配置,保证应用一致性与完整性
  • 出色的恢复能力 还原应用程序及其相关组件到所需位置,可自由定义还原的粒度与时间点。
  • 灵活的可移动性 在多个云原生云平台之间,自由的进行,应用程序备份,容灾与迁移。
  • 合规的勒索防护 利用存储对象锁的存储库,保证数据不被篡改,轻松达成合规性要求。
  • 一切为运营服务 为运营团队提供所需的工作流,满足合规性和监视要求,操作自服务与 Restful API。
  • 完美的安全管控 支持以RBAC的方式进行权限管理,无论在传输还是存储过程中将数据端到端加密。

3. 云原生应用的备份

3.1 数据管理的逻辑

数据管理的重要因素与
虽然在 K8S 的应用程序与原始的应用部署的方式有所不同,但保护应用的理念是一致的。就像小学生作文一样:什么类型的数据或应用?从哪里来?何时发起备份?以何种方式完成备份?备份到哪里去?保留的周期是多久?使用 Kasten 保护应用程序,通常通过创建策略来完成,需要理解和使用三个概念:

范围选择:这不仅定义了哪些应用程序受策略保护,而且可以按需定义更细粒度的控制,包括备份与还原。
备份机制:根据您的环境和要求,您可以按需要定义数据捕获机制,也就是快照与备份的方式,注意,快照与备份是不同的。
作业调度:客户可以按需要,定义和快照与备份的频率,以及数据保留的目标的规范。

3.2 备份的对象及分类

与客户讨论时我们经常会被问到,我们备份了云原生的哪些数据 。在 K10 中,应用程序被定义为以下几项主要内容,即 Kubernetes 工作负载, 与命名空间相关的存储资源和持久化存储资源、与命名空间无关的资源。 举例说明,Kubernetes 工作负载(即Depolyment、StatefulSets、OpenShift DeploymentConfigs、和 Pod),与命名空间相关的资源,例如,ConfigMaps、Secrets 这类的存储对象和 PVC、PV 类的持久化资源。与命名空间无关的资源(例如,StorageClasses)。有关K8S 资源对象的分类推荐查看以下链接,以获得更多知识。

K8S资源对象分类
https://jimmysong.io/kubernetes-handbook/concepts/objects.html

4. 备份存储库的准备

和所有的备份任务在开始前的准备一样,我们需要先配置 K10 使用的存储库。K10 通常可以调用快照来保护应用,但对于执行真实备份、启用跨集群备份恢复与云迁移,容灾等场景,我们还需要一个存储库。 K10 支持对象存储或外部 NFS 文件存储或是 VBR Server 来做为存储库。这都是通过配置 Loction Profiles 来实现的。

4.1 创建标准存储库

利用这个特性我们可以直接使用腾讯云的 COS 服务来实现存储库的配置。我们可以能过设置 S3 Compatible 存储库的方式,将 腾讯云 COS 设置成为备份存储库,满足 3-2-1-1-0 的备份黄金法则。点击 Settings -> Locations -> New Profile 新建云存储链接

20210703040903

存储库连接建立好,如下图

20210703041124

4.2 启用不可变存储库

通过在 Kasten features 的页面来打开存储库不可变性的设置,格式如下:https://example.com/k10/#/features
我们在这里访问的路径为 http://139.155.64.86/k10/#/features
将 Ransomware Protection 设置为 On

20210704152546

同时,我们在创建 S3 存储桶时,也可启用对象锁
20210704151539

后续,我们要配置保留模式为『合规』,默认保留期限 最少为21天。

20210704153415

这样,我们就可以在 Kasten 中设置,并且测试这个不可变的存储库了。

20210704153516

经过不可变性的设置的存储库,会带有 Object Immutability enabled 的标签。
20210704153738

5. 云原生应用的发现

在 K10 中 应用为分成 Compliant 与 Non-compliant 与 Unmanaged 从而区分应用是否被保护,或是否达成保护的目标。

20210704113903

Compliant 是已经完成保护的应用,Non-Compliant 是定义了保护策略,但是没有达到保护的目标,而 Unmanaged 是未被保护的应用。这样当新的应用被部署时,我们可以在 K10 的界面中,轻松地发现的新应用从而保护它。下面,我们在 TKE 中部署一个新的应用,让 K10 来发现它。

从下图可以看到,目前除 default 之外,还有两个应用,minio 与 mysql。 minio 已经被保护而 mysql 没有被保护,
20210704114025

我们在集群中新建了应用 etcd

20210704114537

回到 k10 发现这个应用已经,Application 的视图中了

20210704114514

6 云原生应用的备份与还原

要保护应用程序,只需单击 Create a policy 您将进入数据保护策略创建部分。

20210704154713

6.1 周期性的快照

如上图,为了保护应用程序,我们首先要选择快照操作以及数据的备份范围。快照是 K10 中数据捕获的基础,通常应用于应用程序使用的磁盘卷 (PVC/PV) ,但也可以应用于应用程序级数据捕获(例如,使用 Kanister,在一下文章期中,Mars 将带来 Kanister 的说明。)运用快照操作进行数据捕获对应用的性能影响非常低、不需要停应用、可以快速创建恢复时间点,以实现增量数据捕获。以下是可选的周期性的设置。

当然如果你是第一次进行备份策略的设置,保持默认就好

20210704161607

6.2 将快照导出为备份

默认情况下,通过导出执行的备份将设置为将每个快照导出到备份中。但是,也可以选择一部分快照进行导出(例如,仅将每个每日快照转换为备份)。

值得注意的是,存储快照通常受到限制,例如,每个卷的最大快照数量限制相对较低。同时,快照并不总是持久的。如,灾难性的存储系统故障将破坏您的快照以及您的主要数据。此外,在许多存储系统中,快照的生命周期与源卷相关联。因此,如果该卷被删除,所有相关快照可能会同时自动进行回收。因此,强烈建议您同时创建应用程序快照的备份。

20210704155956

6.3 应用的选择与排除

我们可以通过两种模式,排除与选择应用名称与标签。

20210704162146

6.4 备份策略的使用

在策略创建完成后,我们会在策略管理中看到 一个新策略 『etc-backup』, 我们可以通过 Run Once 来试一下这个备份策略的能否正常运行。

20210704162737

6.5 备份结果查看

通过在 Dashboard 上查看备份结果, 我们可以看到,备份已经完成。并且也启用了 Kanister 应用感知。
20210704164337

6.6 应用的还原

还原应用时,首先要确认的还原点,在 Applications 中我们可以看到有 4 个还原点已经存在,点击 Restore
20210704165121
在这里我们选择,需要的还原点
20210704165341

还原到新建的命名空间
在还原的时候,我们可以选择还原到原来的名空间也可以还原到新建的命名空间

20210704165648

与备份时一样,在还原时的我们也可以按照场景定义自动化备份与还原动作

20210704170755

也可以只还原数据和

20210704171000

或是细粒度的选择备份的数据类型,进行还原

20210704171140

在这里我们保持默认,直接点击 『Restore』, 当还原完成,我们可以看到 etc-retstore 这个命名空间下的应用已经启动。

20210704171614

7. 结论

在云原生时代无论应用部署在哪里,客户的体验都是最终评从的标准。不论是物理的还是逻辑的,错误总是时常出现,服务中断还是会发生。我们无法阻止意外的发生,但我们可以应用一个简单、灵活可靠的云原生灾备解决方案,来保证我们的应用能够满足客户业务连续性的需要。我们后续还会推出关于应用感知的 Kanister 备份的方案与灾备方案,敬请期待!

8. 参考链接

K8S资源对象分类
https://jimmysong.io/kubernetes-handbook/concepts/objects.html

标签: none


0 comments

Be the first to comment!

Comment