本文分享自华为云社区《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

点击关注,第一时间了解华为云新鲜技术~

Kurator v0.5.0发布,打造统一的多集群备份与存储体验的更多相关文章

  1. Kurator v0.3.0版本发布

    摘要:2023年4月8日,Kurator正式发布v0.3.0版本. 本文分享自华为云社区<华为云 Kurator v0.3.0 版本发布!集群舰队助力分布式云统一管理>,作者:云容器大未来 ...

  2. 分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台

    摘要:北京时间2023年2月9日,Kurator 正式发布 v0.2.0 版本. 本文分享自华为云社区<分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台>,作 ...

  3. Redis 5.0.7 讲解,单机、集群模式搭建

    Redis 5.0.7 讲解,单机.集群模式搭建 一.Redis 介绍 不管你是从事 Python.Java.Go.PHP.Ruby等等... Redis都应该是一个比较熟悉的中间件.而大部分经常写业 ...

  4. redis 4.0.8 源码包安装集群

    系统:centos 6.9软件版本:redis-4.0.8,rubygems-2.7.7,gcc version 4.4.7 20120313,openssl-1.1.0h,zlib-1.2.11 y ...

  5. 生产环境elasticsearch5.0.1和6.3.2集群的部署配置详解

    线上环境elasticsearch5.0.1集群的配置部署 es集群的规划: 硬件: 7台8核.64G内存.2T ssd硬盘加1台8核16G的阿里云服务器 其中一台作为kibana+kafka连接查询 ...

  6. (七) Docker 部署 MySql8.0 一主一从 高可用集群

    参考并感谢 官方文档 https://hub.docker.com/_/mysql y0ngb1n https://www.jianshu.com/p/0439206e1f28 vito0319 ht ...

  7. K8S 搭建 Kafka:2.13-2.6.0 和 Zookeeper:3.6.2 集群

    搭建 Kafka:2.13-2.6.0 和 Zookeeper:3.6.2 集群 一.服务版本信息: Kafka:v2.13-2.6.0 Zookeeper:v3.6.2 Kubernetes:v1. ...

  8. Clusternet v0.5.0 重磅发布: 全面解决多集群应用分发的差异化配置难题

    作者 徐迪,腾讯云容器技术专家. 汝英哲,腾讯云高级产品经理. 摘要 在做多集群应用分发的时候,经常会遇到以下的差异化问题,比如: 在分发的资源上全部打上统一的标签,比如 apps.my.compan ...

  9. LAL v0.32.0发布,更好的支持纯视频流

    Go语言流媒体开源项目 LAL 今天发布了v0.32.0版本.距离上个版本刚好一个月时间,LAL 依然保持着高效迭代的状态. LAL 项目地址:https://github.com/q19120177 ...

  10. terraform v0.12.0 发布了

    v0.12.0 相比以前的有好多新的特性,包括语法,以及函数增强,昨天还在折腾的一个json解码的问题,直接使用 v0.12.0 就可以解决了,同时也包含了for 操作处理同时官方文档对于v0.12. ...

随机推荐

  1. debezium同步postgresql数据至kafka笔记

    实验环境 全部部署于本地虚拟机 debezium docker部署 postgresql.kafka本机部署 1 postgresql 1.1 配置 设置postgres密码为123 仿照exampl ...

  2. 2021-10-08 Core的LaunchSettings文件说明

    { "iisSettings": { //是否以IIS Express启动 "windowsAuthentication": false, //是否启用wind ...

  3. mysql-workbench-community报错解决办法

    输入以下命令: sudo apt-get -f install 参考链接:https://www.jianshu.com/p/767c9a29b403

  4. JS优化技巧,解决冗余代码

    1. 使用箭头函数简化函数定义 // 传统函数定义 function add(a, b) { return a + b; } // 箭头函数简化 const add = (a, b) => a ...

  5. [jmeter]简介与安装

    简介 JMeter是开源软件Apache基金会下的一个性能测试工具,用来测试部署在服务器端的应用程序的性能. 安装 安装jmeter 从 官网 下载jmeter的压缩包 安装jdk并配置 JAVA_H ...

  6. 微信小程序预览时显示有图片未上传

    最近在做小程序项目,在项目里面加了几个图片.在预览调试时出现弹窗显示"文件未上传",但是在左侧的模拟器上却是能正常显示的. 解决思路: 图片在本地和模拟器上显示正常,表示图片本身没 ...

  7. #Powerbi 1分钟学会,RANK函数,多字段排名函数.

    一:思维导图&数据源示例 1.1思维导图 1.2示例数据源 二:参数构成 三:案例度量值 基础度量值 总销量 = CALCULATE(SUM('数据源'[销量])) 总销售额 = CALCUL ...

  8. ORM查询一个表中有两个字段相同时,只获取某个值最大的一条

    Table表如下: 获取表中name和hex值相同时age最大的那一条 ORM写法,两次查询 ids = table.values('name', 'age').annotate(id=Max('id ...

  9. CodeForces-1324D-Pair-of-Topics

    题意 对于两个长度为\(n\)的数组\(a[]\)和\(b[]\),找到有多少对\(i\)和\(j\)\((i<j)\),满足\(a_i+a_j>b_i+b_j\) 分析 首先发现如果\( ...

  10. Python colorama 设置控制台、命令行输出彩色文字

    为了方便调试代码,经常会向stdout中输出一些日志,但是大量日志,有时不好定位问题. 使用终端打印特定颜色字符串,可以突出显示关键性的信息,帮助用户更好地识别和理解输出内容. https://pyp ...