拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Velero + Rook-Ceph 数据迁移:从环境自检到跨集群恢复的完整实操

Velero Rook-Ceph 数据迁移从环境自检到跨集群恢复的完整实操【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/veleroVelero 是 Kubernetes 应用的备份迁移工具Rook-Ceph 是集群里的 Ceph 存储RGW 管对象存储RBD 管块存储。这篇实操文带你走完全流程环境体检、BSL 备份通道、多卷一致性快照、跨集群数据恢复文末附翻车速查与验收清单。迁移前把环境体检做扎实跑第一条备份之前把下面四项做完。之所以先体检是因为这四类问题都会在备份的第一次请求或恢复的最后一刻才暴露排查成本高。检查项做什么为什么RADOS 版本ceph -v确认 v12.2.7 及以上旧版本不支持 sigv4 签名算法备份第一次请求就会失败签名算法确认 RGW 网关启用 sigv4sigv4 是 S3 新一代签名算法老的 sigv2 请求会被 RGW 直接拒掉报 SignatureDoesNotMatchCSI 驱动一致性PVC 的 StorageClass 与快照类来自同一个 CSI 驱动CSI 驱动是 K8s 对接存储的组件两个类来自不同驱动快照创建会直接失败默认 VolumeSnapshotClass给 RBD 快照类打上is-default-class: true注解快照控制器在不指定类时会取默认类缺了它 VGS 备份会失败同时确认你已装好 velero CLI并能用 kubeconfig 访问集群。备份通道搭建对象存储 BSL 三要素BSLBackupStorageLocation是 Velero 访问 Ceph 对象存储备份目标的地址卡。最容易配错的是三个字段regionS3 请求里要带区域标识。RGW 其实不校验它但字段不能空填us-east-1即可。s3UrlRGW 的访问入口指向 Rook-Ceph 在集群内暴露的 Service 地址。s3ForcePathStyle控制桶名是放在路径里还是域名里。设为true相当于告诉客户端别猜路径按老规矩拼 URL。之所以必须设 true是因为 RGW 不支持 virtual-hosted-style桶名放域名那种拼法。# kind: BackupStorageLocation位于 velero 命名空间 spec: provider: aws objectStorage: bucket: velero-backups # 桶需提前建好 config: region: us-east-1 s3ForcePathStyle: true s3Url: http://rgw-service:80应用后用velero backup-storage-locations get确认状态为Available状态不对时备份参数再正确也上传不了。多卷一致性给一组 PVC 同时按下快门 分布式数据库往往挂多个 PVCPersistentVolumeClaim卷的申请单。逐个快照两次快照之间落下的写入会把数据撕开所以要用 VGSVolume Group Snapshot让 CSI 驱动在同一时刻给同一组 PVC 创建快照相当于给整组数据库同时按下快门。用法是把同一逻辑组的 PVC 打上统一标签metadata: name: db-data-0 labels: velero.io/volume-group: db-cluster-1备份包含这些 PVC 时Velero 会自动分组并创建 VolumeGroupSnapshot。真正搬数据的动作由 Velero 的 Data Mover Plugin 负责建完快照后写一条 DataUpload CR由节点上的 Node-Agent 把快照卷暴露出来并上传数据。图VGS 备份工作流。Data Mover Plugin 创建快照后写入 DataUpload CRNode-Agent 内的 Exposer 暴露快照卷Uploader 经 UnifiedRepo 接口把数据写入 Backup Repository。把数据搬过去快照数据移动与跨集群恢复创建备份时加上--snapshot-move-datatrue。之所以加这个参数是因为默认备份只记录快照引用——目标集群不共享同一套 Ceph 时这份引用就是个空壳。开启后 Velero 会把卷快照的数据真正拷进备份仓库RGW这就是 Kubernetes 卷快照跨集群迁移的关键一步。velero backup create db-backup --include-namespaces my-db --snapshot-move-datatrue velero restore create --from-backup db-backup --namespace-mappings my-db:my-db-restore--namespace-mappings负责恢复时改写命名空间。至于 PVC 的volumeName绑定你不用手动处理恢复流程里 Data Mover Plugin 会把 PVC 的 volumeName 指向目标集群的新卷CSI 驱动随后自行完成 PV/PVC 绑定。图跨集群恢复工作流。Data Mover Plugin 为 PVC 设置 VolumeName 后创建 DataDownload CRNode-Agent 处理数据下载Uploader 从 Backup Repository 取数写入 Target VolumePVC 与新建 PV 完成绑定。翻车现场速查 三种高频报错按现象 → 根因 → 一句话修复整理现象根因一句话修复备份日志刷 SignatureDoesNotMatchRGW 网关只认 sigv4客户端却用 sigv2 签名把 RADOS 升到 12.2.7确认 RGW 启用 v4 签名目标集群 PVC 一直 Pending纯元数据备份没搬数据新 PV 无数据可绑用--snapshot-move-datatrue重新备份并核对目标集群 CSI 驱动VolumeGroupSnapshot 卡在 Creating快照类与 PVC 的 StorageClass 不是同一个 CSI 驱动两个类统一到同一 CSI 驱动并配好默认快照类迁移验收清单 BSL 状态为Available备份作业跑完且无报错备份里含完整的 VolumeGroupSnapshot组内每个 PVC 都有快照快照数据已真实上传仓库搬的是数据不只是引用目标集群所有 PVC 处于 Bound业务 Pod Running业务侧抽查核心数据新旧集群内容一致velero restore describe中无 Failed 项如果还遇到更冷门的报错可以对照仓库里的 troubleshooting 文档里面有更细的分症状排查条目。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门