备份应用程序和数据是组织经常需要处理的事情。尽管Kubernetes可以确保应用程序服务的高可用性和可伸缩性,但这些好处并不能有效地保护数据。因此,必须对Kubernetes应用程序进行数据管理和备份,并应将其纳入标准操作流程中。但是,备份Kubernetes应用程序需要一种独特的方法,该方法与传统的备份解决方案大不相同。使用Kubernetes,经常会将应用程序部署在集群中跨节点的多个容器中,要备份应用程序以及数据和存储量,你需要考虑所有各种Kubernetes对象和配置数据,还必须适应应用程序快速的开发和部署周期,DevOps的“左移(shift-left)”理念,数据保护,安全要求等。鉴于这些独特的要求,备份Kubernetes似乎是一项艰巨的任务,但是你可以采取一些步骤来简化该过程。以下是五个最佳做法:
1.考虑Kubernetes架构
一个典型的Kubernetes应用程序由数百个组件组成-Pod,服务(service),证书,密钥(secret)等等。任何Kubernetes备份解决方案不仅要能够备份和还原数据,而且还要能够备份和还原所有这些组件。至关重要的是,备份解决方案要通过API自动与Kubernetes控制平面进行交互,以便不仅能够发现集群上运行的Kubernetes应用,而且还可以与基础计算,网络和存储基础架构集成。存储也是一个重要的考虑因素,必须包含在备份计划中。与应用程序配置数据一样,Kubernetes存储(用于应用程序容器的持久卷)包含需要保护的重要业务数据。最后,确定要备份存储的位置。你将其保留在本地s存储还是在云中?灵活性和易用性将成为任何数据备份存储的重要特征。
2.制定恢复计划
由于Kubernetes应用程序的分布式架构,还原数据需要很多步骤。例如,你需要验证集群依赖关系,创建新的Kubernetes视图的替代数据,并确定在何处启动恢复。然后,你需要标识备份数据源并准备目标存储。一旦计划了这些,就必须更新所有组件以创建新的存储资源。提前创建详细计划可以帮助你引导这个复杂的过程,幸运的是,有些Kubernetes备份解决方案可以自动为你执行此操作,你应该寻找一种支持此功能的解决方案。但是可靠的执行计划仅仅是开始。你还应该确保你的备份平台可以将各个步骤转换为相关的Kubernetes API调用。这样可确保恢复功能所需的资源可用,并确保正确部署和配置了云原生应用程序的所有组件。
3.简化操作
如果备份需要编码,打包或部署,则开发人员可能会避免使用它们。他们的目标是快速开发和部署应用程序,而复杂的备份过程可能会阻碍其进展。因此,备份应由API驱动,并且是无缝衔接的。确保你的解决方案具有针对应用程序而不是其单个组件的自动备份策略,并具有在部署新应用程序时检测和备份新应用程序的能力。最后,确保你的备份解决方案提供了简单的工作流程,并使你的运维团队能够顺畅地遵守任何法规和监控要求。
4.确保安全
与任何数据管理功能一样,安全性至关重要。执行Kubernetes备份时,要实施身份和访问管理以及基于角色的访问管理(RBAC)的控件,以确保只有授权的用户和组才能访问备份平台。这使你可以控制谁可以执行任务,例如监视和验证备份,执行还原等,并使你可以向开发人员授予从快照还原应用程序的权限。你的解决方案应集成到云提供商的身份验证解决方案中,而无需任何其他工具或API。最后,请确保你的数据已加密-无论是在传输中还是在静止状态。
5.利用Kubernetes的可移植性
要利用Kubernetes的可移植性功能,你的备份解决方案应该能够兼容几种发行版和基础架构配置执行还原,并自动转换应用程序的备份版本以在新环境中运行。备份解决方案要能够转换所有应用程序依赖项以与新环境兼容,这一点很重要。
Kubernetes原生备份是你的最佳选择
无论你的目标是保护Kubernetes应用程序免受数据丢失和损坏,为测试和开发目的备份数据,将应用程序迁移到新环境中,还是支持组织的灾难恢复计划,备份对于高效运维都是必不可少的。使用传统解决方案而不是专门为Kubernetes环境设计的解决方案会增加意外数据丢失和配置错误的风险,并且无法提供保护应用程序数据所需的细粒度,可感知的应用程序备份和恢复功能。为了遵守Kubernetes环境中的备份和恢复最佳实践,Kubernetes原生备份解决方案是最佳方法。
译者:王延飞
参考链接:
https://thenewstack.io/5-best-practices-to-back-up-kubernetes/