您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[OceanBase]:曹伟:KubeBlocks在K8s上运行生产级的OceanBase - 发现报告
当前位置:首页/行业研究/报告详情/

曹伟:KubeBlocks在K8s上运行生产级的OceanBase

信息技术2024-08-23-OceanBase晓***
AI智能总结
查看更多
曹伟:KubeBlocks在K8s上运行生产级的OceanBase

在K8s上运行生产级OceanBase Runsproduction-levelOceanBaseonK8s 曹伟 云猿生数据创始人&CEO 云猿生数据创始人/CEO 前阿里云数据库总经理/研究员,云原生数据库PolarDB创始人。中国计算机学会数据库专委会、开源专委会执行专委,获得2020年中国电子学会科技进步一等奖,在SIGMOD、VLDB、ICDE、FAST、USENIXATC等数据库 与存储国际顶级学术会议发表论文20余篇。 AWS GCP Azure 业务开发 InternalDeveloperPlatform/平台工程 App Endpoint Database Schema ACL Workflow K8s POD service PVC/PV secret configmapTaintToleration AffinityAnti-Affinity event ACK EKS GKE AKS OpenShiftRancher 阿里云 物理机 #YAML MASTER #YAML #YAML STAGE DEV #YAML YAMListheprogramminglanguageofDevOps DBPaaSAPI&Portal 监控报警 审计 扩缩容 容灾 账号 授权 维 运HA备份恢复迁移操 作 引擎 升级 •体验不一致 •系统预期行为不一致 •Conway'sLaw •业务引入新引擎成本高 资源调度 云(虚拟机) 物理机 容器 存储 网络 安全 环境 多云(包括混合云) K8sAPI K8s原生 支持多种数据库引擎 学习曲线类似 支持新业务扩展新引擎 Automation DevOps友好 支持IaC实践 提供声明式API 人工操作IaC自动化 kbcli KubeBlocksCloud K8sAPI OpenAPI 声明式API 生命周期 高可用 MySQLCR RedisCR PGCR 领域模型YAML低代码扩展 配置管理 备份还原 账号管理 监控日志 MongoDBCR KafkaCR PulsarCR ESCR OceanBaseCR …… 扩展API K8s容器编排 Pod Scheduler CSI …… Cluster&ClusterDefinitionComponent&ComponentDefinitionInstanceSet Instance K8s抽象 Pod PVC Configmap … Service Toleration Affinitiy … Cluster:OceanBase-paxos InstanceInstance Instance Pod PVC Service Component: OceanBaseInstanceSet Cluster:OceanBase-masterslave Pod PVC Service Instance Component: Instance OceanBase-replInstanceSet Component:OceanBase-repl InstanceSet Pod PVC Service Zone1 OBServer OBServer OBServer Zone2 Zone3 OBServer OBServer OBServerOBServer OBServer OBServer 要创建哪些组件 OBServer 每个组件如何配置和启动 配置文件启动脚本服务端口 OceanBaseArchitecture 1理解OceanBase架构 name:oceanbasespec: -serviceKind:…#服务类型services:…#对外提供的服务端口configs:…#配置文件 scripts:…#脚本文件 runtime:#运行时containers: -command: ports:…volumeMounts:… lifecycleActions:#生命周期管理roleProbe:…#自定义角色探测 2 定义组件模板,每个组件一个,需要填写 定义组件拓扑和组件配置,主要描述: ComponentDefinition.yaml kind:ComponentDefinitionmetadata: •Runtime 描述组件运行时信息,例如Containers •Configs: 渲染并挂载用户配置文件,参数约束,参数配置等 •Scripts: 渲染并挂载用户脚本文件,自定义环境变量等 •Services: 组件对外提供的服务端口和协议 •LifecycleActions: 常见的生命周期管理的任务,例如角色探测 configSpec配置文件 scriptSpec脚本文件 services 内部/外部服务 volumeMounts数据/日志文件目录 lifecycleActions组件的行为 创建集群模版 kind:Addonmetadata: name:oceanbasespec: addon.yaml OceanBaseAddon 开发OceanBaseAddon要写多少代码? description:OceanBaseDatabaseisanenterprise-levelnativedistributeddatabaseindependentlydevelopedbyAntGrouphelm: chartLocationURL:https://.../charts/oceanbase.tgz*installable: autoInstall:falsetype:Helm 开发时间 ~2周 JSON 2,961 监控面板配置 ShellScript 1,239 OBServer启动脚本 YAML 998 接入KueBlocks的YAML文件 描述OceanBase,指定是否默认安装等信息 *KubeBlocks的CICD流程会自动创建oceanbase.tgz,开发者不需要关心 *KubeBlocks-Addon会自动会新接入的Addon生成AddonYAML,简化了流程 3添加Addon配置文件 2步创建集群 运维功能列表 Step1:打开addon kbcliaddonenableoceanbase Step2:指定引擎类型,创建集群 kbcliclustercreateoceanbasemyob#myob为集群名 StepX:集群运维 kbclicluster<ops>myob 运维任务支持情况 Stop/StartY RestartY UpgradeY Volume-ExpandY VScaleY HScaleY Backup/RestoreY *Richday-2operations 拆解元件(Component) 组装式搭建(Cluster) 基于KubeBlocks(Addon) 1.单节点 2.主从 3.3节点Cluster 4.多租户Cluster OBProxy 性能 KubeBlocks针对容器和云环境对MySQL与PostgreSQL数据库的内核和参数进行优化,性能超过同规格RDS。 可用性KubeBlocks支持多种数据库的高可用集群配置。 可观察性 可扩展性 KubeBlocks对接入一个新的数据库引擎提供了良好的抽象,通过 addon机制可以快速集成,并提供一致的使用体验和预期行为。 KubeBlocks从丰富的数据源采集监控指标,集成了Prometheus堆栈,并提供了富有洞察力的Grafana模板。此外,还提供慢日志等排查工具。 KubeBlocks是一个开源的在K8s上运行和管理数据基础设施的系统软件,它帮助开发人员、SRE、平台工程师在企业中部署和维护专用的DBPaaS,并支持多种公共云和私有云环境。 集群管理 垂直伸缩 水平伸缩 存储扩容参数设置重启停止/启动版本升级账号管理 可观测性 内置Prometheus 与外部监控系统无缝集成 多层级监控大盘 IM/EMAIL报警 备份恢复 基于快照的自动备份 集成流行的备份工具 保存在低成本的对象存储 全量恢复/按时间点恢复 高可用 Failover Switchover 可配置的故障隔离级别 数据迁移 内置迁移工具 mysql2mysql 外部数据库导入 pg2pg异构迁移 混沌测试 故障注入Fault-inject 故障观测Nyancat 性能测试 Bench-tpcc Bench-fio 基础插件 Prometheus Csi-s3-driver Grafana Awsloadbalancercontroller 三方引擎 Nebula qdrant RisingWave weaviate Pika Milvus 33 已经支持 款 数据库引擎 CNCFCloudNativeLANDSCAPE收录的唯一的开源多引擎数据/数据库管理系统项目 欢迎加入社区 谢谢 谢谢 谢谢