TiDB Operator 简介

    TiDB Operator 与适用的 TiDB 版本的对应关系如下:

    其中, 是由 CRD(CustomResourceDefinition)定义的自定义资源,用于描述用户期望的 TiDB 集群状态。TiDB 集群的编排和调度逻辑则由下列组件负责:

    • tidb-controller-manager 是一组 Kubernetes 上的自定义控制器。这些控制器会不断对比 TidbCluster 对象中记录的期望状态与 TiDB 集群的实际状态,并调整 Kubernetes 中的资源以驱动 TiDB 集群满足期望状态;
    • tidb-scheduler 是一个 Kubernetes 调度器扩展,它为 Kubernetes 调度器注入 TiDB 集群特有的调度逻辑。

    TiDB Operator Control Flow

    上图是 TiDB Operator 的控制流程解析。由于 TiDB 集群还需要监控、初始化、定时备份、Binlog 等组件,TiDB Operator 中使用 Helm Chart 封装了 TiDB 集群定义。整体的控制流程如下:

    1. 用户通过 Helm 创建 TidbCluster 对象和相应的一系列 Kubernetes 原生对象,比如执行定时备份的 ;
    2. TiDB Operator 会 watch TidbCluster 以及其它相关对象,基于集群的实际状态不断调整 PD、TiKV、TiDB 的 StatefulSetService 对象;
    3. Kubernetes 的原生控制器根据 StatefulSetDeploymentCronJob 等对象创建更新或删除对应的 ;
    4. PD、TiKV、TiDB 的 Pod 声明中会指定使用 tidb-scheduler 调度器,tidb-scheduler 会在调度对应 Pod 时应用 TiDB 的特定调度逻辑。

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

    使用 TiDB Operator 管理 TiDB 集群

    TiDB Operator 提供了多种方式来部署 Kubernetes 上的 TiDB 集群:

    • 测试环境:

      • :使用 TiDB Operator 在本地 Minikube 环境部署 TiDB 集群;
      • GKE:使用 TiDB Operator 在 GKE 上部署 TiDB 集群。
      • 公有云:参考 ,GKE 部署文档 (beta),或在对应的公有云上一键部署生产可用的 TiDB 集群并进行后续的运维管理;

      • 现有 Kubernetes 集群:首先按照部署 TiDB Operator在集群中安装 TiDB Operator,再根据来部署你的 TiDB 集群。对于生产级 TiDB 集群,你还需要参考 TiDB 集群环境要求调整 Kubernetes 集群配置并根据为你的 Kubernetes 集群配置本地 PV,以满足 TiKV 的低延迟本地存储需求。

    在任何环境上部署前,都可以参考 TiDB 集群配置来自定义 TiDB 配置。

    部署完成后,你可以参考下面的文档进行 Kubernetes 上 TiDB 集群的使用和运维:

    当集群出现问题需要进行诊断时,你可以:

    • 参考 使用指南 来使用 tkctl
    • 参考 来了解 TiDB 生态工具在 Kubernetes 上的使用方法。

    最后,当 TiDB Operator 发布新版本时,你可以参考升级 TiDB Operator 进行版本更新。