KubeBlocks与OceanBase完成产品兼容互认,可以使用KubeBlocks管理你的OceanBase集群啦!

前言

KubeBlocks (简称 KB)最新发布的 0.7 版本中,通过组件扩展(Addon)方式新增了对 OceanBase 的支持,为企业级和非企业级用户在 Kubernetes 环境中创建和运维 OceanBase 提供了更加便捷的方式。

OceanBase & KubeBlocks

OceanBase 是由蚂蚁集团、阿里巴巴完全自主研发的分布式关系型数据库,具有数据强一致、高可用、高性能、在线扩展、高度兼容 SQL 标准和主流关系型数据库、低成本等特点,被越来越多的企业使用。

KubeBlocks 是一个开源的在 K8s 上运行和管理数据基础设施的系统软件,旨在帮助开发人员、SRE、平台工程师在企业中部署和维护专用的 DBPaaS,并支持多种公共云和私有云环境部署。

KubeBlocks 是目前 CNCF Cloud Native LANDSCAPE 收录的唯一的开源多引擎数据 / 数据库管理系统项目。KubeBlocks 实现了对多种数据(库)系统的统一的抽象, 具有以下特点:

  • 性能:KubeBlocks 容器和云环境对 MySQL 与 PostgreSQL 数据库的内核和参数进行优化,性能超过同规格 RDS。
  • 可用性:KubeBlocks 支持多种数据库的高可用集群配置,对 MySQL 支持 Raft 三节点复制,从而实现 RPO=0。
  • 可观察性:KubeBlocks 从丰富的数据源采集监控指标,集成了 Prometheus 堆栈,并提供了富有洞察力的 Grafana 模板。此外,还提供慢日志等排查工具。
  • 可扩展性 :KubeBlocks 对接入一个新的数据库引擎提供了良好的抽象,通过组件扩展(Addon)机制可以快速集成,并提供一致的使用体验和预期行为

KubeBlocks 0.7 版本现已支持 30+ 数据(库)系统组件

在 KubeBlocks 社区的 0.7 版本,KubeBlocks 完成了与 OceanBase 开源版的适配。正是因为 KubeBlocks 提供的一致性体验,KubeBlocks 社区用户可以"0学习成本"快速掌握创建和运维 OceanBase 集群的方式。证书见后文。

轻松集成

KubeBlocks 对数据库系统的高度抽象带来的扩展性,方便开发者轻松扩展一款新的数据库。细心读者已经发现了,该 PR 只包含 500 行代码,其中大部分是 YAML。

使用 KubeBlocks 轻松管理 OceanBase 集群

准备工作

1. 安装 KubeBlocks 和 kbcli

如果这是你第一次使用 KubeBlocks,请先安装 KubeBlocks 和 kbcli。

  • 安装 kbcli

    arduino 复制代码
    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash
  • 安装 KubeBlocks

    kbcli kubeblocks install
    

更多安装方式请参考 KubeBlocks 官方文档: kubeblocks.io

2. 查看 OceanBase 组件版本

  • 更新 KubeBlocks repo

    csharp 复制代码
    helm repo add kubeblocks  https://apecloud.github.io/helm-charts
    
    helm repo update kubeblocks
  • 查看最新的 OceanBase 组件版本

    bash 复制代码
    helm search repo kubeblocks/oceanbase
    >
    NAME                                CHART VERSION        APP VERSION                       DESCRIPTION
    kubeblocks/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+ 数据(库)系统组件,可以通过类似方式查看。 完整列表请参考:kubeblocks.io/docs/releas...

3. 安装 OceanBase 组件扩展

bash 复制代码
helm install oceanbase kubeblocks/oceanbase --version 0.7.1

该组件只需安装一次。

创建 OceanBase 集群

仅需一条命令行,即可快速拉起一个 OceanBase 集群。

bash 复制代码
helm install obcluster  kubeblocks/oceanbase-cluster --version 0.7.1

查看 pod,可以看到一个三节点的 OceanBase 集群成功创建:

sql 复制代码
kubectl get po -l app.kubernetes.io/instance=obcluster-oceanbase-cluster
>
NAME                                      READY   STATUS    RESTARTS   AGE
obcluster-oceanbase-cluster-ob-bundle-0   1/1     Running   0          13m
obcluster-oceanbase-cluster-ob-bundle-1   1/1     Running   0          11m
obcluster-oceanbase-cluster-ob-bundle-2   1/1     Running   0          9m10s

连接 OceanBase 集群

KubeBlocks 命令行工具 kbcli 提供便捷的集群运维和管理命令的同时,也提供了丰富的运维操作,让用户以一致的体验操作不同的数据库引擎。例如,可通过 connect 命令连接到刚创建的 OceanBase 集群:

arduino 复制代码
kbcli cluster connect obcluster-oceanbase-cluster

即可开始你的 OceanBase 之旅。

水平扩展 OceanBase 集群

若 3 个节点已经无法满足你的业务需求,可以快速扩展为 5 个节点。

css 复制代码
kbcli cluster hscale obcluster-oceanbase-cluster --components ob-bundle --replicas 5

感谢

感谢来自 OceanBase 社区的 @Powerfool 同学协助完成本次集成。

未来 KubeBlocks 还会和 OceanBase 深度合作,完善对 OceanBase 的深度运维能力,为企业级和非企业级用户提供更加便捷的数据库使用和运维体验。

喜提证书

相关推荐
写bug的小屁孩3 分钟前
前后端交互接口(三)
运维·服务器·数据库·windows·用户界面·qt6.3
恒辉信达16 分钟前
hhdb数据库介绍(8-4)
服务器·数据库·mysql
齐 飞1 小时前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
云空1 小时前
《Python 与 SQLite:强大的数据库组合》
数据库·python·sqlite
暮毅1 小时前
10.Node.js连接MongoDb
数据库·mongodb·node.js
wowocpp1 小时前
ubuntu 22.04 server 格式化 磁盘 为 ext4 并 自动挂载 LTS
服务器·数据库·ubuntu
成富2 小时前
文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现
数据库·人工智能·sql·spring·oracle
songqq272 小时前
SQL题:使用hive查询各类型专利top 10申请人,以及对应的专利申请数
数据库·sql
计算机学长felix2 小时前
基于SpringBoot的“校园交友网站”的设计与实现(源码+数据库+文档+PPT)
数据库·spring boot·毕业设计·交友
小码的头发丝、2 小时前
Django中ListView 和 DetailView类的区别
数据库·python·django