Kubernetes备份和恢复之思考

互联网公司对基础设施的稳定性和冗灾要求已经越来越成为决定生死的关键:

  • 基础设施和应用软件随着时间推移,复杂度和组件依赖度已经达到登峰造极的地步

    • 没有任何人能够完全掌握复杂的系统

    • 组件相互依赖甚至形成死循环,重要组件重启可能是及其危险和”不可能完成的任务”

    • 软件微小bug和看似无害的运维操作,可能导致关键系统瘫痪

对于不断快速发展的Kubernetes技术和规模,层出不穷的故障(bug和误操作)会在瞬间或极短时间内让整个集群瘫痪,甚至数据永久丢失。这对于以数据和服务为根基的互联网公司,是无法接收的灾难。

备份和恢复,是我们软件架构的基石和最后的保障,重要性也许平时看不出,但是,只要你的业务基于数据和服务,那么你终归会见识到 世界的崩溃和重建

注解

最近在线下开发测试环境遇到的一个故障,让我发现Kubernetes的复杂以及无法预知用户在你的K8s集群之上构建的复杂生态。仅仅因为一个 operator 的软件bug,在很短的时间内删除了整个集群的 Kubeernetes服务(services) 。这个故障影响了整个k8s的对外服务,唯一完善的解决方法是从备份中恢复。