Velero(以前称为 Heptio Ark)是一个开源工具,可以安全地备份和还原,执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷,可以在 TKE 集群或自建 Kubenetes 集群中部署 Velero 用于:

  • 备份集群资源并在丢失的情况下进行还原。

  • 将集群资源迁移到其他集群。

  • 将生产集群资源复制到开发和测试集群。

Velero 工作原理图如下图所示,当用户执行备份命令时,调用自定义资源 API 创建备份对象(1),BackupController 控制器 watch 到生成的备份对象时(2)执行备份操作(3),备份完成后将备份的集群资源和存储卷快照上传到 Velero 的后端存储(4和5);类似的,当执行还原操作时,Velero 会将指定备份对象的数据从后端存储同步到 Kubernetes 集群完成还原工作。

下面介绍使用腾讯云对象存储 COS 作为 Velero 后端存储实现集群备份和还原的操作步骤。

一、前提条件

  • 已注册腾讯云账户;
  • 已开通 COS 服务;

  • 已创建 Kubernetes 集群,集群版本 v1.10 或更高版本,集群可正常使用 DNS 和 互联网服务。

二、配置存储

1、创建 COS 存储桶

在 COS 控制台为 Velero 创建一个对象存储桶来存储备份 。

通过 COS 控制台为存储桶设置访问权限。对象存储 COS 支持设置两种权限类型:

  • 公共权限设置:为了安全起见,推荐存储桶权限类别为私有读写。

  • 用户权限设置:主账号默认拥有存储桶所有权限(即完全控制),另外 COS 支持添加子账号有数据读取、数据写入、权限读取、权限写入,甚至完全控制的最高权限。

由于需要对存储桶进行读写操作,为示例子账号授予数据读取、数据写入权限,如下图所示:

2、获取存储桶访问凭证

Velero 使用与 AWS S3 兼容的 API 访问 COS ,需要使用一对访问密钥 ID 和密钥创建的签名进行身份验证,在 S3 API 参数中,access_key_id字段为访问密钥 ID , secret_access_key 字段为密钥。

在腾讯云访问管理控制台新建和获取 COS 授权的示例子账号的腾讯云密钥 SecretId与 SecretKey ,如下图。其中 SecretId 值对应 access_key_id 字段,SecretKey 值对应 secret_access_key 字段。

根据上述对应关系在本地目录中创建 Velero 所需的凭证配置文件 credentials-velero :

[default]aws_access_key_id=aws_secret_access_key=

三、安装 Velero

下载最新官方发行的 Velero 压缩包到集群环境中,本示例以撰写此文档时最新版本 v1.5.2 为例。

wget https://github.com/vmware-tanzu/velero/releases/download/v1.5.2/velero-v1.5.2-linux-amd64.tar.gz

提取压缩包,压缩包中包含 Velero 命令行执行文件和一些示例文件。

tar -xvf velero-v1.5.2-linux-amd64.tar.gz

将 velero 可执行文件从解压后的目录迁移到系统环境变量目录下直接使用,这里移至 /usr/bin 目录。

mv velero-v1.5.2-linux-amd64/velero /usr/bin/

执行下面 Velero 安装命令,创建 Velero 和 restic 工作负载以及其他必要的资源对象。

velero install  --provider aws --plugins velero/velero-plugin-for-aws:v1.1.0 --bucket   \--secret-file ./credentials-velero \--use-restic \--default-volumes-to-restic \--backup-location-config \region=ap-guangzhou,s3ForcePathStyle="true",s3Url=https://cos.ap-guangzhou.myqcloud.com

参数说明:

  • --provider:声明使用的 Velero 插件类型。

  • --plugins:使用 S3 API 兼容插件 “velero-plugin-for-aws ”。

  • --bucket:在腾讯云 COS 创建的存储桶名。

  • --secret-file:访问 COS 的访问凭证文件,见上面创建的 “credentials-velero”凭证文件。

  • --use-restic:使用开源免费备份工具 restic 备份和还原持久卷数据。Velero 支持使用免费开源备份工具 restic 备份和还原 Kubernetes 存储卷数据 (不支持 hostPath 卷),这种集成是 Velero 备份功能的补充,建议开启。

  • --default-volumes-to-restic:使用 restic 来备份所有Pod卷,前提是需要开启 --use-restic 参数。

  • --backup-location-config:备份存储桶访问相关配置。

  • --region:兼容 S3 API 的 COS 存储桶地区,例如创建地区是广州的话,region 参数值为“ap-guangzhou”。

  • --s3ForcePathStyle:使用 S3 文件路径格式。

  • --s3Url:COS 兼容的 S3 API 访问地址,请注意不是创建的 COS 存储桶的公网访问域名,而是要使用格式为 https://cos..myqcloud.com 的 URL,例如地区是广州的话,参数值为 “https://cos.ap-guangzhou.myqcloud.com”。

