vlambda博客
学习文章列表

云原生架构 - 备份和恢复 Kubernetes 集群


备份什么?


对于Kubernetes搭建的集群,我们需要备份:


应用版本及编排信息(Application Version)

  • 应用对应的工作负载,例如:

    deploymenet,statefulset以及daemonset等等

  • 应用需要使用的配置,例如:

    configmap,secret等等


应用状态信息(Application State)

  • 应用可以分为有状态应用和无状态应用

  • 有状态应用需要备份状态数据,例如:database



备份方案


总结下来,方案和开源工具有如下5种,接下来几遍文章我们将和大家一一深入实践和总结,这里点到为止。


1. etcd: etcd 备份是某一时刻的完整数据,无法自定义选择备份哪些内容,且数据除了 etcd 本身,其他程序不可读,因此有很多的局限。另外 pod 使用的存储如 PV 等数据也需要备份,这并不在 etcd 的范畴。

2. velero: Backup and migrate Kubernetes resources and persistent volumes

3. stash: Backup your Kubernetes Stateful Applications

4. portworx: Portworx solves these challenges and more with cloud native storage and data management built from the ground up for Kubernetes.

5. 手工kubectl yaml 备份

kubectl get deploy nginx-deployment -n poc -o yaml > nginx-deploy.yaml
kubectl get deploy -A -o yaml > all-deployment.yaml
kubectl get pod -n poc -o yaml > poc.yaml