KubeBlocks把所有数据库运行到K8s上_第1页
KubeBlocks把所有数据库运行到K8s上_第2页
KubeBlocks把所有数据库运行到K8s上_第3页
KubeBlocks把所有数据库运行到K8s上_第4页
KubeBlocks把所有数据库运行到K8s上_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

KubeBlocks:

把所有数据库都运行到

K8sK8siseatingthe

worldGKEEKSACKAKSOpenShift Rancher阿里云AWSGCPAzure物理机PODservicePVC/PVsecretconfigmapTaintAffinityeventTolerationAnti-AffinityAppWorkflow业务开发K8sInternal

Developer

Platform

/

平台工程Endpoint Database Schema ACLK8siseatingthe

worldYAMListheprogramminglanguageof

DevOps传统data

infra

control

plane——烟囱式架构体验不一致系统预期行为不一致引

擎运维操

作环

境业务引入新引擎成本高Conway's

LawDBPaaSAPI&

PortalMySQL管控PG管控MongoDB管控Redis管控OLAP管控ES,Kafka,ClickHouse,……HA备份恢复迁移监控报警审计容灾资源调度云(虚拟机)物理机存储容器网络升级账号扩缩容授权安全企业对云原生的data infra control

plane的需求§ 支持

IaC

实践§ 提供声明式

APIK8s

APIAutomation§ 学习曲线类似§ 支持新业务扩展新引擎通过抽象和扩展API实现对多种数据库的统一管理K8s

APIkbcli领域模型YAML低代码扩展PodSchedulerCSI……生命周期配置管理备份还原高可用账号管理监控日志MySQL

CRRedis

CRPG

CRMongoDB

CRKafka

CRPulsar

CRStarRocks

CROceanBase

CR……K8s容器编排声明式

API人工操作KubeBlocks

CloudIaC自动化OpenAPI扩展APIKubeBlocks

API对分布式数据库的拓扑进行抽象Cluster&ClusterDefinitionComponent&ComponentDefinitionInstanceSetInstanceK8s

抽象PodPVCConfigmapServiceTolerationAffinity……抽象把KubeBlocks

API映射到数据库

MySQLCluster:MySQLComponent:MySQLInstanceSetInstancePodPVCService抽象InstanceInstanceComponent:OrchestratorInstanceSetInstanceInstanceInstanceComponent:ProxyInstanceSetInstanceInstancePodServicePodService把KubeBlocks

API映射到数据库

OceanBaseCluster:Oceanbase-paxosComponent:OceanbaseInstanceSetInstancePodPVCService抽象InstanceInstance把KubeBlocks

API映射到数据库

OceanBase主备Cluster:Oceanbase-masterslaveComponent:Oceanbase-replComponent:Oceanbase-replInstanceSetInstanceInstanceSetInstancePodPVCServicePodPVCService抽象把KubeBlocks

API映射到数据库

MogDBCluster:MogDB-masterslaveComponent:mogdbInstanceSet抽象InstanceInstancePodPVCService把KubeBlocks

API映射到数据库

Redis主备Cluster:Redis-masterslaveComponent:RedisComponent:SentinelInstanceSetInstanceSetInstanceInstanceInstancePodPVCService抽象InstanceInstancePodPVCService把KubeBlocks

API映射到数据库

Redis

ClusterCluster:Redis-clusterComponent:redisComponent:redisComponent:redisComponent:redisComponent:redisInstanceSetInstanceSetInstanceSetInstanceSetInstanceSet抽象InstanceInstanceInstanceInstanceInstanceInstanceInstanceInstanceInstanceInstancePodPVCServicePodPVCServicePodPVCServicePodPVCServicePodPVCService把KubeBlocks

API映射到数据库

KafkaCluster:

kafkaComponent:brokerComponent:controllerComponent:exporterInstanceSetInstanceSetInstanceSetInstanceInstanceInstanceInstanceInstancePodPVCService抽象InstanceInstanceInstancePodPVCServiceInstancePod把KubeBlocks

API映射到数据库

PulsarCluster:

