返回介绍

TiDB Operator 架构

发布于 2020-10-27 04:51:20 字数 2294 浏览 1099 评论 0 收藏 0

本文档介绍 TiDB Operator 的架构及其工作原理。

架构

下图是 TiDB Operator 的架构概览。

TiDB Operator Overview

其中,TidbClusterTidbMonitorTidbInitializerBackupRestoreBackupScheduleTidbClusterAutoScaler 是由 CRD(CustomResourceDefinition)定义的自定义资源:

  • TidbCluster 用于描述用户期望的 TiDB 集群
  • TidbMonitor 用于描述用户期望的 TiDB 集群监控组件
  • TidbInitializer 用于描述用户期望的 TiDB 集群初始化 Job
  • Backup 用于描述用户期望的 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 进行部署、管理。

TiDB Operator Control Flow

整体的控制流程如下:

  1. 用户通过 kubectl 创建 TidbCluster 和其他 CR 对象,比如 TidbMonitor 等;
  2. TiDB Operator 会 watch TidbCluster 以及其它相关对象,基于集群的实际状态不断调整 PD、TiKV、TiDB 或者 Monitor 等组件的 StatefulSetDeploymentService 等对象;
  3. Kubernetes 的原生控制器根据 StatefulSetDeploymentJob 等对象创建更新或删除对应的 Pod
  4. PD、TiKV、TiDB 的 Pod 声明中会指定使用 tidb-scheduler 调度器,tidb-scheduler 会在调度对应 Pod 时应用 TiDB 的特定调度逻辑。

基于上述的声明式控制流程,TiDB Operator 能够自动进行集群节点健康检查和故障恢复。部署、升级、扩缩容等操作也可以通过修改 TidbCluster 对象声明“一键”完成。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文