TiDB Operator 灰度升级
本文介绍如何灰度升级 TiDB Operator。灰度升级可以控制 TiDB Operator 升级的影响范围,避免由于 TiDB Operator 升级导致对整个 Kubernetes 集群中的所有 TiDB 集群产生不可预知的影响,在确认 TiDB Operator 升级的影响或者确认 TiDB Operator 新版本能正常稳定工作后再正常升级 TiDB Operator。
相关参数
为了支持灰度升级 TiDB Operator,tidb-operator
chart 中 values.yaml
文件里面添加了一些参数,可以参考文档。
灰度升级 TiDB Operator
为当前 TiDB Operator 配置 selector。
参考升级 TiDB Operator 文档,在 values.yaml 中添加如下配置,升级当前 TiDB Operator:
controllerManager: selector: - version!=canary如果之前已经执行过上述步骤,可以直接进入下一步。
部署灰度 TiDB Operator。
参考部署 TiDB Operator 文档,在
values.yaml
中添加如下配置,在不同的 namespace 中(例如tidb-admin-canary
)使用不同的 Helm Release Name(例如helm install tidb-operator-canary ...
)部署灰度 TiDB Operator:controllerManager: selector: - version=canary appendReleaseSuffix: true #scheduler: # create: false advancedStatefulset: create: false admissionWebhook: create: false如果需要测试 tidb-controller-manager 灰度升级,通过如下命令为某个 TiDB 集群设置 label:
kubectl -n ${namespace} label tc ${cluster_name} version=canary通过查看已经部署的两个 tidb-controller-manager 的日志可以确认,这个 TiDB 集群已经归灰度 TiDB Operator 管理。
查看当前 TiDB Operator
tidb-controller-manager
的日志:kubectl -n tidb-admin logs tidb-controller-manager-55b887bdc9-lzdwvI0305 07:52:04.558973 1 tidb_cluster_controller.go:148] TidbCluster has been deleted tidb-cluster-1/basic1查看灰度 TiDB Operator
tidb-controller-manager
的日志:kubectl -n tidb-admin-canary logs tidb-controller-manager-canary-6dcb9bdd95-qf4qrI0113 03:38:43.859387 1 tidbcluster_control.go:69] TidbCluster: [tidb-cluster-1/basic1] updated successfully
如果需要测试 tidb-scheduler 灰度升级,通过如下命令为某个 TiDB 集群修改
spec.schedulerName
为tidb-scheduler-canary
:kubectl -n ${namespace} edit tc ${cluster_name}修改后,集群内各组件会滚动升级,可以通过查看灰度 TiDB Operator
tidb-scheduler
的日志确认集群已经使用灰度tidb-scheduler
:kubectl -n tidb-admin-canary logs tidb-scheduler-canary-7f7b6c7c6-j5p2j -c tidb-scheduler灰度测试完成后,可以将 3,4 步骤中的修改改回去,重新使用当前 TiDB Operator 管理。
kubectl -n ${namespace} label tc ${cluster_name} version-kubectl -n ${namespace} edit tc ${cluster_name}删除灰度 TiDB Operator。
helm -n tidb-admin-canary uninstall ${release_name}参考升级 TiDB Operator 文档正常升级当前 TiDB Operator。