越来越多的应用尝试使用容器平台部署。为防止数据的误操作(误删、误覆盖)也需要方便的备份恢复机制和异构存放。请问目前容器数据备份有哪些好的方案?备份整个容器?还是提取容器中的数据来备份?
收起这里暂且只讨论容器数据备份,而不涉及集群的备份和恢复。
容器里面实现持久化存储的方式比较多,一方面通过hostpath挂载,隐射宿主机的目录到容器的目录,另一方便通过通过storage绑定挂载持久卷到容器的任何目录。还有通过将NFS目录作为容器的卷挂载的,
当谈到备份数据时,上面的方法都存在一个相同的问题 - 如果容器内的数据在备份过程中发生变更,那么就出现了数据的不一致性,当然我们可以通过关闭卷的读写来获得数据的一致性,不过关闭卷来备份,会导致业务连续性的中断。
这里建议在k8s集群中,把有状态服务的信息存储在数据中,独立于容器的文件的系统。
这样就可以按照常规的方式备份数据,比如快照。
这里介绍几个开源项目 一个是 openebs, 比较火的开源的云原生的存储。 另外一个 就是velero项目,可对集群资源备份和恢复。