TiDB Operator 升级
作者: lqbyz 原文来源:https://tidb.net/blog/7e3ee6ad
在使用 TiDB Operator 部署管理 Kubernetes 上的 TiDB 集群时,有时需要对 Operator 进行升级,从而达到更稳定的管理 tidb 集群的功能和扩展一些新功能。一般在升级 TiDB Operator 的时候有常规升级和灰度升级。如果希望升级 TiDB Operator 至新版本,同时控制升级的影响范围,避免对整个 Kubernetes 集群中的所有 TiDB 集群产生不可预知的影响,可以采用灰度升级的方式升级 TiDB Operator。使用灰度升级后,你可以在灰度部署的集群中确认 TiDB Operator 升级的影响,在确认 TiDB Operator 新版本稳定工作后,再常规升级 TiDB Operator。
常规升级
常规升级指升级 TiDB Operator 到指定的版本,一般常用的方式有在线升级 (可以连外网) 和离线升级 (不能连外网)。
在线升级
查看升级的 TiDB Operator 版本
如果输出中未包含你需要的版本则可以执行如下添加 helm chart 仓库,然后升级
更新 Kubernetes 的 CustomResourceDefinition (CRD)
如果 Kubernetes 版本大于等于 1.16
如果 TiDB Operator 从 v1.3.x 升级到 v1.4.0 及以后版本,需要先执行下面命令创建新增加的 TidbDashboard CRD。如果是 v1.4.0 及以后版本的 TiDB Operator 升级,可跳过这一步
更新 CRD
如果 Kubernetes 版本小于 1.16
如果 TiDB Operator 从 v1.3.x 升级到 v1.4.0 及以后版本,需要先执行下面命令创建新增加的 TidbDashboard CRD。如果是 v1.4.0 及以后版本的 TiDB Operator 升级,可跳过这一步。
更新 CRD。
创建升级的 values-tidb-operator.yaml 文件
旧版本 values.yaml
中设置了自定义配置,将自定义配置合并到 ${HOME}/tidb-operator/v1.4.0/values-tidb-operator.yaml
中。
执行升级
如果不加 namespaces 的话会出现如下报错:Error: UPGRADE FAILED: “tidb-operator” has no deployed releases”
解决步骤如下:加上命名空间 tidb-admin,如果不清楚命名空间可以通过如下进行查询。
pod 全部正常启动后,查看确认 TiDB Operator 镜像版本
如果输出类似下方的结果,则表示升级成功。其中,v1.4.0
表示已升级到的版本号。
TiDB Operator 升级之后,所有 TiDB 集群中的 discovery
Deployment 都会自动升级到对应的 TiDB Operator 版本。
离线升级
下载升级所需的文件和镜像
下载所需的 CRD.yaml 文件
如果 Kubernetes 版本大于 1.16
如果 Kubernetes 版本小于 1.16
下载 tidb-operator chart 包文件
下载所需的镜像文件
将下载文件和镜像上传到私有仓库和升级的 operator 服务器上,依次执行
修改 values.yaml 中 operatorImage 镜像版本为升级的版本
执行升级命令
pod 全部启动后,运行如下命令确认 TiDB Operator 镜像版本
灰度升级
TiDB Operator 目前只支持对部分组件进行灰度升级,即 tidb-controller-manager 和 tidb-scheduler,不支持对增强型 StatefulSet 控制器和准入控制器进行灰度升级。
在使用 TiDB Operator 时,tidb-scheduler
并不是必须使用。你可以参考 tidb-scheduler 与 default-scheduler,确认是否需要部署 tidb-scheduler
。
为当前 TiDB Operator 配置 selector 并进行升级
在当前的 tidb operator 的 values-tidb-operator.yaml 中添加如下 selector 配置
对当前 tidb operator 执行升级步骤
部署灰度的 TiDB Operator
在 values-tidb-operator.yaml 中添加appendReleaseSuffix
需要设置为 true
。
在不同的 namespaces 中部署灰度的 tidb operator
将 ${operator_version}
替换为你需要灰度升级到的 TiDB Operator 版本号。
正常升级 tidb operator
确认灰度部署的 TiDB Operator 已经正常工作后,可以正常升级 TiDB Operator。
删除灰度部署的 TiDB Operator
正常升级 TiDB Operator,采用常规升级即可
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/6da86076cc72df487e8a13ef6】。文章转载请联系作者。
评论