本文转载自云猿生聊技术(CloudNativeDataTech)
前言
KubeBlocks(简称 KB)在最新发布的0.7版本中,通过组件扩展(Addon)的形式新增了对OceanBase的支持功能。这一更新为企业级和非企业级用户提供了更为便捷的方式,能够在Kubernetes环境中创建和运维OceanBase数据库。
OceanBase × KubeBlocks
OceanBase是完全自主研发的分布式关系型数据库。它具备高性能、数据强一致性、高可用性等特点,支持在线扩缩容,并高度兼容SQL标准和主流关系型数据库,并可帮助企业实现规模化降本,已被1000+企业应用。
KubeBlocks 是一个开源的在 K8s 上运行和管理数据基础设施的系统软件,旨在帮助开发人员、SRE、平台工程师在企业中部署和维护专用的 DBPaaS,并支持多种公共云和私有云环境部署。
KubeBlocks Architecture
KubeBlocks 是目前 CNCF Cloud Native LANDSCAPE 收录的唯一的开源多引擎数据 / 数据库管理系统项目。KubeBlocks 实现了对多种数据(库)系统的统一的抽象, 具有以下特点:
- 性能:KubeBlocks 容器和云环境对 MySQL 与 PostgreSQL 数据库的内核和参数进行优化,性能超过同规格 RDS。
- 可用性:KubeBlocks 支持多种数据库的高可用集群配置,对 MySQL 支持 Raft 三节点复制,从而实现 RPO=0。
- 可观察性:KubeBlocks 从丰富的数据源采集监控指标,集成了 Prometheus 堆栈,并提供了富有洞察力的 Grafana 模板。此外,还提供慢日志等排查工具。
- 可扩展性:KubeBlocks 对接入一个新的数据库引擎提供了良好的抽象,通过组件扩展(Addon)机制可以快速集成,并提供一致的使用体验和预期行为。
KubeBlocks 0.7 版本现已支持 30+ 数据(库)系统组件[3]。
在 KubeBlocks 社区的 0.7 版本,KubeBlocks 完成了与 OceanBase 开源版的适配。正是因为 KubeBlocks 提供的一致性体验,KubeBlocks 社区用户可以“0学习成本”快速掌握创建和运维 OceanBase 集群的方式。证书见后文。
轻松集成
KubeBlocks 对数据库系统的高度抽象带来的扩展性,方便开发者轻松扩展一款新的数据库。细心读者已经发现了,该 PR 只包含 500 行代码,其中大部分是 YAML。
感谢来自 @Powerfool 同学的贡献
使用 KubeBlocks 轻松管理 OceanBase 集群
准备工作
1. 安装 KubeBlocks 和 kbcli
如果这是你第一次使用 KubeBlocks,请先安装 KubeBlocks 和 kbcli。
- 安装 kbclicurl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash
- 安装 KubeBlockskbcli kubeblocks install
更多安装方式请参考 KubeBlocks 官方文档: https://kubeblocks.io
2. 查看 OceanBase 组件版本
- 更新 KubeBlocks repohelm repo add kubeblocks https://apecloud.github.io/helm-chartshelm repo update kubeblocks
- 查看最新的 OceanBase 组件版本helm search repo kubeblocks/oceanbase>NAME CHART VERSION APP VERSION DESCRIPTIONkubeblocks/oceanbase 0.7.1 4.2.0.0-100010032023083021 Unlimited scalable distributed database for dat...kubeblocks/oceanbase-cluster 0.7.1 4.2.0.0-100010032023083021 A oceanbase cluster Helm chart for KubeBlocks.
可以看到最新的 helm chart 版本为 v0.7.1,可以部署OceanBase v4.2.0。
其中 kubeblocks/oceanbase
就是 OceanBase 的组件扩展,定义了符合 KubeBlocks 统一抽象模型的 OceanBase 数据库拓扑(包括有哪些组件,如何配置和启动)。
kubeblocks/oceanbase-cluster
提供了创建 OceanBase 数据库所需资源(CPU,Memory,Disk,Replica 等)的最佳实践。
KubeBlocks 0.7 版本已经集成了 30+ 数据(库)系统组件,可以通过类似方式查看。完整列表请参考:https://kubeblocks.io/docs/release-0.7/user_docs/overview/supported-addons
3. 安装 OceanBase 组件扩展
helm install oceanbase kubeblocks/oceanbase --version 0.7.1
该组件只需安装一次。
创建 OceanBase 集群
仅需一条命令行,即可快速拉起一个 OceanBase 集群。
helm install obcluster kubeblocks/oceanbase-cluster --version 0.7.1
查看 pod,可以看到一个三节点的 OceanBase 集群成功创建:
kubectl get po -l app.kubernetes.io/instance=obcluster-oceanbase-cluster>NAME READY STATUS RESTARTS AGEobcluster-oceanbase-cluster-ob-bundle-0 1/1 Running 0 13mobcluster-oceanbase-cluster-ob-bundle-1 1/1 Running 0 11mobcluster-oceanbase-cluster-ob-bundle-2 1/1 Running 0 9m10s
连接 OceanBase 集群
KubeBlocks 命令行工具 kbcli 提供便捷的集群运维和管理命令的同时,也提供了丰富的运维操作,让用户以一致的体验操作不同的数据库引擎。例如,可通过 connect
命令连接到刚创建的 OceanBase 集群:
kbcli cluster connect obcluster-oceanbase-cluster
即可开始你的 OceanBase 之旅。
水平扩展 OceanBase 集群
若 3 个节点已经无法满足你的业务需求,可以快速扩展为 5 个节点。
kbcli cluster hscale obcluster-oceanbase-cluster --components ob-bundle --replicas 5
未来 KubeBlocks 还会和 OceanBase 深度合作,完善对 OceanBase 的深度运维能力,为企业级和非企业级用户提供更加便捷的数据库使用和运维体验。
参考资料
[1]KubeBlocks 官网: https://kubeblocks.io/OceanBase 官网: https://www.oceanbase.com/KubeBlocks 已支持 30+ 数据(库)系统组件: https://kubeblocks.io/docs/release-0.7/user_docs/overview/supported-addons
🌟 GitHub: GitHub - oceanbase/oceanbase: OceanBase is an enterprise distributed relational database with high availability, high performance, horizontal scalability, and compatibility with SQL standards.
🌟 GitHub: GitHub - apecloud/kubeblocks: KubeBlocks is an open-source control plane that runs and manages databases, message queues and other data infrastructure on K8s.