English version: Backup and Restore Kubernetes Volumes with Velero Restic Integration – Frank’s Weblog
我搭建了一个Kubernetes集群,使用OpenEBS作为存储后端。我选择了Jiva作为存储引擎,Jiva是一个高可用的存储控制器,数据被复制到所有节点。为了确保数据的安全,我使用Velero及其Restic集成将卷备份到AWS S3。
安装
首先需要在本地电脑上安装 Velero CLI以控制Kubernetes集群上的Velero控制器,请参阅Velero Docs – Basic Install了解安装说明。
准备Kubernetes配置文件,其应位于.kube/config
并确保 kubectl get pod
返回正确的结果。
使用如下的格式创建一个AWS密钥文件,该密钥应具有访问在下一步骤中提供的S3存储桶的权限,记下该文件的路径。
[default]
aws_access_key_id=<AWS_ACCESS_KEY_ID>
aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
将Velero安装到Kubernetes集群
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.5.0 \
--bucket velero \
--secret-file /path/to/aws/cred/file \
--use-volume-snapshots false \
--use-restic \
--backup-location-config region=us-east-1
备份及还原
运行单个备份
velero backup create BACKUP_NAME \
--include-namespaces default \
--default-volumes-to-restic
创建定时备份计划
velero schedule create SCHEDULE_NAME \
--include-namespaces default \
--default-volumes-to-restic \
--schedule="@every 1h"
有关更多备份选项,请参阅 Velero Docs – Restic Integration
从备份恢复
velero restore create --from-backup BACKUP_NAME
导出备份
有时直接恢复到Kubernetes集群并不能满足我们的需求。在这种情况下,我们可以直接从位于S3的备份repo中导出文件。由于Velero在其CLI中没有提供此功能,我们需要使用Restic CLI。
安装 Restic CLI
Installation — restic 0.14.0 documentation
获取快照 ID
如果弹出要求输入密码,默认密码为static-passw0rd
restic snapshots -r s3:s3-us-east-1.amazonaws.com/(backup-bucket)/restic/default
该命令会返回一个快照列表,记下需要导出的快照 ID。
ed17cb1b 2022-08-28 00:00:00 velero backup=(redacted),backup-uid=(redacted),ns=default,pod=(redacted),pod-uid=(redacted),volume=etc-gitlab-runner /host_pods/(redacted)/volumes/kubernetes.io~empty-dir/etc-gitlab-runner
使用ls
命令列出快照中的文件。
restic ls -r s3:s3-us-east-1.amazonaws.com/(backup-bucket)/restic/default ed17cb1b
将文件导出到压缩文档中。
restic dump -a tar -r s3:s3-us-east-1.amazonaws.com/(backup-bucket)/restic/default 4e68ea11 / > ./dump.tar
References
[1] Velero Docs – Run Velero on AWS
[2] Backup and Restore Stateful Workloads using Velero and Restic | James McLeod
发表回复/Leave a Reply