西瓜哥:第二存储新风口:Kubernetes/CSI容器应用备份

2020中国数据与存储峰会第二存储与数据管理论坛上,高端存储知识CHO(首席忽悠官)西瓜哥作为特邀论坛出品人发表首场演讲,介绍第二存储发展新方向——容器市场,还有众多容器数据保护公司容器方案详细说明,并给选择备份厂商的企业提供建议。

以下为速记整理(文字未经演讲人审阅):

目前大家都知道容器越来越热门,很多大型企业尤其是制造业和金融行业关注最多,已经向容器领域发展了。容器原来是物理记忆现在是虚拟化,毫无疑问马上会成为一个新的虚拟化场景,最后进入到无服务器计算,我觉得在企业里面比较少,公有云比较多一些。

据Gartner统计,虚拟机已经在企业里大量采用,容器是下一个计算虚拟化的热点,因为容器会比较敏捷一些,有22%的企业主要考虑用容器而不是虚拟机,27%的全球组织已经将容器用于生产,容器跑生产要解决一个问题,数据持久性问题。

如果有数据,要解决数据的存储和备份问题,今天主要讲备份的问题。容器怎么备份,首先看容器生态,Kubernetes已经成为容器编排的事实标准。存储也是一样的,原来开发很多私有接口,但是现在你会发现CSI也成为容器存储接口的事实标准,容器跟存储之间的接口也标准化了,这其实给数据保护厂商或备份厂商带来一个好的机遇。

In-Tree存储卷插件是容器编排器的一部分,有许多缺点:

  1. 存储卷插件开发与Kubernetes版本紧密结合并依赖于Kubernetes版本。
  2. Kubernetes开发人员/社区负责测试和维护所有供应商的卷插件,而不仅仅是测试和维护标准插件API,
  3. 卷插件中的错误会影响Kubernetes的稳定性,因为它们以完全权限运行,4、存储供应商被迫提供插件源代码,并且不能仅发布二进制文件。

Flex Volume插件试图通过为外部卷插件公开基于exec的API来解决这种痛苦。虽然它使第三方存储供应商能够在out-of-tree编写驱动程序,但为了部署第三方驱动程序文件,它需要访问节点和主机的根文件系统。

为解决这些问题,2018年,云原生计算基金会(CNCF)发布了Kubernetes 1.13,让Container Storage Interface(CSI)普遍可用。CSI通过使用标准Kubernetes原语开发存储插件,它是out-of-tree的,并且支持容器化部署,通过用户熟悉和喜爱的Kubernetes存储原语进行消费,从而解决所有这些问题。

主要利用K8S和CSI生态解决容器备份难题,我们可以看到在K8S认证里面,2020年11月7日统计:共有99个CSI Driver,有51个支持Snapshot。CNCF Landscape中K8s发行版,共68个K8s发行版。

收购新风口——K8s数据管理

    相对来说,我觉得现在进入容器做备份是很好的,因为已经有基金会牵头帮你把生态打造了一遍,主要是适配生态,生态会比原来虚拟机环境简单。今天会讲讲几个厂商怎么做的,我的标题叫做第二存储新的风口,两年前讲第二存储的时候就说第二存储就是新风口,现在新风口就是容器的备份。

2020年9月,Pure Storage以3.7亿美金高价收购Portworx,2020年10月,Veeam以1.5亿美金高价收购Kasten。以后容器越来越多,产生一个新的独角兽或未可知。  

近期国外机构GigaOm发布了基于K8s数据保护的雷达图,里面就是一些认为相对比较好的一些厂商,所以我们今天围绕三个厂商讲一下容器备份方案怎么做的,一个是数据存储的代表就是Portworx,它是做容器出身,第二个讲一下Commvault,它是做数据管理,数据备份这一块,现在有新的版本把容器生态做起来了,备份厂商向新的平台扩展的一个厂商代表,还有一个是Kasten,已经被Veeam收购,是做数据管理的,容器的厂商都会做备份这件事情。这三个厂商是目前K8s备份进步很快的,其他小的公司进入不到中国。

国内在制造业里已经有用户在用了,所以Commvault在中国都有存在,大家有机会用到很多方案。这个第三方分析报告仅代表他的个人观点,只是作为一个参考,并不代表真实的情况。

现在我讲讲自己的看法,Commvault,它认为容器备份不能仅仅备份数据,因为容器平台里面除了存在PV里面,还有容器以外有应用的话,其实还有环境、配置,元数据是什么,只有数据的话,恢复不起来的,重新建这个环境是很费劲的。

我们看一下进展,其实Commvault很早就做容器备份了,但是2017年做docker,2018年是OpenShift,我们知道这个生态是比较多样的,K8S没有一统天下,到了2018年底,2019年开始,CSI可以看到一统天下了,今年下半年Commvault发布最新版本Commvault 11.20,已经支持标准原生K8s。

