)
Velero × Rook-Ceph 完整指南快速搞定 Kubernetes 数据迁移附跨集群恢复实战【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero昨晚接到一个任务把一个挂了 3 块数据卷的数据库应用从 A 集群搬到 B 集群卷全部建在 Rook-Ceph 上应用和数据要原样落到新集群一次搞定。这类 Kubernetes 数据迁移我手头的常规武器就是 Velero今天拿这个真实任务带你从头走一遍。原理速览Velero 在 Ceph 上如何搬运你的数据先花一分钟建立整体认知后面跟着操作才不晕。整个流程拆成三段打卷快照备份启动后Velero 通过 CSI 快照接口给 CephRBD上的数据卷做快照把数据冻结在某个时间点。搬数据快照就绪后Velero 把快照数据从 Ceph 集群拷贝到对象存储——Rook-Ceph 自带的 RGW 网关本身就兼容 S3 协议可以直接当备份目标用。这一步就是官方说的数据移动保证源集群哪天拆了数据也丢不了。目标端绑定恢复在新集群里恢复应用清单和卷元数据创建全新 PV 并回灌数据最后把 PVC 和新 PV 绑定应用起来。图Velero 卷组快照VGS备份工作流。VGS 就是把一组卷当成一个整体打快照专门解决分布式数据库这类多卷应用的数据一致性问题。环境准备装 Velero、配 Ceph 备份位置和默认快照类 开打之前先备好三样东西。1. 安装 Velero克隆源码直接构建二进制命令很短git clone https://gitcode.com/GitHub_Trending/ve/velero cd velero make build _output/bin/linux/amd64/velero install \ --provider aws \ --bucket velero-backups \ --secret-file ./credentials-velero \ --use-volume-snapshotstrue--provider aws表示备份存储走 S3 协议Ceph RGW 兼容 S3直接选它就对--secret-file放 accesskey/secretkey 的凭据文件--use-volume-snapshotstrue打开卷快照能力。2. 如何把 Ceph 对象存储配置成备份位置建一个 BackupStorageLocation 资源关键全在 spec 里spec: provider: aws objectStorage: bucket: velero-backups config: region: us-east-1 s3ForcePathStyle: true s3Url: http://rook-ceph-rgw-my-store.ceph.svc:80s3Url指向集群内 Rook-Ceph RGW 服务地址s3ForcePathStyle: true让它用路径风格访问集群内 RGW 必备region填什么无所谓与凭据里的一致即可。3. 给 Ceph RBD 设默认快照类快照控制器要求有一个默认 VolumeSnapshotClass否则 VGS 备份会直接失败kubectl annotate volumesnapshotclass ocs-storagecluster-rbdplugin-snapclass \ snapshot.storage.kubernetes.io/is-default-classtrue实战走查从建卷打标到跨集群恢复第一步给数据库的 3 个卷建组打标为什么做不加标签3 块卷会各自打快照时间点不同恢复出来的库可能对不上账。给它们统一打上velero.io/volume-group标签Velero 就会把它们当一个整体原子快照metadata: name: db-data-0 namespace: my-db labels: velero.io/volume-group: db-cluster-1 spec: storageClassName: rook-ceph-block resources: requests: storage: 20Gi第二步执行带数据移动的备份⚡️ 关键在--snapshot-move-datatrue打完快照立刻把数据搬到对象存储备份因此自带数据不再依赖源集群的卷还活着。velero backup create db-backup \ --from-labels appdb \ --snapshot-move-datatrue--from-labels只备份打了appdb标签的资源避免把整个集群都扫一遍。第三步备份完成后如何用 3 条命令验证✅ 备份状态变成 Completed 后三条命令看全貌velero backup get velero backup describe db-backup velero backup logs db-backup重点看日志里每个 DataUpload记录快照上传进度的资源是否都到达 Completed以及错误数是否为 0。第四步在新集群执行跨集群恢复目标集群装好 Velero、指向同一个 Ceph 备份桶后velero restore create --from-backup db-backup \ --namespace-mappings my-db:my-db-restoredVelero 会在目标集群新建 PV、回灌数据再把volumeName写进 PVC 完成绑定——PVC 绑不上卷这种事交给它就好。图Velero 恢复工作流。走数据移动路线时目标端从对象存储拉数据写入新卷而不是回源集群取。第五步校验数据新集群的 Pod 起来后对库的数据文件各跑一遍sha256sum新旧两边一致迁移就算真正落地。常见踩坑速查⚠️ 高频问题一张表过完症状、根因、解法一目了然问题症状根因解法备份日志报SignatureDoesNotMatchCeph RGW 签名算法不是 v4升级到 Ceph 12.2.7 一类支持签名 v4 的版本用原生 Ceph 账户取凭据多卷数据库恢复后数据对不上卷没建组快照时间点错开给相关 PVC 统一打velero.io/volume-group标签恢复后 PVC 一直 Pending目标集群缺同名 StorageClass先在新集群建好 rook-ceph 存储类再恢复VGS 备份失败报找不到快照类没设默认 VolumeSnapshotClass给 RBD 快照类加is-default-class注解小结Velero 在 Rook-Ceph 上能跑通卷快照 → 数据移动 → 跨集群绑定的完整闭环核心就三件事配好 Ceph 备份位置和默认快照类、给多卷应用建组打标、开启数据移动。更多排障细节可以看项目自带的故障排查指南和卷组快照文档。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考