pulsarComponent:pulsar-brokerComponent:pulsar-proxyComponent:bookiesComponent:zookeeperInstanceSetInstanceSetInstanceSetInstanceSetInstanceInstanceInstanceInstanceInstanceInstanceInstanceInstancePodPVCServicePodPVCService抽象InstanceInstanceInstanceInstanceInstancePodPVCServiceInstanceInstanceInstanceInstanceInstancePodPVCService不同层次KubeBlocks

API的不同用途分层Cluster&ClusterDefinitionComponent&ComponentDefinitionInstanceSetInstanceK8s

抽象PodPVCConfigmapServiceTolerationAffinity……表达一个分布式集群内多个Component的拓扑关系表达一个分布式集群内Component之间的启动依赖顺序表达一个分布式集群内Component之间的引用关系(服务、配置)管理Cluster对外暴露的Service不同层次KubeBlocks

API的不同用途分层Cluster&ClusterDefinitionComponent&ComponentDefinitionInstanceSetInstanceK8s

抽象PodPVCConfigmapServiceTolerationAffinity……描述单个组件的镜像、配置模板、运行脚本、监控日志采集等通过Actions描述单个组件的行为分布式数据库通过动态增减Component可以实现shardsscale-in/out不同层次KubeBlocks

API的不同用途分层PodPVCConfigmapServiceTolerationAffinity……管理一个复制集中多个副本间的复制关系和每个副本的角色管理外部负载均衡器到副本的路由管理升级、重启多个副本的顺序和并发策略管理指定副本的上线、下线支持不同的副本有不同镜像、配置和资源需求Cluster&ClusterDefinitionComponent&ComponentDefinitionInstanceSetInstanceK8s

抽象不同层次KubeBlocks

API的不同用途分层Cluster&ClusterDefinitionComponent&ComponentDefinitionInstanceSetInstanceK8s

抽象PodPVCConfigmapServiceTolerationAffinity……管理磁盘的扩容、缩容管理多IP/host

network地址/nodeport地址/LB地址等支持数据库插件、工具的动态加载支持Auto-Scale通过扩展API定义不同数据库的差异Cluster&ClusterDefinitionComponent&ComponentDefinitionInstanceSetInstanceK8s

抽象PodPVCConfigmapServiceTolerationAffinity……不同Cluster具有不同的拓扑和组件不同Component的模板和行为也不一样需要通过ClusterDefinition和ComponentDefinitionAPI来编码(YAML)低代码的开发KubeBlocks插件扩展低代码插件扩展新引擎

案例

向量数据库Qdrant1每个组件如何配置和启动配置文件 启动脚本服务端口要创建哪些组件Qdrant-web-ui浏览器客户端Qdrant计算+存储层Qdrant-Tools内置运维工具扩展低代码插件扩展新引擎

案例

向量数据库Qdrant2ClusterDefinition.yaml定义集群拓扑和组件配置,每个集群一个,为每个组件填写volumeMounts数据文件和日志文件目录configSpec配置文件scriptSpec脚本文件command,ports启动命令和服务端口ClusterVersion.yaml为每个组件填写:

Image

信息kind:

ClusterDefinitionmetadata:name:qdrantspec:componentDefs:-name:qdrant

configSpecs:…monitor:…scriptSpecs:…podSpec:containers:-command:

ports:…

volumeMounts:…kind:

ClusterVersionmetadata:name:qdrant-1.5.0spec:clusterDefinitionRef:

qdrantcomponentVersions:componentDefRef:

qdrant

versionsContext:containers:image:qdrant:v1.5.0name:

qdrantimage:qdrant-web-ui:latest

name:web-uiimage:curl-jq:latestname:

qdrant-tools扩展低代码插件扩展新引擎

案例

向量数据库Qdrant3addon.yaml描述Qdrant,

指定是否默认安装等信息*

KubeBlocks

CICD

流程会自动创建

qdrant.tgz,开发者不需要关心Qdrant

Addon配置

Qdrant

Addon

要写多少代码?开发时间~2周低代码行数~2000行配置yaml:~600scripts:~200configs:~200json:

~1200kind:

Addonmetadata:name:

qdrantspec:description:Qdrantisanopensourcevectorsimilaritysearch.helm:chartLocationURL:https://.../charts/qdrant.tgz*installable:autoInstall:

falsetype:

Helm扩展低代码插件扩展新引擎

案例

向量数据库Qdrant*Richday-2

