临时将集群 B 中 Velero 备份存储位置也更新为只读模式(非必须,这可以防止在还原过程中 Velero 在备份存储位置中创建或删除备份对象):
kubectl patch backupstoragelocation default --namespace velero \ --type merge \ --patch '{"spec":{"accessMode":"ReadOnly"}}'提示:可以选择指定在还原期间或还原资源后执行自定义 Hook 操作。例如,可能需要在数据库应用程序容器启动之前执行自定义数据库还原操作。 有关还原 Hook 的更多信息请参阅 还原 Hook。
在还原操作之前,需确保集群 B 中 的 Velero 资源与云存储中的备份文件同步。默认同步间隔是1分钟,可以使用--backup-sync-period 来配置同步间隔。可以使用下面命令查看集群 A 的备份是否已同步:
velero backup get <BACKUP-NAME>获取备份成功检查无误后,执行下面命令还原所有内容到集群 B 中:
velero restore create --from-backup <BACKUP-NAME>本示例执行还原过程如下图:
等待还原任务完成后查看还原日志, 可以使用下面命令查看还原是否有报错和跳过信息:
# 查看迁移时是否有错误的还原信息 velero restore logs <BACKUP-NAME> | grep error # 查看迁移时跳过的还原操作 velero restore logs <BACKUP-NAME> | grep skip从下图可以看出没有发生错误的还原步骤,但是有很多 “skipped” 步骤,是因为我们在备份集群资源时备份了不包含 velero 命名空间的所有集群资源,有一些同类型同名的集群资源已经存在了,如 kube-system下的集群资源,当还原过程中有资源冲突时,velero 会跳过还原的操作步骤。所以实际上还原过程是正常的,可以忽略这些 “skipped” 日志,假如有特殊情况可以分析下日志看看。
迁移结果核验查看校验集群 B 执行迁移操作后的集群资源,可以看到 default 、default2 命名空间下的 pods 和 PVC 资源已按预期迁移成功:
再通过 Web 管理页面登录集群 B 中的 monio 服务,可以看到 minio 服务中的图片数据没有丢失,说明持久卷数据也已按预期迁移成功。
至此,我们完成了 TKE 集群间资源的迁移,迁移操作完成后,请不要忘记把备份存储位置恢复为读写模式(集群 A 和 集群B),以便下次备份任务可以成功使用:
kubectl patch backupstoragelocation default --namespace velero \ --type merge \ --patch '{"spec":{"accessMode":"ReadWrite"}}' 总结本文主要介绍了在 TKE 集群间使用 Velero 迁移集群资源的原理、注意事项和操作方法,成功的将示例集群 A 中的集群资源无缝迁移到集群 B 中,整个迁移过程非常简单方便,是一种非常友好的集群资源迁移方案。
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!