云原生架构 - 备份和恢复 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