另外还有其他安装参数可以使用 velero install --help 查看,比如不想备份存储卷数据的话可以设置 --use-volume-snapshots=false 来关闭存储卷数据快照备份。

执行上面的安装命令后,安装过程如下图所示:

安装命令执行完成后,等待 Velero 和 restic 工作负载就绪后,查看配置的存储位置是否可用。

执行 velero backup-location get 命令查看存储位置状态,显示“Avaliable”,则说明访问 COS 正常,如下图所示:

至此,Velero 安装完成。

四、Velero 备份还原测试

在集群中使用 helm 工具创建一个具有持久卷的 minio 测试服务,在此示例中,已经为 minio 服务绑定了负载均衡器,可以在浏览器中使用公网地址访问管理页面。

登录 minio Web 管理页面,上传一些测试的图片数据, 如下图:

接下来使用 Velero 备份,可以直接备份集群中的所有对象,也可以按类型,名称空间和/或标签过滤对象,本示例使用下面命令仅备份 default 命名空间下所有资源:

velero backup create default-backup --include-namespaces default

使用 velero backup get 命令查看备份任务是否完成,当备份任务状态是“Completed”时,错误数为 0 ,说明备份任务完成且没发生任何错误,备份过程如下图:

此时我们删掉 minio 所有资源,包括它的 PVC 持久卷, 如下图:

删掉 minio 资源后,我们就可以测试使用之前的备份来还原被删除的 minio 资源了,先临时将备份存储位置更新为只读模式(这可以防止在还原过程中在备份存储位置中创建或删除备份对象):

kubectl patch backupstoragelocation default --namespace velero \    --type merge \    --patch '{"spec":{"accessMode":"ReadOnly"}}'

修改 Velero 的存储位置的访问权限为 “ReadOnly”,如下图所示:

现在使用刚才 Velero 创建的备份 "default-backup" 来创建还原任务:

velero restore create --from-backup default-backup

同样可以使用 velero restore get 来查看还原任务的状态,若还原状态是“Completed”,错误数为 0,则说明还原任务完成,还原过程如下图:

还原完成后,可以看到之前被删除的 minio 相关资源已经还原成功了,如下图:

在浏览器上登录 minio 的管理页面,可以看到之前上传的图片数据还在,说明持久卷的数据成功还原,如下图:

还原完成后,不要忘记把备份存储位置恢复为读写模式,以便下次备份任务成功使用:

kubectl patch backupstoragelocation default --namespace velero \   --type merge \   --patch '{"spec":{"accessMode":"ReadWrite"}}'

五、Velero 卸载

若想在集群中卸载 velero,使用下面命令即可完成卸载。

kubectl delete namespace/velero clusterrolebinding/velerokubectl delete crds -l component=velero

六、总结

在本文中,我们简单介绍了 Kubernetes 集群资源备份工具 Velero,展示了如何配置腾讯云对象存储 COS 来作为 Velero 的后端存储,并成功实践了 minio 服务资源和数据的备份和还原操作 。

七、参考

  • Velero 官网:

    https://velero.io/

  • Restic 工具介绍:

    https://github.com/restic/restic

  • Minio 安装:

    https://github.com/minio/charts

  • restic 限制:

    https://velero.io/docs/v1.5/restic/#limitations

