容器数据备份有哪些好的方案?容器全备份?还是提取容器中的数据来备份?

越来越多的应用尝试使用容器平台部署。为防止数据的误操作(误删、误覆盖)也需要方便的备份恢复机制和异构存放。请问目前容器数据备份有哪些好的方案?备份整个容器?还是提取容器中的数据来备份? ...显示全部

越来越多的应用尝试使用容器平台部署。为防止数据的误操作(误删、误覆盖)也需要方便的备份恢复机制和异构存放。请问目前容器数据备份有哪些好的方案?备份整个容器?还是提取容器中的数据来备份? 

收起
参与46

查看其它 9 个回答half_life的回答

half_lifehalf_life架构师上海骥步科技有限公司

容器的数据备份,其实就是有状态应用在k8s的备份问题(不包括容器的镜像),个人认为实际上已经不能把容器本身以及应用的数据分开来了。备份的时候,应该把应用以及应用相关的资源,如configmap,secret,pv,pvc,service,以及pv里面的数据,一起备份下来,并且拷贝或者上传到第二存储,同主存储隔离开来。

目前国外主流的产品有kasten的K10,Portworx PX backup,以及社区的开源项目velero。

这些产品的主流做法,就是把应用的资源以及数据打包,一起备份到S3对象存储,或者NFS等第二存储。其中,PV,PVC还可以抓取CSI快照,然后对快照进行备份,或者对快照进行有选择的数据导出。

之所以这样做,是因为在k8s容器时代,容器是一个动态变化的资源,例如正在运行在哪个node上、配置的参数、版本等等信息都可能是变化的。而最关键的数据,是靠PV,PVC这样的资源来描述的。换句话说,PV,PVC其实就记录了容器同应用数据的mapping关系。在备份的时候,如果容器跟底下使用的存储(如分布式存储)分开备份,这样可能带来几个问题:

  1. 容器的备份时间跟存储的备份时间不一致,这样就造成版本的不一致
  2. 存储的备份一般是针对存储本身的volume/LUN进行备份,恢复的时候,还要处理volume/LUN同PV的关系
  3. 一个集群可能使用不止一个存储,那备份的时候还要考虑不同存储的备份策略
  4. 一个分布式存储可能对多个集群供应存储,对某个集群的某个应用的细粒度的数据恢复来说,可能不好处理

总之,如果备份时候对容器和存储分开考虑,那还是基本沿用了虚机时代备份的思路,在容器时代要用的好可能有点困难。在备份的时候,把应用相关的资源一起打包备份,其实就是把资源跟数据的关系在同一个时间点一起备份下来,形成一个比较完整的可用的恢复点,将来恢复时候,也是根据应用的颗粒度来进行恢复的。

软件开发 · 2021-09-16
浏览2604

回答者

half_life
架构师上海骥步科技有限公司
擅长领域: 云计算容器容器云

half_life 最近回答过的问题

回答状态

  • 发布时间:2021-09-16
  • 关注会员:14 人
  • 回答浏览:2604
  • X社区推广