本文分享自华为云社区《Kurator v0.5.0正式发布! 打造统一的多集群备份与存储体验》,作者: 云容器大未来 。
Kurator 是由华为云推出的开源分布式云原生套件。面向分布式云原生场景,Kurator 旨在为用户提供一站式的解决方案,帮助用户快速构建自己的分布式云原生平台。
在最新发布的 v0.5.0 版本中,Kurator 强化了其在多集群环境中的应用备份与恢复,以及存储管理的功能,以满足用户对于复杂部署的需求。本次更新主要包括以下两项新特性:
- 统一集群备份恢复与迁移:Kurator 现在支持一键定制化的备份与恢复多个集群中的应用和资源,并通过统一视图实时监控各集群的进度;同时,还支持跨集群资源的一键迁移功能。
- 统一分布式存储:Kurator 实现了一致性的分布式存储解决方案,其一站式部署让用户在多集群环境下轻松实现块存储、文件存储和对象存储的应用。
统一集群备份恢复与迁移
在多云和分布式环境的持续演变中,数据的安全性与可恢复性已经成为用户高度关注的问题。对于企业来说,数据丢失往往是一个难以承受的打击,可能导致严重的业务中断和信誉损失。在以 Kubernetes 为行业标准的环境中,伴随着服务数量和集群规模的增长,数据管理的复杂度也随之增加,这使得实施高效而灵活的备份策略变得尤为重要。
面对这种需求的不断扩大和挑战的增加,传统的备份工具往往在多环境下展现出局限性,难以提供一个无缝的统一解决方案。因此,Kurator 的统一备份方案应运而生,旨在提供这一领域的备份解决方案。基于 Velero (https://velero.io/) ,Kurator 为用户提供了一键式的操作体验,可以自定义备份并恢复横跨多个集群的应用与资源。通过 Kurator 提供的统一视图功能,用户能够实时监控各个集群备份的状态和进度。其覆盖范围涵盖了从 Pod、Deployment、Service 等 Kubernetes 原生资源,到 PersistentVolumes(PVs)等持久化存储的备份和恢复,以满足现代企业多元化的数据保护需求。
统一备份
Kurator 在备份解决方案上提供了多样化的选择,以适应不同场景下的数据保护需求。其灵活性确保了不同业务场景下都能找到合适的备份策略。
- 即时备份: 面对数据频繁变动的情形,“即时备份”能够迅速地提供保护,确保关键数据在关键时间点的完整性得以保持。
- 定期备份:对于那些不太频繁变动,但同样需要确保持久性的数据,“定期备份”可以根据预设的时间周期性的自动执行备份,以满足合规性要求和保障数据安全。
此外,Kurator 还提供了一系列高度定制化的备份选项。例如,“特定集群备份”允许运维团队基于策略或特定需求有选择性地备份特定集群。“资源过滤”功能则提供了细粒度的控制,使管理员能够根据资源的名称、命名空间或标签等属性来精确定义备份的范围。
这些备份策略的多样性和自动化能力为用户在不断变化的业务需求中,提供了稳定和可靠的数据保护。
接下来是一个统一备份的实际操作示例:
apiVersion: backup.kurator.dev/v1alpha1 kind: Backup metadata: ... name: select-labels namespace: default spec: destination: fleet: quickstart policy: resourceFilter: labelSelector: matchLabels: app: busybox ttl: 720h status: backupDetails: - backupNameInCluster: kurator-member1-backup-default-select-labels backupStatusInCluster: completionTimestamp: "2023-10-28T03:37:13Z" expiration: "2023-11-27T03:37:07Z" formatVersion: 1.1.0 phase: Completed progress: itemsBackedUp: 1 totalItems: 1 startTimestamp: "2023-10-28T03:37:07Z" version: 1 clusterKind: AttachedCluster clusterName: kurator-member1 - backupNameInCluster: kurator-member2-backup-default-select-labels backupStatusInCluster: completionTimestamp: "2023-10-28T03:37:13Z" expiration: "2023-11-27T03:37:07Z" formatVersion: 1.1.0 phase: Completed progress: {} startTimestamp: "2023-10-28T03:37:07Z" version: 1 clusterKind: AttachedCluster clusterName: kurator-member2 ...
观察 spec 配置,可以看到备份的目标是位于 Fleet 中各集群内所有标有 app:busybox 标签的资源。通过在 spec 中配置策略的方式,可以确保相关的资源得到备份。在 status 中,可以实时追踪到备份任务在每个集群,如 kurator-member1 和 kurator-member2,的执行状况,保持了操作的透明度。
🔗 更多的示例和细节,请参考: https://kurator.dev/docs/fleet-manager/backup/backup/
统一恢复
基于统一备份产生的备份数据,Kurator 通过统一恢复功能支持跨集群的应用和资源恢复。
- 针对即时备份恢复:依据“即时备份”创建的备份数据,可以快速恢复至指定关键时刻的状态。
- 针对定期备份恢复: 针对“定期备份”,Kurator 支持将备份数据恢复到最近一次成功执行备份的时间点。
类似备份功能,Kurator 在恢复方面也提供了多样化和定制化的选项。例如,“特定集群恢复”使得用户能够只将数据恢复到指定集群,而不必覆盖所有备份中包含的集群。“资源过滤”功能则允许用户对备份数据进行进一步筛选,只选择性地恢复需要的数据项。用户可以根据备份名称、命名空间或标签等属性来定义恢复的范围,这不仅提升了恢复过程的灵活性,也确保了高度的精确性。
参阅以下操作示例,了解如何使用 Kurator 进行统一恢复:
apiVersion: backup.kurator.dev/v1alpha1 kind: Restore metadata: ... name: minimal namespace: default spec: backupName: select-labels status: restoreDetails: - clusterKind: AttachedCluster clusterName: kurator-member1 restoreNameInCluster: kurator-member1-restore-default-minimal restoreStatusInCluster: completionTimestamp: "2023-10-28T09:24:07Z" phase: Completed progress: itemsRestored: 2 totalItems: 2 startTimestamp: "2023-10-28T09:24:05Z" - clusterKind: AttachedCluster clusterName: kurator-member2 restoreNameInCluster: kurator-member2-restore-default-minimal restoreStatusInCluster: completionTimestamp: "2023-10-28T09:24:07Z" phase: Completed progress: itemsRestored: 2 totalItems: 2 startTimestamp: "2023-10-28T09:24:05Z" ...
通过检查恢复任务的 spec 配置,我们可以确定本次恢复操作是针对前文提到的、标记为 select-labels 的备份数据。这里使用了最低配置,不进行恢复的筛选,直接根据备份的配置进行恢复。在 status 中,同样可以实时追踪到恢复任务在每个集群的执行状况。
🔗 更多的示例和细节,请参考: https://kurator.dev/docs/fleet-manager/backup/restore/
统一迁移
统一迁移旨在简化将应用程序及其资源从一个集群迁移到其他多个集群的过程。用户需要定义一种 migrate 类型的资源配置,并指定源集群、目标集群及相关策略。此外,类似于 Kurator 的统一备份和恢复功能,用户同样可以进行丰富的定制化配置。
配置完成之后,Kurator 相应的控制器便会自动启动迁移任务。这一系列任务包括将资源从源集群上传到对象存储,以及最终迁移到指定的目标集群。具体的迁移过程可参考以下示意图:
Kurator 统一迁移流程图
相较于使用 Velero,Kurator 提供了一个更为集成和清晰的迁移流程描述。所有必要的配置细节都集中在单一的 migrate 对象中,从而减少了随着目标集群数量增加而产生的配置负担。同时,Kurator自动管理从创建备份到完成迁移的全过程,简化了操作流程,降低了手动操作错误的风险。此外,用户还可以通过这一个对象来实时监控多个集群中的迁移进度,随时了解迁移的最新状态,确保整个流程按预期执行。
接下来是一个统一迁移的实际操作示例:
apiVersion: backup.kurator.dev/v1alpha1 kind: Migrate metadata: ... name: select-labels namespace: default spec: policy: resourceFilter: labelSelector: matchLabels: app: busybox sourceCluster: clusters: - kind: AttachedCluster name: kurator-member1 fleet: quickstart targetCluster: clusters: - kind: AttachedCluster name: kurator-member2 fleet: quickstart status: conditions: - lastTransitionTime: "2023-10-28T15:55:23Z" status: "True" type: sourceReady phase: Completed sourceClusterStatus: backupNameInCluster: kurator-member1-migrate-default-select-labels backupStatusInCluster: completionTimestamp: "2023-10-28T15:55:18Z" expiration: "2023-11-27T15:55:13Z" formatVersion: 1.1.0 phase: Completed progress: {} startTimestamp: "2023-10-28T15:55:13Z" version: 1 clusterKind: AttachedCluster clusterName: kurator-member1 targetClusterStatus: - clusterKind: AttachedCluster clusterName: kurator-member2 restoreNameInCluster: kurator-member2-migrate-default-select-labels restoreStatusInCluster: completionTimestamp: "2023-10-28T15:56:00Z" phase: Completed startTimestamp: "2023-10-28T15:55:58Z" ...
在 spec 配置中,源集群设置为 kurator-member1,目标集群为 kurator-member2,迁移过程仅针对包含标签 app:busybox 的资源。在 status 中,迁移阶段 Phase 显示为 Completed,表明迁移操作已完成。sourceClusterStatus 和 targetClusterStatus 分别提供源集群资源的备份细节和目标集群资源的恢复情况。
🔗 更多的细节,请参考: https://kurator.dev/docs/fleet-manager/backup/migrate/
统一分布式存储
分布式存储作为现代云原生架构中不可或缺的一部分,提供了数据的可扩展性和可靠性。然而,在不同集群间实现一个一致的分布式存储解决方案,往往涉及到复杂的配置和管理工作。
Kurator 致力于简化分布式存储的部署与管理。基于领先的开源项目 Rook(https://rook.io/),Kurator 支持在多集群环境中轻松自动化管理分布式存储。这包括块存储、文件系统存储和对象存储等多种存储类型,以适应各种应用场景的需求。
利用 Fleet 插件,Kurator 提供了一种一键跨集群部署分布式存储的解决方案,既简化了配置步骤也显著降低了配置错误的可能性。架构如下图所示:
Kurator统一分布式存储架构图
接下来是一个通过 Fleet 插件部署多集群分布式存储的例子:
apiVersion: fleet.kurator.dev/v1alpha1 kind: Fleet metadata: name: quickstart namespace: default spec: clusters: - name: kurator-member1 kind: AttachedCluster - name: kurator-member2 kind: AttachedCluster plugin: distributedStorage: storage: dataDirHostPath: /var/lib/rook monitor: count: 3 labels: role: MonitorNodeLabel manager: count: 2 labels: role: ManagerNodeLabel
在 spec 中,clusters 指明了存储将部署在哪些集群上。在 status 中,plugin 配置下的 distributedStorage 标识此为一个分布式存储插件的安装。此外,dataDirHostPath 定义了存储的路径,而 monitor 和 manager 配置项则指定了 Ceph 组件的参数。
🔗 更多的示例和细节,请参考: https://kurator.dev/docs/fleet-manager/distributedstorage-plugin/
参考链接
统一备份恢复迁移特性介绍: https://kurator.dev/docs/fleet-manager/backup/
Fleet备份插件安装: https://kurator.dev/docs/fleet-manager/backup/backup-plugin/
统一备份操作指南: https://kurator.dev/docs/fleet-manager/backup/backup/
统一恢复操作指南: https://kurator.dev/docs/fleet-manager/backup/restore/
统一迁移操作指南: https://kurator.dev/docs/fleet-manager/backup/migrate/
统一分布式存储操作指南: https://kurator.dev/docs/fleet-manager/distributedstorage-plugin/
附:Kurator社区交流地址
GitHub地址:
Kurator主页:https://kurator.dev/
Slack地址: https://join.slack.com/t/kurator-hq/shared_invite/zt-1sowqzfnl-Vu1AhxgAjSr1XnaFoogq0A