🎉 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
子命令重建实例 #285cluster 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
- 功能精简,移除
bench
,fault
,migration
子命令 #343
End
小猿姐诚邀各位体验 KubeBlocks,也欢迎您成为产品的使用者和项目的贡献者。跟我们一起构建云原生数据基础设施吧!
💻 官网: www.kubeblocks.io
🌟 GitHub: https://github.com/apecloud/kubeblocks
🚀 Get started: https://kubeblocks.io/docs/preview/user_docs/try-out-on-playground/try-kubeblocks-on-your-laptop
关注小猿姐,一起学习更多云原生技术干货。