头图

🎉 KubeBlocks v0.9.0 版本正式发布了!KubeBlocks API 距离发布 v1.0 更近一步了。

API Highlights

  • 构建一个 Cluster 更像是在用 Component “搭积木”!ClusterDefinition API 增加了 topologies 字段,允许 Addon 开发者提供具有不同拓扑结构的多种部署形态,数据库使用者可以在创建 Cluster 时通过 topology 字段来选择。比如说 Redis Addon 提供了单节点、主从、Proxy 这三种拓扑结构:单节点形态仅包含 RedisServer 一个 Component,主从形态包含 RedisServer 和 Sentinel 这两种 Component,而 Proxy 形态会增加第三种 Component,例如 Twemproxy。
  • 新增对分布式数据库水平分片扩缩容(Reshard)的管理!在 KubeBlocks v0.9 里,用户可以用一个 Component 来表示一个水平分片,通过新增和删除 Component 来表示水平分片的扩容与缩容。这个扩展能力将用在 Redis 和 Pika 的分布式部署形态中。
  • KubeBlocks 用 InstanceSet 代替了 StatefulSet 来管理 Pods!InstanceSet 支持将指定的 Pod 下线、Pod 原地更新,同时也支持数据库主从架构里主库和从库采用不同的 Pod spec(这些功能 StatefulSet 均不支持)。
  • Addon 开发者可以为 Component 添加更多自定义的事件处理例程!ComponentDefinition API 在 KubeBlocks v0.8 中引入,其中包含了 lifeCycleActions 字段,允许 Addon 开发者定义各种自定义事件例程。KubeBlocks v0.9 中开放了更多的例程允许 Addon 提供自定义实现:包括 roleprobe(节点角色探测),memberLeave(节点下线),preTerminate(Component 下线),postProvision(Component 上线)。事件处理例程的扩展增强了 KubeBlocks 的表达能力,例如在 preTerminate 和 postProvision 可以用来执行分布式数据库的跨分片数据重分布(Rebalance),也可以发起注册到第三方 HA 管理器如 Sentinel、Orchestrator。

Addon Highlights

  • KubeBlocks 新增 Redis 集群模式(分片模式) #5833

    KubeBlocks v0.8 支持了 Redis Sentinel 集群,提供了出色的故障转移支持,但是无法承载较高的写流量。Redis Cluster 是另外一种 Redis 拓扑架构,旨在提供水平的写扩展能力以及智能的客户端高可用策略。Redis Cluster 将数据分布到多个 Redis 节点上,显著提高了系统的容量、性能以及可用性。

  • KubeBlocks 新增 MySQL 主备模式 #1330

    相对于 MGR 集群,MySQL 主备拓扑架构对资源的要求更少(只需要两个数据库副本),而且数据复制的开销也更小。在业务对服务可用性和数据可靠性没有极致要求的情况下,主备拓扑不失为一种高性价比的选择。用户可以通过 kbcli 主动切换 MySQL 副本的角色,也可以通过 kubectl 删除指定的 Kubernetes pod 来触发被动的 failover。在没有长事务和大表 DDL 的前提下,failover 一般能在 30s 内完成。

What's Changed

新功能

KubeBlocks

  • ClusterDefinition API

    • 支持 toplology API,Addon 开发者可自定义多种拓扑形态 #6582
  • Cluster API

    • 支持 ShardingSpec API #6437
    • 支持 Sharding 扩缩 #6774
  • ComponentDefinition API

    • lifecycleActions API 可支持用户自定义多种引擎运维相关 actions,包括 roleprobe, memberLeave, preTerminate, postProvision #6037 #6582 #6720 #6774
    • 新增 Vars API,用于引用实例相关的动态资源和信息,包括 secret, service, service reference 等

      • 支持 Vars API #5919
      • 支持跨 Component 的 Vars 引用 #7155
      • 优化 ServiceRef 引用 #7006
    • 支持配置动态渲染,在 vscale 和 hscale 之后,重新生成指定变量 #6273 #6690
  • Component

    • 支持删除 Component #6774
    • 支持 ComponentVersion #6582
  • InstanceSet API

    • InstanceSet 代替 StatefulSet 来管理 Pods InstanceSet #7084
    • 实例模板(Instance Template) #5799
    • 指定实例缩容 #6958
    • 原地更新(In-place Update)#7000
  • OpsRequest API

    • 支持重搭故障备实例 #6872
    • 支持 force flag 来控制是否并发 #6828
    • 支持自定义多任务顺序执行 #6735
  • NodeCountScaler #7258
  • 支持 PITR #6779
  • 支持跨 NameSpace 恢复 #6778

