使用多套 TiDB Operator 单独管理不同的 TiDB 集群

你可使用一套 TiDB Operator 管理多个 TiDB 集群。如果你有以下业务需求,可以部署多套 TiDB Operator 分别管理不同的 TiDB 集群:

  • 需要灰度升级 TiDB Operator 至新版本,避免新版本存在潜在问题影响业务
  • 业务中有多个 TiDB 集群,且每个集群归属不同业务部门,各部门需要单独管理各自的集群

本文介绍如何部署多套 TiDB Operator,分别管理不同的 TiDB 集群。

在使用 TiDB Operator 时,tidb-scheduler 并不是必须使用。你可以参考 tidb-scheduler 与 default-scheduler,确认是否需要部署 tidb-scheduler

注意

  • 目前仅支持部署多套 tidb-controller-manager 和 tidb-scheduler,不支持部署多套 AdvancedStatefulSet controller 和 AdmissionWebhook。
  • 如果部署了多套 TiDB Operator,有的开启了 Advanced StatefulSet,有的没有开启,那么同一个 TidbCluster Custom Resource (CR) 不能在这些 TiDB Operator 之间切换。
  • v1.1.10 开始支持此项功能。

操作步骤

  1. 部署第一套 TiDB Operator。

    参考部署 TiDB Operator 文档 - 自定义配置 TiDB Operator,在 values.yaml 中添加如下配置,部署第一套 TiDB Operator:

     

    controllerManager: selector: - user=dev

  2. 部署第一套 TiDB 集群。

    1. 参考在 Kubernetes 中配置 TiDB 集群 - 部署配置配置 TidbCluster CR,并配置 labels 匹配上一步中为 tidb-controller-manager 配置的 selector,例如:

       

      apiVersion: pingcap.com/v1alpha1 kind: TidbCluster metadata: name: basic1 labels: user: dev spec: ...

      如果创建 TiDB 集群时没有设置 label,也可以通过如下命令设置:

       

      kubectl -n ${namespace} label tidbcluster ${cluster_name} user=dev

    2. 参考在 Kubernetes 中部署 TiDB 集群部署 TiDB 集群,并确认集群各组件正常启动。

  3. 部署第二套 TiDB Operator。

    参考部署 TiDB Operator 文档,在 values.yaml 中添加如下配置,在不同的 namespace 中(例如 tidb-admin-qa)使用不同的 Helm Release Name(例如 helm install tidb-operator-qa ...)部署第二套 TiDB Operator(没有部署 tidb-scheduler):

     

    controllerManager: selector: - user=qa appendReleaseSuffix: true scheduler: # 如果你不需要 `tidb-scheduler`,将这个值设置为 false create: false advancedStatefulset: create: false admissionWebhook: create: false

    注意

    • 建议在单独的 namespace 部署新的 TiDB Operator。
    • appendReleaseSuffix 需要设置为 true
    • 如果配置 scheduler.create: true,会创建一个名字为 {{ .scheduler.schedulerName }}-{{.Release.Name}} 的 scheduler,要使用这个 scheduler,需要配置 TidbCluster CR 中的 spec.schedulerName 为这个 scheduler。
    • 由于不支持部署多套 AdvancedStatefulSet controller 和 AdmissionWebhook,需要配置 advancedStatefulset.create: false 和 admissionWebhook.create: false
  4. 部署第二套 TiDB 集群。

    1. 参考在 Kubernetes 中配置 TiDB 集群配置 TidbCluster CR,并配置 labels 匹配上一步中为 tidb-controller-manager 配置的 selector,例如:

       

      apiVersion: pingcap.com/v1alpha1 kind: TidbCluster metadata: name: basic2 labels: user: qa spec: ...

      如果创建 TiDB 集群时没有设置 label,也可以通过如下命令设置:

       

      kubectl -n ${namespace} label tidbcluster ${cluster_name} user=qa

    2. 参考在 Kubernetes 中部署 TiDB 集群部署 TiDB 集群,并确认集群各组件正常启动。

  5. 查看两套 TiDB Operator 的日志,确认两套 TiDB Operator 分别管理各自匹配 selector 的 TiDB 集群。

    示例:

    查看第一套 TiDB Operator tidb-controller-manager 的日志:

     

    kubectl -n tidb-admin logs tidb-controller-manager-55b887bdc9-lzdwv

    Output

    查看第二套 TiDB Operator tidb-controller-manager 的日志:

     

    kubectl -n tidb-admin-qa logs tidb-controller-manager-qa-5dfcd7f9-vll4c

    Output

    通过对比两套 TiDB Operator tidb-controller-manager 日志,第一套 TiDB Operator 仅管理 tidb-cluster-1/basic1 集群,第二套 TiDB Operator 仅管理 tidb-cluster-2/basic2 集群。

如果需要部署第三套或更多 TiDB Operator 来管理集群,重复第 3 步、第 4 步和第 5 步的操作即可。

相关参数

tidb-operator chart 的 values.yaml 文件里,有以下参数与部署多套 TiDB Operator 相关。

  • appendReleaseSuffix

    如果配置为 true,部署时会自动为 tidb-controller-manager 和 tidb-scheduler 相关的资源名称添加后缀 -{{ .Release.Name }}。例如,通过 helm install canary pingcap/tidb-operator ... 命令部署的 tidb-controller-manager deployment 名称为:tidb-controller-manager-canary。如果要部署多套 TiDB Operator,需要开启此参数。

    默认值:false

  • controllerManager.create

    控制是否创建 tidb-controller-manager

    默认值:true

  • controllerManager.selector

    配置 tidb-controller-manager 的 -selector 参数,用于根据 CR 的 label 筛选 tidb-controller-manager 控制的 CR,多个 selector 之间为 and 关系。

    默认值:[],控制所有 CR。

    示例:

     

    selector: - canary-release=v1 - k1==v1 - k2!=v2

  • scheduler.create

    控制是否创建 tidb-scheduler。在使用 TiDB Operator 时,tidb-scheduler 并不是必须使用。你可以参考 tidb-scheduler 与 default-scheduler,确认是否需要部署 tidb-scheduler

    默认值:true

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天读点书学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值