主要的原理很简单,首先会由一个虚拟机装到Access Node,上面有一个proxy软件,它可以通过API跟服务器通信,去获取整个容器平台应用信息,自动发现应用,每个应用需要什么资源,用的资源是什么样的,数据在哪里,以应用为单位进行备份。

它是一个自动化发现的问题,应用可以自动发现,根据标题搜索。说白了,它备份数据的时候,它就是通过API-Server数据,看一下应用了哪些PV(persistent volumes),通过CSI调取快照,如果不支持可能会需要agent做数据备份。

从界面上来看,它把整个K8S和虚拟化并列的两个菜单,是两个并列的入口,K8S也是虚拟化一种,但是它是虚机虚拟化,所以是并列两个入口。因为一个大的企业不仅仅是容器的平台,可能还有虚拟机平台或者是物理机平台。

K8s集群通讯机制类似VM的vCenter,恢复的话不仅仅恢复应用,恢复数据也可以,恢复元数据也可以,备份之后可以看到里面是什么样的状态。恢复的话可以恢复到另外一个集群,比如说公有云,不仅仅完成备份工作,也可以完成迁移的工作,特别是老的K8S平台要升级很麻烦,可能需要备份,然后上新的一套容器平台,这样的话原来手工做很麻烦,现在是可以全部统一回复。

支持应用自动筛选,通过标签来筛选,你把所有开发应用前面打个标签,你只备份生产应用就可以了,可以定义很多东西,这样很方便可以做到自动化。

理论上来讲肯定支持所有的CSI快照存储,但是还是要实践证明。前段时间XSKY验证其CSI快照可以和CV对接,通过间接验证都可以,大家都遵循K8S等等几个规范,这样就方便了备份软件的生态,又便于备份虚拟机的时候,调取快照很麻烦的事情,你又要去对接接口等等很麻烦,但是现在不用了,标准通过CSI可以搞定。

但是目前Commvault一直在做,目前应用一致性备份主要是mysql和postgresql这两个分布式数据库,其他的应用一致性还没有做,但是要做也很简单,你熟悉应用的话可以自己写脚本,它提供了一个脚本的入口,你可以写一个脚本,快照前做什么脚本,刷一下内存就可以了,快照释放一下锁就可以了,扩展性很强。

小结一下,目前的优势是三个方面,可以自动化备份,自动发现应用自动把应用机做备份,第二是没有代理,大家知道容器那么多,每个容器装个代理,每个应用装一个代理备份不太现实,所以说它是没有代理。还可以跨云,到公有云,备份云恢复到另外一个地方去。

容器的各种部署模式,这种生态都见的很多,在实际生产过程当中。你看某一个容器应用,除了数据除了PV以外,我们看到很多的组件,可能都需要备份,应用视角去看,光备PV是远远不够的。

K10架构也是一样的意思,通过标签、筛选、自动发现应用进行备份,备份的话主要支持备份到对象存储里面,其他存储可能在做,好像快存储暂时没有看到支持,像Commvault没有问题,可以本地做备份,更多应用备份作为存储。

整个备份我们可以看到数据捕获能力,Kasten这一块是比Commvault有些优势,它不仅可以调用CSI快照,它自己还可以调用应用的一些数据库工具,但是到快照里面做不到逻辑备份,这也是它的优势。

它的一致性,支持崩溃的一致性,应用一致性帮助你刷内存,数据库的一致性可以做到数据库的逻辑备份,系统一致性,全应用捕获跨数据和存储层的工具结合。

Kasten整个理念是关注完整的一致性备份。在容器化方面比较专业,我个人觉得,但只是容器,可能有些不会纯IT化的企业,选择它有一些困难,因为有一些企业一般只想选一个应用,所以现在被Veeam收购,把虚拟机做进来会好一点。

最后讲一下Portworx,它是做存储的,容器存储公司,它认为做容器做备份问题跟虚拟机完全不一样,因为虚拟机讲的语言跟容器讲的语言不一样,VM和K8S的不同,原来以机器为单位的备份方式是不行的,传统的备份方式在容器下失灵,传统备份软件听不懂K8S的语言,不会自动发现应用,这是完全不一样的东西。

PX-Backup就是解决备份的问题。基于容器粒度都是虚拟机粒度,它会讲K8S语言,可以一键备份namespace。二级这个比较难,因为这么多节点同时要杀内存控制它,理论上还是很麻烦的。

它虽然被Pure收购了,但是目前官网上通过CSI接口支持公有云,只有公有云,但是我相信其他厂商也能用,但可能更多是做Pure自己的生态为主。

总结

我最后给大家一个建议。传统备份软件无法支持容器应用的备份要求,Kubernetes/CSI一统天下,备份生态好于VM时代,分布式架构让应用一致性更具挑战。

推荐建议:选择支持标准Kubernetes/CSI生态的备份厂商,避免锁定;下载试用版本,评估产品兼容性和应用感知能力;产品版本迭代速度很快,关注厂商的路标和支持能力。