Runs production-levelOceanBaseon K8s在K8s上运行生产级OceanBase
曹伟
云猿生数据创始人&CEO
云猿生数据创始人/ CEO
前阿里云数据库总经理/研究员,云原生数据库PolarDB创始人。中国计算机学会数据库专委会、开源专委会执行专委,获得2020年中国电子学会科技进步一等奖,在SIGMOD、VLDB、ICDE、FAST、USENIX ATC等数据库与存储国际顶级学术会议发表论文20余篇。
K8s is eating the world
K8s is eating the world
YAML is the programming language of DevOps
传统data infra control plane——烟囱式架构
DBPaaSAPI & Portal
•体验不一致•系统预期行为不一致•业务引入新引擎成本高•Conway's Law
企业对云原生的data infra control plane的需求
通过抽象和扩展API实现对多种数据库的统一管理
KubeBlocksAPI对分布式数据库的拓扑进行抽象
把KubeBlocksAPI映射到数据库–OceanBase
把KubeBlocksAPI映射到数据库–OceanBase主备
低代码插件扩展新引擎–案例OceanBase
要创建哪些组件
OBServer
每个组件如何配置和启动
配置文件启动脚本服务端口
OceanBaseArchitecture
低代码插件扩展新引擎–案例OceanBase
ComponentDefinition.yaml
定义组件拓扑和组件配置,主要描述:•Runtime
描述组件运行时信息,例如Containers•Configs:渲染并挂载用户配置文件,参数约束,参数配置等•Scripts:渲染并挂载用户脚本文件,自定义环境变量等•Services:组件对外提供的服务端口和协议•LifecycleActions:常见的生命周期管理的任务,例如角色探测
kind:ComponentDefinitionmetadata:name:oceanbasespec:-serviceKind:…#服务类型services:…#对外提供的服务端口configs:…#配置文件scripts:…#脚本文件runtime:#运行时containers:-command:ports:…volumeMounts:…lifecycleActions:#生命周期管理roleProbe:…#自定义角色探测
定义组件模板,每个组件一个,需要填写
volumeMounts数据/日志文件目录configSpec配置文件scriptSpec脚本文件services内部/外部服务lifecycleActions组件的行为
低代码插件扩展新引擎–案例OceanBase
addon.yaml
OceanBaseAddon开发OceanBaseAddon要写多少代码?
kind:Addonmetadata:name:oceanbasespec:description:OceanBaseDatabase is an enterprise-level nativedistributed database independently developed by Ant Grouphelm:chartLocationURL: https://.../charts/oceanbase.tgz*installable:autoInstall:falsetype: Helm
描述OceanBase,指定是否默认安装等信息
*KubeBlocks的CICD流程会自动创建oceanbase.tgz,开发者不需要关心
*KubeBlocks-Addon会自动会新接入的Addon生成Addon YAML,简化了流程
低代码插件扩展新引擎–案例OceanBase
运维功能列表
2步创建集群
Step1:打开addon
kbcliaddon enableoceanbase
Step2:指定引擎类型,创建集群
kbclicluster createoceanbasemyob#myob为集群名
StepX:集群运维
kbclicluster