kbcli

  • 支持 PostgreSQL 基于时间点恢复 #329
  • cluster 支持 rebuild-instance 子命令重建实例 #285
  • cluster create 子命令支持 elasticsearch #389
  • 创建备份仓库时支持指定路径前缀 #294

Addons

Redis
  • 支持官方 Redis Cluster 集群形态 #301
  • Redis 功能和稳定性的增强

    • 适配新的 ComponentDefinition 以及 ComponentVersion 等新 API,多种 topology 形态支持 #501
    • Redis 主备集群初始化逻辑优化,移除对 DownwardAPI 的依赖 #462 #616
    • 支持 Redis 7.2.4 版本 #571
  • 支持 Redis 分片集群备份和恢复 #442
MySQL
  • 新增开源组件 Orchestrator Addon,来管理 MySQL #625 #567
PostgreSQL
  • 支持 PostgreSQL PITR #361
  • 支持 PostgreSQL 15.7 版本 #529
Qdrant
  • 支持 Qdrant 分片集群备份和恢复 #442
MogDB
  • 支持 MogDB 5.0.5 主备集群的创建、扩缩容、备份和切换 #343 #350
Elasticsearch
  • 支持 Elasticsearch 7.7.1, 7.10.1 和 8.8.2 版本 #767
Pulsar
  • 支持了 3.0.2 版本 #340
  • 支持 NodePort #358
VictoriaMetrics
  • 支持了 VictoriaMetrics v1.100.1 #479

API deprecations, and other changes for Release 0.9

  • ConfigConstraint API 逐渐稳定,由 v1alpha1 升级到了 v1beta1
  • StorageProvider 变更了 group,从 storage.kubeblocks.io 迁移到 dataprotection.kubeblocks.io
  • ClusterVersion v1alpha1 CRD 会在 Release 1.0 移除
  • ComponentClassDefinition v1alpha1 CRD 会在 Release 1.0 移除
  • ComponentResourceConstraint v1alpha1 CRD 会在 Release 1.0 移除
  • ClusterDefinition API

    • type, componentDefs, connectionCredential 会在 Release 1.0 移除
  • Cluster API

    • 调度相关:tenancy, availabilityPolicy, 会在 Release 1.0 移除
    • API 简化相关:replicas, resources, storage, network, 会在 Release 1.0 移除
  • ComponentDefintion API

    • switchPolicy 会在 Release 1.0 移除,可用 componentDefintion.spec.lifecycleActions.switchover API 实现同等能力。
  • ServiceRef API

    • cluster 会在 Release 1.0 移除,可用 serviceRef.clusterServiceSelector 实现同等能力。

此外,所有用于引用上述 API 的字段也相应标记为 Deprecated,会在 Release 1.0 移除。

  • clusterVersionRef
  • componentDefRef
  • classDefRef
在 KubeBlocks Release 0.9 中,依然保持了对标记为 Deprecated 的 API 的兼容。

Deprecated Features

kbcli Deprecated features

  • 功能精简,移除 benchfaultmigration 子命令 #343

End

小猿姐诚邀各位体验 KubeBlocks,也欢迎您成为产品的使用者和项目的贡献者。跟我们一起构建云原生数据基础设施吧!

💻 官网: www.kubeblocks.io

🌟 GitHub: https://github.com/apecloud/kubeblocks

🚀 Get started: https://kubeblocks.io/docs/preview/user_docs/try-out-on-playg...

关注小猿姐,一起学习更多云原生技术干货。


小猿姐
6 声望1 粉丝

每个开发者都想知道的云原生和数据库技术