electron 使用json作为本地存储_使用腾讯云对象存储 COS 作为 Velero 后端存储,实现集群资源备份和还原...相关推荐

  1. 硅谷课堂 06_整合腾讯云对象存储和课程分类管理

    硅谷课堂第六天-整合腾讯云对象存储和课程分类管理 文章目录 硅谷课堂第六天-整合腾讯云对象存储和课程分类管理 一.讲师管理模块整合腾讯云对象存储 1.腾讯云对象存储介绍 1.1.开通"对象存 ...

  2. 硅谷课堂第五课-腾讯云对象存储和课程分类管理

    硅谷课堂第六天-整合腾讯云对象存储和课程分类管理 文章目录 硅谷课堂第六天-整合腾讯云对象存储和课程分类管理 一.讲师管理模块整合腾讯云对象存储 1.腾讯云对象存储介绍 1.1.开通"对象存 ...

  3. 基于hadoop构建对象存储系统_Hadoop社区正式支持腾讯云对象存储COS

    8月4日消息,知名大数据开源社区Hadoop近日宣布对腾讯云对象存储COS的正式支持.后续,开发者在基于Hadoop架构进行大数据分析时,能够在不修改代码的情况下,无缝高效地使用腾讯云COS来处理海量 ...

  4. 微信小程序基于腾讯云对象存储的图片上传

    在使用腾讯云对象存储之前,公司一直使用的是传统的FTP的上传模式,而随着用户量的不断增加,FTP所暴露出来的问题也越来越多,1.传输效率低,上传速度慢.2.时常有上传其他文件来攻击服务器,安全上得不到 ...

  5. 腾讯云cos html,腾讯云对象存储(COS)插件安装设置图文教程

    腾讯云对象存储(COS)插件是腾讯云官方开发的针对在 wordpress中使用腾讯云对象存储cos的用户开发的辅助插件.通过在 wordpress程序中安装插件的方式,很方便的把WordPress静态 ...

  6. nginx 集群部署_如何备份和还原您的Kubernetes集群资源和持久卷?

    众所周知,Kubernetes可以协调连接在一起,作为一个工作单元,形成高可用性的计算机集群.Kubernetes包含许多抽象概念,这些抽象概念允许将容器化的应用程序部署到集群中,而无需将它们附加到单 ...

  7. 腾讯云对象存储 python_python 云存储

    广告关闭 云服务器1核2G首年99年,还有多款热门云产品满足您的上云需求 存储桶 bucketxml python sdk 存储桶名称由两部分组成:用户自定义字符串 和 appid,两者以中划线&qu ...

  8. redis集群断电数据怎么恢复_如何做到 10T 集群数据安全备份、1GB/s 快速恢复?...

    数据库作为基础设施,其安全性不言而明,因此数据安全备份和恢复功能是在严肃使用场景下的标配.TiDB 作为一款分布式数据库,目前可以满足超大集群的备份恢复的需求,经过测试,10T 数据的备份恢复速度可以 ...

  9. 腾讯云对象存储 python_GitHub - fushall1104/cos-python3-sdk: 腾讯云对象存储服务(cos)Python3.5版本SDK...

    cos-python3-sdk 腾讯云对象存储服务(cos)Python3.5版本SDK *此版本非官方版本 项目进展:开发完成(分片上传待测试) 项目的来由:做基于Django个人网站时,采用了腾讯 ...

最新文章

  1. opencv中ArUco模块实践(1)
  2. web页,如何按回车获得焦点,触发web控件事件..?
  3. C++ Primer 有感(类)
  4. Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据
  5. IDEA 2020.3.2控制台中文乱码分享(亲测二、下图中控制台的编码改为UTF-8)
  6. RabbitMq--1
  7. [译]聊聊C#中的泛型的使用
  8. java 图片不能正常移动_Java,我的图像不会更新/移动
  9. 数组的操作与方法的操作 0303 2101
  10. mysql目录树_MySQL B+树目录及索引优化_mysql
  11. 计算机软件等级认证,中国计算机学会推出软件非专业级别能力认证
  12. Latex中将多个eps图片合并成一幅eps的代码和方法
  13. 激光打标二代激光卡工控机装机指引
  14. C++学生信息管理系统
  15. 大厂程序员手把手教你如何写简历!!(附简历模板)
  16. 防住CV中这颗“不定时炸弹”,有哪些捷径?丨独家公开课实录(4)
  17. css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
  18. 基于51单片机实现继电器控制照明设备(Proteus仿真)
  19. HiCPro安装及使用
  20. 攻防演练 魔兽世界帐号的窃取与防范(转)

热门文章

  1. 利用计算机提出算法分析问题,应用计算机计算不可积类型的积分算法分析
  2. 测试面试必问点【干货】建议收藏!!
  3. js原生ajax跨域请求,封装一个原生js的ajax请求,支持IE9CORS跨域请求
  4. 锂电池电量百分比计算_锂电池充放电理论及电量计算方法设计
  5. linux调用线程函数,作为线程调用的C函数-Linux Userland程序
  6. 厉害了,用python爬取自己的微信朋友
  7. LuckyFrame执行Web自动化用例
  8. Hibenate连接mysql错误_hibernate连接数据库问题,注意是表名的大小写
  9. php检测是否存在敏感词,如何用PHP+Ajax判断是否有敏感词汇
  10. 自建git服务器 ssh,搭建基于SSH的Git服务器