暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

阿里云 ACK 应用备份 (公测版)初体验

Velero中文社区 2021-06-22
624

阿里云ACK 在几个月前上线了 kubernetes (K8S) 应用备份-公测版,该功能是基于开源项目 Velero 开发的一款产品,用来对 K8S 集群中的应用和持久卷提供:

  1. 备份和恢复

  2. 容灾

  3. 迁移

先来说说体验感受

体验感受

  • 通过ACS console提供基于Velero的应用和数据备份 功能,简化了用户日常通过使用velero命令行的方式来备份和恢复数据。

  • 目前该应用备份尚处于公测版本,从稳定性角度,仍然需要进一步提高来满足日常运维的需要。

  • 当前版本只针对单个ACS 集群提供备份和恢复服务,尚未提供容灾迁移功能。

下面通过示例的方式来了解该应用备份功能。

前提条件

  • 通过工单申请开通应用备份公测版

  • 创建ACK K8S集群

  • 创建OSS bucket资源并授权ACK K8S 集群 OSS读写权限 用于应用备份

安装步骤

  1. 在容器服务-Kubernetes 下选择指定ACK集群

  2. 在左侧运维管理菜单中选择 应用备份(公测)

  3. 在页面 "安装组件",点击 开始安装 按钮,进行 Velero 组件安装;

  4. 安装成功后,右侧会显示如下应用备份管理界面

配置备份仓库

  • 安装结束后,需要先创建一个备份仓库 (目前仅支持 OSS), 选择前提条件中配置的 OSS bucket 填写对应的 bucket 信息

  • 备份仓库创建成功后,确保对应的状态为 Available ;

  • 如果状态为 "Unavailable", 可以通过 kubectl -n velero logs velero-xxx
    来查看 velero log 进行排错

部署应用实例

使用经典的wordpress + mysql 有状态应用作为 应用备份的测试用例。

  1. 参考 https://github.com/jibutech/examples/blob/master/mysql-wordpress-pd/wordpress-mysql-acs-pvc.yaml 在ACS 集群中部署应用  kubectl apply -f https://raw.githubusercontent.com/jibutech/examples/master/mysql-wordpress-pd/wordpress-mysql-acs-pvc.yaml

  2. 在ACS console 选择 网络 -> 路由,创建 访问 wordpress 所需的 ingress 服务,如下


  3. 通过 ingress URL 安装 wordpress,并且创建一篇 blog 作为应用数据

备份

  1. 在 ACS console 应用备份界面, 选择备份并创建, 选择之前添加的 OSS 备份仓库,指定备份命名空间,此处为 wordpress

  2. 选择 开启 备份存储卷 来备份 wordpress 和 mysql 中的应用数据。此处选择 restic 文件系统进行数据复制 (云盘快照测试失败)

  3. 创建完 备份请求后,等待备份状态变成 Completed
     表示备份成功 (两次尝试后成功)

恢复

  1. 删除 wordpress 命名空间,模拟数据丢失场景

    [root@k8smaster ~]# kubectl delete ns wordpress
    namespace "wordpress" deleted
  2. 在 ACS console 应用备份界面,选择恢复,从备份列表选择已完成的备份名称,进行恢复

  3. 创建完 恢复请求后, 等待恢复状态变成 Completed
    表示恢复成功 (此处示例中虽为PartiallyFailed,但实际应用和数据恢复成功)

  4. 访问之前的 ingress URL, 验证恢复的数据正确

问题

  • snapshot 备份失败

  • 从web 界面 删除  backup 失败

    • 通过 kubectl -n velero delete backups.velero.io wordpress-backup
      删除velero backup 资源后,backup 资源会重新创建

  • 安装成功后,刷新 应用备份 页面,仍然提示 需要 安装组件

    • 关闭页面,重新选择ACS 集群,选择运维管理,进入应用备份 页面

  • 恢复完成,但恢复状态显示为 PartiallyFailed


问题调试

应用备份服务 在ACS K8S 环境中 安装 Velero 命令空间以及响应的 restic pods 来实现 K8S 中应用和存储卷的备份以及恢复功能。通过以下命令可以查看当前 velero 和备份/恢复资源

kubectl -n velero get backups.velero.io test-wp-backup -o yaml
kubectl -n velero get backupstoragelocations.velero.io
kubectl -n velero get restores.velero.io restore-wp -o yaml
kubectl -n velero logs velero-c4dbd9dc7-nlqfz velero > velero.log

更多调试方法,请参考 velero troubleshoot



更多velero相关技术讨论,敬请关注velero中文社区官方网站:

https://velero.cn/

文章转载自Velero中文社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论