使用Velero Restic集成备份及恢复Kubernetes数据卷




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

[3] Velero Docs – Restic Integration




Posted

in

by

Comments

发表回复/Leave a Reply

您的电子邮箱地址不会被公开。/Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.