operations2步创建集群Step

1:

打开

addonStep

2:

创建

myqdrantStep

X:

集群运维kbcliaddonenable

qdrantkbcliclustercreatemyqdrant--cluster-definition

qdrantkbclicluster<ops>

myqdrant运维任务 支持情况Stop/Start YRestart YUpgrade YVolume-Expand

YVScale YHScale YBackup/Restore Y扩展像搭乐高积木一样标准与高效的在K8s上组装数据库基础设施拆解元件(Component)基于KubeBlocks(Addon)组装式搭建(Cluster)组装通过Component灵活组装Redis的多种部署形态1.

单节点SSS2.

主从+SentinelHASSS3.RedisProxy+RedisShards+

SentinelHARedis

Proxy4.Redis

Cluster组装为企业在

K8s

上搭建统一管理多种数据库的

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

是一个开源的在

K8s

上运行和管理数据基础设施的系统软件,它帮助开发人员、SRE、平台工程师在企业中部署和维护专用的DBPaaS,并支持多种公共云和私有云环境。为数据库运维提供丰富的

Day-2

Operations集群管理水平伸缩垂直伸缩存储扩容参数设置重启停止/启动版本升级账号管理可观测性备份恢复内置

Prometheus与外部监控系统无缝集成多层级监控大盘IM/EMAIL

报警基于快照的自动备份集成流行的备份工具保存在低成本的对象存储全量恢复/按时间点恢复高可用数据迁移FailoverSwitchover可配置的故障隔离级别内置迁移工具外部数据库导入mysql2mysqlpg2pg异构迁移混沌测试性能测试故障注入

Fault-inject故障观测

NyancatBench-

tpccBench-

fio基础插件三方引擎PrometheusCsi-s3-driverNebulaRisingWaveqdrantweaviateMilvusGrafanaAws

loadbalancercontrollerPikaKubeBlocks

高可用架构设计支持多种数据库的高可用集群配置LeaderFollowerFollowerPaxosOceanBasePostgreSQLPrimaryPostgresPatroniSecondaryPostgresPatroniSentinelMasterSlaveRedisOrchestratorMasterSlaveMySQL角色/健康探测探测节点可用性切换角色

Label控制粒度到Pod滚动更新,控制节点变更顺序计划内角色切换容灾调度策略不同节点部署不同可用区部署支持集成第三方高可用组件可定制健康探测,结合系统信息综合判断节点异常时提供自修复能力SSenetnintienlelKubeBlocks

备份恢复设计Backup

CRBackupPolicy

CRBackupSchedule

CRActionSet

CRBackupRepo

CRStorageProvider

CRRestore

CRDataProtection

ControllersGC

ControllerDB

PodBackup

Jobcsi-s3对象存储miniogcscosobsosss3VolumeSnapshots备份方法卷快照备份备份工具备份,如

xtrabackup,pg_basebackup

等触发方式按需备份自动备份备份类型全量备份持续备份(PITR)备份仓库兼容

S3

协议的多云的对象存储MinIONAS其他存储NAS备份监控ü

备份中心对备份成功率、备份速度进行实时监控ü

备份仓库存储用量的监控备份保存ü

备份可保存在本地NAS设备,也可保存到云端对象存储ü

已删除集群的备份可永久保留,可自定义保留最近一份备份,或者保留全部备份备份恢复ü

支持备份集恢复和时间点恢复,数据零丢失ü

发起恢复时可选择同环境恢复或者跨环境恢复,通过跨环境恢复可实现异地灾备KubeBlocks

可观测性设计Oteld

CRMonitorDefinitionCRLogsExporterSinkCRMetricsExporterSinkCROtel

OperatorBackend

storageprometheusVictoriaMetricsdatadogclickhousekafkaNodeelasticsearchlokis3DB-Pod-0db-containerDB-Pod-ndb-containerDaemonsetOteldCollectorSinkpluginsNodeDashboardExternalMonitoringWriteReadRead现代可观测性技术栈ü

基于OpenTelemetry标准设计监控系统的接口和数据格式,使得跨系统的分析更加高效ü

Prometheus/vm用于收集监控指标,Grafana负责可视化,loki用于日志收集与查询多样化监控插件ü通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论