本文通过分析七个常见的Kubernetes 备份和恢复错误,探讨Kubernetes 备份存在的风险因素以及使用Kubernetes 备份的最佳解决方案。
随着企业将 Kubernetes 投入生产,Kubernetes集群和应用程序的不断增加,它们也需要提供媲美其他生产系统的“企业级”服务。一旦遭遇意外事故、系统崩溃或恶意攻击,执行Kubernetes备份对保护应用程序的运行至关重要。除了应用程序自有的弹性和数据保护机制外,还需要制定正确且有效的备份策略。
合理的Kubernetes 备份和恢复策略应满足以下几种需求:
如若遭遇不可抵抗力事故时仍能恢复整个集群(容灾恢复);
恢复特定的应用程序(例如部分数据受损时);
在不同的环境之间迁移集群(本地到云,反之亦然);
Kubernetes备份的难点在于容易出错。这就要求技术人员操作备份时必须考虑周全,否则就难以(甚至完全不可能)将集群或应用程序从崩溃恢复至正常。本文通过分析七个常见的Kubernetes 备份和恢复错误,探讨Kubernetes 备份存在的风险因素以及使用Kubernetes 备份的最佳操作方案。
Kubernetes 备份有何与众不同?
Kubernetes备份应用程序与虚拟机上备份和恢复大不相同。Kubernetes环境非常动态化,单个的生产应用程序就可能包含数百个组件,包括容器或pod、配置文件存储、证书、加密凭证和卷。依照负载或其他操作要求,容器实例不断变化,与此同时,数据写入储存到单个或多个可以动态创建的持久卷。要想成功恢复,Kubernetes 应用程序备份必须获取全部这些信息。完善的Kubernetes集群备份必须包括:存储在/etcd中的所有的Kubernetes 控制面板参数、所有的命名空间和所有的持久卷。
Kubernetes 备份和恢复易犯的错误
操作人员和开发人员都有可能会犯错,即便是最强悍的硬件和软件也有可能会崩溃。当今,随着网络犯罪的日益猖獗,正确、完善而及时的备份是防止人员渎职的最后一道防线。Kubernetes 备份和恢复对于生产经营的正常运转至关重要,因此必须尽力避免以下七个常见错误:
错误 1:手动编写脚本来管理备份
如果应用环境和业务需求非常有限,倒是可以使用Kubernetes API 简单编写脚本,用来备份或快照与应用程序关联的pod、服务、配置文件存储、数据存储和加密凭证。但这种方法的缺陷在于它根本不具备任何扩展能力。随着部署的集群和应用程序数量的增加,这种方法就完全失效了。并且,在完全依赖手动脚本的环境中,所有操作都会变得非常脆弱且难以追踪和溯源。最终后果就是各个集群衍生各自的变体,问题上升到只有资深专家才能解决的地步。
错误 2:备份过程没有实现自动化
Kubernetes部署的目标是使操作得到最大程度的自动化。对于大规模的业务运营来说,自动化至关重要。严格来说,任何要求定期执行的任务都必须是自动化的,包括集群和应用程序备份。另外,由于Kubernetes环境变动频繁,除了按时计划的备份,技术人员还必须能够及时操作临时备份。
错误 3:使用多个管理工具管理备份
随着时间推移,Kubernetes环境也日新月异地发展,因此,同时使用多个工具来管理备份也是常见的。
技术人员为不同的Kubernetes发行版适配了不同的工具;或者在本地集群和公有云中使用不同的工具进行备份。
技术人员使用现有工具或脚本来备份/etcd(控制面板),但是使用其他工具或存储途径备份持久卷。
在没有遇到问题的时候,一切看似安然无恙。但是使用多个管理工具早晚会导致Kubernetes恢复出现问题。如何协调两个或多个管理工具同步恢复到某个时间点?必须在多个不同的集群中恢复同一个应用程序时怎么办?所以,正确的选择是单纯使用一个简单明了(至少尽可能简单明了)的工具来管理,这样的话何时何地操作恢复都一样,轻车熟路。
错误 4:没有正确备份持久卷
顾名思义,持久卷就是要持久。如果希望持久卷真正做到持久,那么备份就是必须的。Kubernetes环境是动态的,因此备份也要随之而动,跟上集群和应用程序变化的步伐。如果备份仅限于当前操作者视野范围之内的持久卷,那么这种备份操作迟早会有疏漏,无法正确备份所有内容。无论是个人使用还是商用,Kubernetes备份部署都必须做到有能力检查集群的状态以确定需要备份的持久卷。基于策略的方案可以确保技术人员根据需要提供的服务级别,在正确和必要的时间段备份持久卷。
错误5:不具备监控备份执行的能力
对于系统管理员来说,最糟糕的事情莫过于在启动紧急恢复时才发现过去两周的备份都是失败的。无论使用什么备份工具,都必须严格要求具备完善的监控备份执行能力以及验证备份是否成功的能力。形形色色的勒索软件攻击最常用的伎俩就是是静默禁用备份功能,因此这项功能格外重要。一旦无法恢复,唯一的选择就只有掏钱包了。
错误 6:没有安全地存储备份凭据
随着Kubernetes环境扩展到多个集群,为每个集群提供单独的备份凭据是必要的。这些凭据有可能成为一个重大漏洞。因此,管理和保护它们以防止未经授权的访问,是存储备份凭据的安全底线。理想状况,则是有一个Kubernetes备份部署,用来自动处理备份和其他凭据。
我们最近的博客文章《保卫 Kubernetes:将零信任原则应用于Kubernetes环境》诠释了如何应用Kubernetes内置功能来防止未经授权的访问入侵Kubernetes集群。
错误 7:没有做好合规性管理
每个行业都必须合规,都有必须满足的监管要求。大多数组织也有各自的行业规范。明了这些规则要求非常重要,以确保自身达标或留有富余量,并保证有能力向审计人员和安全部门证明自身合规。
定期报告可以检查和发现问题,找出没有贯彻执行Kubernetes备份方案之处,降低数据丢失或泄露的风险,以免频繁停机影响商业信誉。
译者介绍
张哲刚,51CTO社区编辑,系统运维工程师,国内较早一批硬件评测及互联网从业者,曾入职阿里巴巴。十余年IT项目管理经验,具备复合知识技能,曾参与多个网站架构设计、电子政务系统开发,主导过某地市级招生考试管理平台运维工作。
原文标题:7 Common Kubernetes Backup and Recovery Mistakes,作者:Kyle Hunter