大象盒子
从这里,品行业,感世界

帆船velero

1. 准备


1.1 镜像

  • velero:用于部署工具集
  • velero-plugin-for-aws: 用于velero 备份恢复对象与对象存储集成
  • minio:用于构建临时对象存储

1.2 二进制 

  • velero:命令行工具


2. 部署


2.1 部署minio
2.2 部署velero

  • 选择版本 1.6.3
  • 镜像打包为混合镜像
  • 拷贝二进制到/usr/local/bin 
  • 命令行初始化
  • yaml初始化 --dry-run -o yaml > velero_install.yaml
  • 验证: k get all -n velero/velero get backup-locations
  • 绑定镜像secret k edit deploy velero -n velero/ 设置imagepullsecret


3. 功能验证


3.1 备份/恢复指定namespace

  • 查看namespace下面已有资源 k get all -n test
  • 使用velero备份该ns下面的所有资源 velero backup create test-ns-bak --include-namespaces test
  • 验证backup velero get backups 查看status是否为completed
  • 恢复备份数据 velero restore create --form-backup test-ns-bak

3.2 备份/恢复指定selector标签资源

  • 查看deployment,并对其打标签:k label deployment test-deployment applicationName=backupBySelector labeled
  • 通过velero按标签进行备份 velero backup create bak-label --selector applicationName=backupBySelector
  • 查看backup velero get backups
  • 删除该deployment资源 k delete deploy test-deployment
  • 恢复deployment velero restore create --from-backup=bak-label

3.3 备份/恢复 ns指定资源类型

  • 备份deployment velero backup create bak-resource --include-resources deployment --include-namespace test
  • 查看备份 velero get backups
  • 删除ns所有deployment 进行恢复  velero restore create --from-backup bak-resource
  • 查看是否恢复完成 k get deployment -n test

3.4 备份恢复 按schedule cron

  • 每5分钟备份一次ns下面的service
  • velero schedule create bak-schedule --schedule="* /5 * * * *" --include-namespace test --include-resources services --ttl 24h
  • 查看schedule velero get schedule
  • 查看备份 k get backup -n velero
  • 验证恢复上面的备份service 先删除所有ns下的service velero restore create --from-backup bak-schedule-2025xxxx
  • 查看是否恢复成功 k get service -n test
  • 另外一种恢复方法:velero restore create --from-schedule bak-schedule 通过schedule来恢复

3.6 备份/恢复 当前集群

  • 创建备份任务 velero backup create testCluster-all-bak
  • 查看备份任务状态 velero backup get testCluster-all-bak
  • 验证恢复  velero restore create --from-backup testCluster-all-bak
  • 查看恢复状态  velero restore get testCluster-all-bak

3.7 备份/恢复 按schedule备份集群

  • 按照schedule方式,每小时创建一个集权级的备份任务
  • velero schedule create cluster-backup-cron --schedule="0 * * * *" --ttl 24h
  • 查看backup velero get backups 
  • 删除一个ns验证恢复 velero restore --from-schedule cluster-backup-cron --include-namespaces test --wait
  • 查看恢复状态 velero get restore

3.8 备份/恢复 跨集群

  • 在集群a中创建备份任务,在集群b中进行恢复
  • 集群a创建备份任务 velero create backup backup-all
  • 备份完后查看备份状态 velero get backups
  • 集群b中查看backups k get backup -n velero,集群b可以看到a的备份任务
  • 集群b恢复集群a创建的备份 通过yaml恢复
apiversion: velero.io/v1
kind:Restore 
metadata: 
  name: restore-cluster
  namespace: velero 
spec: backupName:backup-all

  • k apply -f resotere-cluseter.yaml
  • k get restore -n velero
  • 验证: k describe restore -n velero 完成后,可以查看deployment和pod是否与集群a一致


4.API接口


4.1 核心API 

  • backup 定义并触发一次备份任务
  • restore 定义并触发一次恢复任务 
  • schedule 定义周期性的备份任务
  • downloadrequest 获取备份数据下载链接
  • deleteBackupRequest 彻底删除备份
  • backupstoragelocation 定义基础设施配置


5. 参考文档



大象盒子 TM

成都市高新区天府软件园G5栋3层
gongxj@xcentiot.com
186-2824-6831