前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Velero 进行集群备份与迁移

使用 Velero 进行集群备份与迁移

作者头像
郭旭东
发布2020-12-30 12:58:53
2K0
发布2020-12-30 12:58:53
举报
文章被收录于专栏:云原生工具箱云原生工具箱

前言

在近日的一个风和日丽的下午,正在快乐的写 bug 时,突然间钉钉就被 call 爆了,原来是 k8s 测试集群的一个 namespace 突然不见了。这个 namespace 里面有 60 多个服务,瞬间全部没有了……虽然得益于我们的 CI/CD 系统,这些服务很快都重新部署并正常运行了,但是如果在生产环境,那后果就是不可想象的了。在排查这个问题发生的原因的同时,集群资源的灾备和恢复功能就提上日程了,这时 Velero 就出现了。

Velero

Velero 是 VMWare 开源的 k8s 集群备份、迁移工具。可以帮助我们完成 k8s 的例行备份工作,以便在出现上面问题的时候可以快速进行恢复。同时也提供了集群迁移功能,可以将 k8s 资源迁移到其他 k8s 集群的功能。Velero 将集群资源保存在对象存储中,默认情况下可以使用 AWS、Azure、GCP 的对象存储,同时也给出了插件功能用来拓展其他平台的存储,这里我们用到的就是阿里云的对象存储 OSS,阿里云也提供了 Velero 的插件,用于将备份存储到 OSS 中。下面我就介绍一下如何在阿里云容器服务 ACK 使用 Velero 完成备份和迁移。

Velero 地址:https://github.com/vmware-tanzu/velero ACK 插件地址:https://github.com/AliyunContainerService/velero-plugin

下载 Velero 客户端

Velero 由客户端和服务端组成,服务器部署在目标 k8s 集群上,而客户端则是运行在本地的命令行工具。

  • 前往 Velero 的 Release 页面 下载客户端,直接在 GitHub 上下载即可
  • 解压 release 包
  • 将 release 包中的二进制文件 velero 移动到 $PATH 中的某个目录下
  • 执行 velero-h 测试

创建 OSS bucket

创建一个 OSS bucket 用于存储备份文件,这里也可以用已有的 bucket,之后会在 bucket 中创建 backupsmetadatarestores三个目录,这里建议在已有的 bucket 中创建一个子目录用于存储备份文件。

创建 OSS 的时候一定要选对区域,要和 ACK 集群在同一个区域,存储类型和读写权限选择标准存储私有

创建阿里云 RAM 用户

这里需要创建一个阿里云 RAM 的用户,用于操作 OSS 以及 ACK 资源。

  • 新建权限策略

策略内容:

  • 新建用户 在新建用户的时候要选择 编程访问,来获取 AccessKeyIDAccessKeySecret,这里请创建一个新用于用于备份,不要使用老用户的 AK 和 AS。

部署服务端

  • 拉取 Velero 插件 到本地
  • 配置修改
    1. 修改 install/credentials-velero 文件,将新建用户中获得的 AccessKeyIDAccessKeySecret 填入,这里的 OSS EndPoint 为之前 OSS 的访问域名(注:这里需要选择外网访问的 EndPoint。):
    1. 修改 install/01-velero.yaml,将 OSS 配置填入:
    1. k8s 部署 Velero 服务
    1. 测试 Velero 状态

    可以看到 Velero 的客户端和服务端已经部署成功。

    1. 服务端清理 在完成测试或者需要重新安装时,执行如下命令进行清理

备份测试

velero-plugin 项目中已经给出 example 用于测试备份。

集群迁移

迁移方法同备份,在备份后切换集群,在新集群恢复备份即可。

高级用法

  • 定时备份 对集群资源进行定时备份,则可在发生意外的情况下,进行恢复(默认情况下,备份保留 30 天)。

定时备份的名称为:<SCHEDULENAME>-<TIMESTAMP>,恢复命令为:velero restore create--from-backup<SCHEDULE NAME>-<TIMESTAMP>

  • 备份删除 直接执行命令进行删除
  • 备份资源查看
  • 备份排除项目 可为资源添加指定标签,添加标签的资源在备份的时候被排除。

问题汇总

时区问题

进行定时备份时,发现备份使用的是 UTC 时间,并不是本地时间,经过排查后发现是 velero 镜像的时区问题,在调整后就会正常定时备份了,这里我重新调整了时区,直接调整镜像就好,修改 install/01-velero.yaml 文件,将镜像替换为 registry-vpc.cn-shanghai.aliyuncs.com/keking/velero:latest

版本问题

截止发稿时,Velero 已经发布了 v1.2.0 版本,目前 ACK 的 Velero 的插件还未升级。

结语

近日正好有 k8s 集群服务迁移服务的需求,使用 Velero 完成了服务的迁移,同时也每日进行集群资源备份,其能力可以满足容器服务的灾备和迁移场景,实测可用,现已运行在所有的 k8s 集群。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Velero
    • 下载 Velero 客户端
      • 创建 OSS bucket
        • 创建阿里云 RAM 用户
          • 部署服务端
            • 备份测试
              • 集群迁移
                • 高级用法
                  • 问题汇总
                    • 时区问题
                    • 版本问题
                • 结语
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档