Skip to content

Latest commit

 

History

History
74 lines (61 loc) · 5.1 KB

stash备份与恢复k8s集群持久化存储卷.md

File metadata and controls

74 lines (61 loc) · 5.1 KB

###stash安装

###stash备份和恢复k8s集群持久化存储卷

组件stash定义了以下crd用于备份和恢复持久化卷。 1、Restic:描述备份操作的对象,定义了备份目标,备份存储目的地,备份调度周期,备份快照保留策略。 2、Repository:描述了备份存放后端的对象,用户通过该对象可以更容易的查看备份存储后端信息。 3、Snapshot:描述备份的一份快照的对象,用户通过该对象可以列出,删除备份的快照,在恢复备份过程中,可以通过该对象指定特定快照进行恢复。 4、Recovery:描述恢复操作的对象,定义了恢复操作将作用的备份后端存储和快照信息,恢复的目的卷。

前提: kubernetes集群、存储后端,例如NFS

###stash备份k8s集群持久化存储卷 参考网址: https://appscode.com/products/stash/0.8.3/guides/backup/ 备份操作有两种模式:在线模式和离线模式 (1)、在线模式 步骤: 1、创建secret对象,用于加密备份的数据和保存访问存储后端的证书。 2、创建Restic对象,定义备份操作。 3、stashwatchRestic对象的变化。 4、stashRestic对象定义的备份目标上创建sidecar容器,该容器会挂载备份目标目录和目的地存储后端目录。 5、sidecar容器负责周期性的执行备份操作,执行过程中,会创建RepositorySnapshot对象描述已完成的备份后端存储目录和快照。 过程图如下 01

参考网址:https://appscode.com/products/stash/0.8.3/guides/offline_backup/ (2)、离线模式 步骤: 1、创建secret对象,用于加密备份的数据和保存访问存储后端的证书。 2、创建Restic对象,定义备份操作。 3、stashwatchRestic对象的变化。 4、stash会注入init-container容器到备份目标上,该容器会挂载备份目标目录和目的地存储后端目录。 5、stash会创建cronjob。 6、cronjob周期调度执行重启备份目标。 7、备份目标重启时,注入的init-container容器执行备份操作,执行过程中,会创建RepositorySnapshot对象描述已完成的备份后端存储目录和快照。

周期重启cronjob对不同的备份目标重启过程如下: 备份目标为statefulsetdaemonset时,重启时将删除所有的pod,在重建pod,每一个podinit-container都会执行备份操作。 备份目标为deploymentreplicasetreplicationcontroller时,它会把pod的数量缩到0。然后创建一个pod执行备份操作,再把pod伸缩到原始数量,拉伸过程中pod不会执行备份操作。

过程图如下: 02

备份例子: 文件restic.yaml定义的restic对象如下。 03 对象restic定义的备份目标为带有标签app: stash-demodeploymentreplicasetreplicationcontrollerstatefulsetdaemonset。需要备份的目录为这些目标管理的pod中文件目录/source/data,这个目录以卷名为source-data挂在到sidecar/initcontainer上的目录/source/data。 对象restic定义的备份存储目的地为nfs存储后端192.168.124.62:/var/nfs,备份数据加密密码存放在名为local-secretsecret对象中。 04 对象restic定义的备份调度周期为每分钟调度一次。 对象restic定义的备份快照保留策略为保留最近的5份快照。

###stash恢复k8s集群持久化存储卷 参考网址: https://appscode.com/products/stash/0.8.3/guides/restore/

步骤: 1、创建Recovery对象,定义恢复操作。 2、stashwatchRecovery对象的变化,获得Recovery对象中定义的存储后端目录和快照信息,以及恢复目标卷信息。 3、stash创建job来执行恢复操作。 4、job会读取存储后端目录信息Repository和后端证书secret,从而访问到待操作的数据。 5、job执行恢复操作,把数据从存储后端目录恢复到指定卷。 6、最后,用户创建新的deploument/statefulset/rc挂载目的卷。 过程图如下 05

恢复例子: 文件recovery.yaml定义的recovery对象如下。 06 对象recovery定义的恢复备份数据到名为stash-recoveredpvc对象的/source/data目录。 对象recovery定义的恢复备份数据来源于名为deployment.stash-demorepository对象。 07 对象repository定义的备份数据来源为nfs服务器192.168.124.62:/var/nfs/deployment/stash-demo。加密密码存放在名为local-secretsecret对象中。