带 Velero 的 Kubernetes 集群备份

Kubernetes 使用开源备份和恢复工具集群灾难恢复

每天‬分享‬最新‬软件‬开发‬,Devops,敏捷‬,测试‬以及‬项目‬管理‬最新‬,最热门‬的‬文章‬,每天‬花‬3分钟‬学习‬何乐而不为‬,希望‬大家‬点赞‬,加‬关注‬,你的‬支持‬是我‬最大‬的‬动力‬。



Velero 是用于 Kubernetes 集群灾难恢复的开源备份和恢复工具。它还支持集群资源的迁移和持久卷备份。手动或计划备份到外部存储,确保您的数据安全和保护。

你可以利用 Velero 完成以下任务:

  • 备份您的 Kubernetes 集群或选定的资源/持久卷,并在集群数据丢失的情况下进行恢复
  • 复制一个完整的 Kubernetes 集群(例如,基于产品创建一个开发/测试实例)或者将选定的资源迁移到其他集群

您可以在 Virtuozzo 应用程序平台上轻松地将 Velero 备份与 Kubernetes 集群集成在一起。只需按照下面的简单步骤:

1.首先组织与 S3兼容的存储,Velero 将使用它来存储您的备份。例如,可以使用 AWS S3、 VHI S3或 MinIO 集群。

在我们的指南中,我们将继续使用后一个选项,以便您可以在同一个平台下进行整个设置。您可以使用 Marketplace (按照链接指南中的步骤)在 Virtuozzo 应用平台上安装 MinIO 集群。

安装完成后,您将看到您的 MinIO 安装凭证(也通过电子邮件发送):

等待第一台服务器格式化磁盘。

2.连接到 MinIO 集群的管理面板,并在存储集群中创建一个新的 bucket (例如 velero)。

3.找到最新的 vmware-tanzu/velero 版本(在我们的示例中是 v1.8.1) ,单击下载部分中的链接并将 URL 复制到 linux amd64归档文件。

提示: 在我们的示例中,我们将把 velero 二进制文件直接上传到 Kubernetes 集群服务器。但是,您可以通过对集群的 API 访问将它保存在任何地方(例如本地)。

4.通过 SSH (例如 Web SSH)连接到 Kubernetes 集群控制平面。使用前面步骤中的链接下载归档文件,并将 velero 二进制文件解压缩到/usr/local/sbin 目录。

Shell

wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gzbrtar -zxvf velero-v1.8.1-linux-amd64.tar.gz -C /usr/local/sbin --strip-components=1 velero-v1.8.1-linux-amd64/velero


注意: 如果通过文件管理器上传,则需要调整文件权限:

Shell

chmod 755 /usr/local/sbin/velero


5. 创建/root/凭据-velero 文件并放入 S3存储凭据(参见第一步) :

属性文件

[default]braws_access_key_id = {accessKey}braws_secret_access_key = {secretKey}


6.通过提供正确的值来调整下面的命令,并执行它来部署 Velero。以下占位符需要调整:

  • {bucket} { bucket } - bucket的名字(在我们的例子中,请参见第二步)
  • {s3Url} { s3Url } - 一个http:// 网址: ( 连结至你的 S3储存器(http://minio.vip.jelastic.cloud/在我们的例子中,请参见第一步)
  • {image} { image } - 一个 Velero 容器图片(velero/velero:v1.8.1 Velero/velero: 在我们的例子中,请参见第三步)

Shell

velero install --provider aws --plugins velero/velero-plugin-for-aws:v1.4.1 --bucket {bucket} --secret-file ./credentials-velero --use-volume-snapshots=true  --backup-location-config region=default,s3ForcePathStyle="true",s3Url={s3Url} --image {image} --snapshot-location-config region="default" --use-restic


我们使用 AWS 模拟来处理 S3和静态附加组件,因为我们有 NFS 存储,而没有本机快照功能。

7.让我们部署一个带存储和挂载的测试应用程序来测试 Velero 如何执行备份。我们将使用以下示例应用程序:

Shell

wget https://www.virtuozzo.com/application-platform-docs/kubernetes-velero-backups/test-instance.yamlbrkubectl apply -f test-instance.yaml


您可以使用以下命令检查应用程序:

Shell

kubectl get pods,pvc,pv -n test-nginx


执行下面列出的命令以生成一些随机数据,这些数据将模拟应用程序的使用情况。

Shell

kubectl -n test-nginx exec -it nginx-test -- /bin/bashbrdd if=/dev/urandom of=/usr/share/nginx/html/test-file3.txt count=512000 bs=1024brls -laSh /usr/share/nginx/html/brexit


8.您需要对应用程序吊舱进行注释,以确保备份中包含 NFS 存储数据。您可以从已部署的应用程序获得所需的存储名称(在我们的示例中是 myStorage)。

注意: 如果没有注释,PV 和 PVC 定义将被复制,但数据不会被复制。

Shell

kubectl -n test-nginx annotate pod/nginx-test backup.velero.io/backup-volumes=mystorage


9. 现在,让我们为您的测试应用程序创建一个备份:

Shell

velero backup create test-nginx-b4 --include-namespaces test-nginx --wait


10. 检查你的 minIO 存储器,应该有来自 Velero 和 restic 的数据。

另外,检查创建的备份是否存在并且正常。

Shell

velero get backups


11. 让我们完全删除示例应用程序,以正确地测试恢复过程。

Shell

kubectl delete ns test-nginx


还要清理共享存储数据(在/data 目录中)。

12. 准备就绪后,使用以下命令从备份中恢复应用程序:

Shell

velero restore create --from-backup test-nginx-b4


就是这样! 您可以验证所有东西,包括存储的数据,都已还原。

备份计划

Velero 通过调度支持备份过程自动化。您可以通过 cron 表示法(使用 UTC 时区)创建所需的调度模板。一般语法如下:

Shell

velero schedule create {scheduleName} --schedule="{schedule}"


1. 使用下表作为参考,使用标准 cron 表达式设置所需的进度表:

角色位置

角色时期

可接受价值

1

Minute 等一下

0-59,* 0-59,*

2

Hour 一小时

0-23,* 0-23,*

3

Day of Month 每月的一天

1-31,* 1-31,*

4

Month 月份

1-12,* 1-12,*

5

Day of Week 星期几

0-7,* 0-7,*


例如,每6小时创建一次备份:

Shell

velero schedule create myschedule --schedule="0 */6 * * *"


2.调度还可以使用@every {  期间}语法表示。可以使用秒(s)、分(m)和小时(h)的组合来指定持续时间。

例如,每6小时创建一次备份:

Shell

velero schedule create myschedule --schedule="@every 6h"


3.可以通过专用参数添加其他调度选项(以备份特定名称空间、设置备份的生存期等)。使用帮助标志查看参数的完整列表:

Shell

velero schedule create --help


恭喜! 现在您知道如何使用 Velero 自动备份 Kubernetes 项目了。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章