- 关于 TiDB Operator
- Kubernetes 上使用 TiDB Operator 快速上手
- 部署
- 安全
- 运维
- 灾难恢复
- 使用 TiDB Lightning 恢复 Kubernetes 上的集群数据
- 故障诊断
- Kubernetes 上的 TiDB 集群常见问题
- 参考
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
TiDB Operator 架构
本文档介绍 TiDB Operator 的架构及其工作原理。
架构
下图是 TiDB Operator 的架构概览。
其中,TidbCluster
、TidbMonitor
、TidbInitializer
、Backup
、Restore
、BackupSchedule
、TidbClusterAutoScaler
是由 CRD(CustomResourceDefinition
)定义的自定义资源:
TidbCluster
用于描述用户期望的 TiDB 集群TidbMonitor
用于描述用户期望的 TiDB 集群监控组件TidbInitializer
用于描述用户期望的 TiDB 集群初始化 JobBackup
用于描述用户期望的 TiDB 集群备份Restore
用于描述用户期望的 TiDB 集群恢复BackupSchedule
用于描述用户期望的 TiDB 集群周期性备份TidbClusterAutoScaler
用于描述用户期望的 TiDB 集群自动伸缩
TiDB 集群的编排和调度逻辑则由下列组件负责:
tidb-controller-manager
是一组 Kubernetes 上的自定义控制器。这些控制器会不断对比TidbCluster
对象中记录的期望状态与 TiDB 集群的实际状态,并调整 Kubernetes 中的资源以驱动 TiDB 集群满足期望状态,并根据其他 CR 完成相应的控制逻辑;tidb-scheduler
是一个 Kubernetes 调度器扩展,它为 Kubernetes 调度器注入 TiDB 集群特有的调度逻辑。tidb-admission-webhook
是一个 Kubernetes 动态准入控制器,完成 Pod、StatefulSet 等相关资源的修改、验证与运维。
此外,TiDB Operator 还提供了命令行接口 tkctl
用于运维集群和诊断集群问题。
流程解析
下图是 TiDB Operator 的控制流程解析。从 TiDB Operator v1.1 开始,TiDB 集群、监控、初始化、备份等组件,都通过 CR 进行部署、管理。
整体的控制流程如下:
- 用户通过 kubectl 创建
TidbCluster
和其他 CR 对象,比如TidbMonitor
等; - TiDB Operator 会 watch
TidbCluster
以及其它相关对象,基于集群的实际状态不断调整 PD、TiKV、TiDB 或者 Monitor 等组件的StatefulSet
、Deployment
和Service
等对象; - Kubernetes 的原生控制器根据
StatefulSet
、Deployment
、Job
等对象创建更新或删除对应的Pod
; - PD、TiKV、TiDB 的
Pod
声明中会指定使用tidb-scheduler
调度器,tidb-scheduler
会在调度对应Pod
时应用 TiDB 的特定调度逻辑。
基于上述的声明式控制流程,TiDB Operator 能够自动进行集群节点健康检查和故障恢复。部署、升级、扩缩容等操作也可以通过修改 TidbCluster
对象声明“一键”完成。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论