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 和 互联网服务。若需要创建 TKE 集群,请参考创建集群

二、配置存储

1、创建 COS 存储桶

在 COS 控制台为 Velero 创建一个对象存储桶来存储备份 ,创建存储桶请参阅 COS 创建存储桶 使用说明 。

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

1、公共权限设置:为了安全起见,推荐存储桶权限类别为私有读写,关于公共权限的说明,请参见存储桶概述中的权限类别)。

2、用户权限设置:主账号默认拥有存储桶所有权限(即完全控制),另外 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 :

三、安装 Velero

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

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

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

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

参数说明:

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

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

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

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

--use-restic:使用开源免费备份工具 restic 备份和还原持久卷数据。Velero 支持使用免费开源备份工具 restic 备份和还原 Kubernetes 存储卷数据 (不支持 hostPath 卷,详情请参阅 restic限制),这种集成是 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 更多安装介绍请参阅 Velero ⽂档

四、Velero 备份还原测试

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

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

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

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

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

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

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

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

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

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

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

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

五、Velero 卸载

若想在集群中卸载 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

使用腾讯云对象存储 COS 作为 Velero 后端存储,实现集群资源备份和还原的更多相关文章

  1. 使用 Velero 跨云平台迁移集群资源到 TKE

    概述 Velero 是一个非常强大的开源工具,可以安全地备份和还原,执行灾难恢复以及迁移Kubernetes群集资源和持久卷,可以在 TKE 平台上使用 Velero 备份.还原和迁移集群资源,关于如 ...

  2. Docsify+腾讯云对象存储 COS,一键搭建云上静态博客

    最近一直在想如何利用 COS 简化静态博客的搭建过程.搜了很多的静态博客搭建过程,发现大部分的静态博客都要通过编译才能生成静态页面.功夫不负有心人,终于让我找到了一个超简洁博客的搭建方法. 效果预览 ...

  3. 腾讯云对象存储 COS搭建个人网站

    腾讯云对象存储 COS搭建个人网站,简单易操作,方便快捷.   只需要将你的网站资源上传即可,然后设置上你的自定义 CDN 加速域名,一个个人网站就上线啦!当然,你也可以不用设置自定义 CDN 加速域 ...

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

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

  5. php 腾讯云 对象存储V5版本 获取返回的上传文件的链接方法

    腾讯云 对象存储V5版本 文档地址:https://github.com/tencentyun/cos-php-sdk-v5 调用简单文件上传方法: 返回数据如下 Array ( [data:prot ...

  6. Laravel项目使用腾讯云对象存储上传图片(cos-php-sdk-v5版本)

    为了加快网站访问速度.降低网站负载,现在越来越多的网站选择把图片等静态文件放在云上,这里介绍一下腾讯云对象存储在Laravel项目中的使用 1.申请腾讯云对象存储.创建Bucket.获取APPID等参 ...

  7. 浅谈云原生基础入坑与docker 搭建redis-cluster集群

    浅谈云原生基础入坑与docker 搭建redis-cluster集群 开篇来点自己的小感触:自从走上后端开发这条无法回头的互卷道路以后,在视野内可见新的技术在迭代,更新的技术在不断发行.就拿最近的Op ...

  8. 用更云原生的方式做诊断|大规模 K8s 集群诊断利器深度解析

    背景 通常而言,集群的稳定性决定了一个平台的服务质量以及对外口碑,当一个平台管理了相当规模数量的 Kubernetes 集群之后,在稳定性这件事上也许会"稍显被动". 我们可能经常 ...

  9. 腾讯云对象存储COS新品发布——智能分层存储,自动优化您的存储成本

    近日,腾讯云正式发布对象存储新品--智能分层存储,能够根据用户数据的访问模式,自动地转换数据的冷热层级,为用户提供与标准存储一致的低延迟和高吞吐的产品体验,同时具有更低的存储成本. 熟悉数据存储的用户 ...

  10. 腾讯云--对象存储cos绑定自定义域名

    1.登录腾讯云控制台,找到对象存储一栏 2.选择一个你想绑定域名的存储桶 3.进入你选择的存储桶,点击域名管理 4.选择自定义源站域名.在域名处填写你要设置的自定义域名,在源站类型处选择静态网站源站, ...

随机推荐

  1. markdown公式关系符

  2. 【赵渝强老师】Flink的DataSet算子

    Flink为了能够处理有边界的数据集和无边界的数据集,提供了对应的DataSet API和DataStream API.我们可以开发对应的Java程序或者Scala程序来完成相应的功能.下面举例了一些 ...

  3. 八字五行强弱喜用神测算api免费接口_json数据格式_可计算五行打分强弱

    八字以木.火.土.金.水去分析其旺弱,而分析之法以月令地支最为有力,其次为时支,再次为日支,最弱为年支,而天干必须见地支有同类或有生自己的五行才有用,因为只有天干一个单独的五行,其力会弱至无用.这个接 ...

  4. git 设置代理和取消代理

    1.设置代理 git config --global http.proxy "127.0.0.1:1080" 2.取消代理 git config --global --unset ...

  5. Vue-Router 是干什么的,原理是什么?

    传统的项目中,页面的切换和跳转使用的是超链接实现,但是目前的SPA 是基于组件和路由实现的,页面的切换和跳转是由路由机制完成,区别是更新了视图但不重新请求页面: 原理是把url 和组件之间建立映射关系 ...

  6. Vue中如何自定义过滤器 ?

    过滤器可以格式化我们所需要的数据格式  : 自定义过滤器分为全局和局部过滤器: 全局过滤器在 main.js 中使用 Vue.direct4ive( 过滤器名字,定义过滤器的具体行为函数 ) : 局部 ...

  7. npm install报错 SyntaxError: Unexpected end of JSON input while parsing near '...=GmVg\r\n-----END PGP'

    解决方法:  npm cache clean --force 然后重新执行:npm install即可

  8. KubeSphere 在互联网电商行业的应用实践

    来自社区用户(SRE运维手记)投稿 背景 在云原生的时代背景下,Kubernetes 已经成为了主流选择.然而,Kubernetes 的原生操作复杂性和学习曲线较高,往往让很多团队在使用和管理上遇到挑 ...

  9. 云原生周刊:Istio 加入 Phippy 家族 | 2024.3.18

    开源项目推荐 ko "ko" 是一个用于构建和部署 Go 应用程序的简单.快速的容器镜像构建工具.它适用于那些镜像中只包含单个 Go 应用程序且没有或很少依赖于操作系统基础镜像的情 ...

  10. 在 KubeSphere 中开启新一代云原生数仓 Databend

    作者:尚卓燃(https://github.com/PsiACE),Databend 研发工程师,Apache OpenDAL (Incubating) PPMC. 前言 Databend 是一款完全 ...