GigaOm的K8s数据保护报告是一个系列,用于帮助用户评估和挑选最适合自己的K8s数据保护解决方案。整个系列包括关键能力报告、雷达图和厂商档案三个部分。我们这次来解读第一篇,K8s数据保护关键能力报告。
背景
首先分析师总结了K8s备份和虚机备份在技术上的差别,以及这些差别为何导致传统的备份方案和流程无法服务于K8s应用。备份K8s应用的难点并非在于容器的虚拟化技术上,而是在于应用可以以微服务的方式在K8s集群中进行部署。一个应用可能由多个Pod组成,每个Pod都可以自行扩展。对于有状态应用而言,Pod运行时的状态和其它Pod的关联都需要被备份下来。Pod本身在K8s里可能会被很快的创建和销毁,因此跟踪Pod的状态需要高度的自动化处理,而非手工干预。与虚机和传统架构相比,K8s应用的高可用需要在应用层来处理和解决,而非在基础设施层面进行。
即使在K8s中,数据保护的目标也从来没有变过,就是在某个特定的时间点保留一份一致的应用和数据副本,需要时,在可用的资源上可以将应用和数据正确的恢复回来。设计K8s的数据保护要注意下述几个方面:
- 一定要有应用的视角,包括去理解整个应用的备份规划、恢复点目标(RPO)和恢复时间目标(RTO),而不光是关注Pod和容器。
- K8s中基于微服务的应用会充满变化,备份的时候必须要同时考虑到应用的当前状态和预期的状态,这里和K8s的整合非常关键,需要从K8s中可以拿到相关的信息并监控应用的状态。
- 目前CSI的接口尚不成熟,无法提供对存储资源和服务的完整管理能力,所以厂商需要自己来补足这一块儿以提供完整的备份能力。
传统的备份方案无法响应和处理K8s应用的快速变化,所以我们在K8s上需要一个全新的解决方案。同时,在K8s上基于备份的数据保护方案可以用来构建多种其它场景解决方案,包括多云管理、应用迁移、异地容灾等。
K8s数据保护关键能力
关于K8s数据保护的关键能力,分析师根据对当前市面上的产品调研分为了三类:
- 必备能力: 已经被广泛实现、相对比较成熟的能力,对于区分不同产品的TCO和ROI作用不大。
- 关键差异化能力: 是用户来决定某个产品或方案对于自己组织的基础架构、流程和业务的潜在价值的关键区分点。
- 前瞻性能力: 在未来12到18个月内会有比较大的潜力和影响力的技术,但当前还不够成熟。
当然,这些能力的类别会随着整个业界的技术发展和成熟会逐渐变化,例如一些前瞻性能力变得成熟,进入关键差异化能力的范畴,而原来的关键差异化能力也会因为更多厂商可以提供变成必备能力。
K8s数据保护的必备能力包含下面几个部分:
- 原生的Kubernetes集成
传统的数据保护方案不适用于快速变化的K8s应用。例如,在容器或者Pod里安装备份客户端是不可行的,在worker节点上进行备份也会有问题,在公有云环境中,用户甚至无法访问到worker节点。因此,K8s的数据保护方案必须在k8s控制平面层来工作,通过operator或者CRD的方式来访问资源或获取信息,这也同时会简化K8s数据保护方案在公有云上的部署。
- 按需的软件消费模型
过去传统的企业级软件往往采用终身授权+服务合同的方式来交付,但现在,用户越来越倾向于基于自己的实际需求来采购软件。另外,如果在公有云上提供数据保护服务,数据网络流量和云存储是需要按需计算成本的。
- 声明式API和自动化
今天,自动化对于所有的IT决策都很重要,在K8s环境中尤其如此。从底层技术上而言,K8s数据备份和传统的备份没有太大区别,都需要调度器、备份前后的环境交互脚本,以及监控和报告的工具,但K8s是一个高度自动化的系统,针对K8s的备份方案也需要能提供高度的自动化。同时,基本上每个针对K8s的解决方案都是以API为中心的,一个好的API设计使得备份方案与其它基础设施、外部的监控工具和数据可视化工具的集成变得简单。
- 和CSI接口的集成
虽然目前CSI还是一个很新的标准,也不是很成熟,但是它已经成为K8s存储领域事实上的标准,几乎所有的存储厂商都在支持CSI。CSI使得备份容灾过程与存储系统的集成变得简单。
- 基础安全特性
数据保护方案必须采用更高的安全标准,支持包括数据在存储和传输过程中的加密,多租户、针对管理员的RBAC设置等等的基础安全特性。
K8s数据保护的关键差异化能力包含下面几个部分:
- 多云支持
容器和K8s最引人注目的地方就是应用的可移植性。除了容器和K8s平台本身提供的抽象外,CNCF的K8s认证也使得多数K8s商业发行版和云服务跟社区版本基本保持一致。尽管如此,K8s数据保护的厂商仍然应该考虑K8s版本的差异并支持尽可能多的K8s发行版本,因为不是每个云厂商都能跟社区的版本发行保持一致。同时,各个云厂商为了和自己的云服务(如身份验证)集成,在控制平面上也会有差别。K8s数据保护的厂商应该也要支持尽可能多的云厂商。所以那些拥有比较大的合作伙伴网络和比较多的认证的数据保护厂商会更有优势。
- 环境感知
K8s的数据保护应该关注在应用上,把它当成一个整体来处理而不是备份一个个容器。但是,在一些情况下,如果可以感知环境(数据库、存储系统)并提供优化的方案,往往可以取得更快更可靠的效果。传统的备份方案已经证明这样的整合非常有效,这点在K8s有状态应用的保护上依然适用。
- 数据库
和数据库或公有云的数据库服务集成可以简化备份流程,同时在大规模部署时依然保持数据一致性。根据数据库服务的不同,这种集成还有可能加速备份和恢复的流程,实现更好的RPO,让数据迁移和数据副本管理变得简单。
- 存储系统集成
和存储系统的深入集成可以避开目前CSI的一些限制,更好的利用存储系统的特性来加快备份和恢复的过程,并减少资源消耗和对系统的影响。
- 容灾
目前,CSI还没有提供向远程复制数据、应用或者K8s对象的能力。但K8s的备份方案往往已经保存了这些内容,使得基于备份方案来实现K8s容灾变得简单。目前K8s容灾的实现有两种方式:一种是通过将定期的备份或者快照发送至远端,然后在远端持续进行数据的恢复;另一种方式就是通过存储的异步复制能力将数据持续复制到远端。后一种明显需要更高的带宽和更高的成本,但能取得更好的RPO。
- 应用和数据迁移
上述的同样的机制也可以用来实现K8s的应用和数据迁移。K8s应用迁移的常见场景包括创建新的开发测试环境、迁移至不同的K8s平台或者不同的K8s版本、在不影响生产环境的前提下创建出一个全新的环境进行合规审查等。迁移和容灾的区别是是否能有效的管理failover和failback,一般的迁移工具并不提供完善的failover和failback的能力。
- 系统管理
企业级的备份平台必须实现一定的能力来简化大型环境中的系统管理,其中有很多必须考虑和K8s系统的集成:
- K8s已经提供了完整的RBAC机制,所以数据保护方案最好的办法就是利用K8s的RBAC机制来控制系统资源的访问,降低风险。
- 和传统方案不同,K8s是一个高度自助的系统。开发人员对于基础设施有更多的控制权,他们可以自行来创建应用和数据的副本,而无需系统管理员的参与。
- Prometheus已经成为K8s的监控和报警的事实标准,所以数据保护方案和Prometheus的集成可以简化管理员对于整个K8s的监控。
K8s数据保护的前瞻性能力包含下面几个部分:
- 高级数据管理
K8s数据管理和保护方案在快速发展,并且通过和数据越来越多的关联变得更加强大。有些厂商已经在实现跨数据库平台迁移数据的能力,例如将数据和配置从一个基于MYSQL的云托管数据库服务迁移至一个安装在K8s之内的MYSQL数据库上。这样的方案将赋予用户更多的自主性,可以基于自身成本和性能的诉求在不同的云环境中实现高度的可移植性。同时,随着数据感知能力的增强,更多的功能例如数据屏蔽、数据分类和合规将会被不断开发出来。
- 高级安全特性
尽管多数市面上的产品都已经实现了基础的安全特性,例如加密和RBAC等。但是我们必须看到诸如勒索病毒之类的网络攻击正越来越频繁的发生。所以基于K8s的数据保护方案,也会像传统方案一样需要去实现物理隔离、异常行为检测和基于AI的攻击检测等高级安全特性。只是,由于K8s和容器的高度可变性,某些特性如异常行为检测等会变得更加困难。
K8s数据保护的非功能性需求
上述不同的特性和能力会从不同角度上影响整个用户方案的非功能特性,包括灵活性、可扩展性、性能、易用性、总拥有成本和投资回报率,用户在评估不同的产品和方案时也需要从自身的非功能性需求上进行考察。
- 灵活性
环境感知能力和多云的支持会是提升灵活性的最重要的功能。对于用户而言,灵活性就是能够支持尽可能多的的云环境,无论公有云或私有云。此外,对于多个K8s发行版的支持也很重要,让用户的IT部门能够有更多的自主权。
- 可扩展性
为了保护能扩展到上千台服务器的K8s集群上的工作负载,数据保护方案本身自己也必须能进行横向扩展。同时,因为CSI接口尚不成熟,好的数据保护方案需要能对接更多的存储系统。
- 性能
在云原生这样一个数据可能持续扩张的架构中,性能也是需要重点考察的特性。诸如压缩和去重这样的能力不光是提升了存储的效率,也会在远程备份的情况下减少需要网络传输的数据量。
- 易用性
对开发人员而言,API接口是K8s最通用和可扩展的接口。不过对于新手而言,图形界面会比命令行和API要直观的多,从而可以大幅提高易用性。此外,K8s的数据保护方案需要能够以云原生的方式被部署、配置、扩展。
- 总拥有成本(TCO)和投资回报率(ROI)
拥有小的总拥有成本和高的投资回报率是客户一直的追求,而基本上几乎所有的特性都跟这两个指标有关。能按需扩展和支持多数的公有云基础设施是最主要的方面;此外,当环境比较复杂时(例如同时涉及开发、运维、管理人员时),易用性对这两个指标就尤为重要。同时,对于大的企业而言,和基础设施的集成、环境感知和高级数据管理功能可能会对TCO和ROI有更大的影响,因为这些公司对安全、合规和开发流程都有比较高的要求。
小结
在企业生产环境中部署的有状态应用已经在快速增长,这里面除了全新开发的云原生应用外,也有大量对于传统架构上的应用的持续改造。总而言之,针对K8s上有状态应用的保护是件复杂的事情,需要考虑从应用到基础设施的端到端的情况,因此需要用专门的方案。同时,用户也期待着这样的方案里不光只是提供数据保护,而是能扩展至数据重用的场景。
行业里针对这样的需求已经有不少初创的公司提供解决方案,一部分公司是从K8s存储方案扩展至数据保护领域,也有公司是一开始就专注于数据保护。他们各有优势和弱点,但都在蓬勃发展,不断为广大云原生用户提供创新的价值。