黄东旭解析 TiDB 的核心优势
769
2023-04-05
在使用TiDB Operator部署管理 Kubernetes 上的 TiDB 集群时,有时需要对Operator进行升级,从而达到更稳定的管理tidb集群的功能和扩展一些新功能。一般在升级TiDB Operator的时候有常规升级和灰度升级。如果希望升级TiDB Operator至新版本,同时控制升级的影响范围,避免对整个 Kubernetes 集群中的所有 TiDB 集群产生不可预知的影响,可以采用灰度升级的方式升级 TiDB Operator。使用灰度升级后,你可以在灰度部署的集群中确认 TiDB Operator 升级的影响,在确认 TiDB Operator 新版本稳定工作后,再常规升级TiDB Operator。
常规升级指升级TiDB Operator到指定的版本,一般常用的方式有在线升级(可以连外网)和离线升级(不能连外网)。
如果输出中未包含你需要的版本则可以执行如下添加helm chart仓库,然后升级
1、添加chart仓库 helm repo add pingcap https://charts.pingcap.org/ 2、更新chart仓库 helm repo update 3、搜索提供的chart仓库 helm search repo pingcap如果 TiDB Operator 从 v1.3.x 升级到 v1.4.0 及以后版本,需要先执行下面命令创建新增加的 TidbDashboard CRD。如果是 v1.4.0 及以后版本的 TiDB Operator 升级,可跳过这一步
kubectl create -f https://raw.githubusercontent.com/pingcap/tidb-operator/${operator_version}/manifests/crd/v1/pingcap.com_tidbdashboards.yaml更新CRD
kubectl replace -f https://raw.githubusercontent.com/pingcap/tidb-operator/${operator_version}/manifests/crd.yaml && \ kubectl get crd tidbclusters.pingcap.com如果Kubernetes版本小于1.16如果 TiDB Operator 从 v1.3.x 升级到 v1.4.0 及以后版本,需要先执行下面命令创建新增加的 TidbDashboard CRD。如果是 v1.4.0 及以后版本的 TiDB Operator 升级,可跳过这一步。
kubectl create -f https://raw.githubusercontent.com/pingcap/tidb-operator/${operator_version}/manifests/crd/v1beta1/pingcap.com_tidbdashboards.yaml更新 CRD。
kubectl replace -f https://raw.githubusercontent.com/pingcap/tidb-operator/${operator_version}/manifests/crd_v1beta1.yaml && \ kubectl get crd tidbclusters.pingcap.com旧版本 values.yaml 中设置了自定义配置,将自定义配置合并到 ${HOME}/tidb-operator/v1.4.0/values-tidb-operator.yaml 中。
如果不加namespaces的话会出现如下报错:Error: UPGRADE FAILED: "tidb-operator" has no deployed releases"
解决步骤如下:加上命名空间tidb-admin,如果不清楚命名空间可以通过如下进行查询。
[root@k8s-master ~]# helm list -A NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION 6 tidb 1 2022-12-02 14:48:48.917604258 +0800 CST failed tidb-lightning-v1.3.9 6.1.0 tidb 1 2022-12-02 12:25:10.149345501 +0800 CST failed tidb-lightning-v1.3.9 chaos-mesh chaos-testing 2 2022-06-09 16:51:49.542186958 +0800 CST deployed chaos-mesh-2.1.4 2.1.4 lightning tidb 1 2022-12-02 14:49:21.495945953 +0800 CST deployed tidb-lightning-v1.3.9 tidb-operator tidb-admin 10 2023-01-10 13:50:24.288162887 +0800 CST deployed tidb-operator-v1.4.0 v1.4.0 v1.3 tidb 1 2022-12-02 12:26:32.639264502 +0800 CST failed tidb-lightning-v1.3.9 v6.1.0 tidb 1 2022-12-02 12:24:46.04948406 +0800 CST failed tidb-lightning-v1.3.9 v6.1.0-20221130 tidb 1 2022-12-02 12:32:32.747777196 +0800 CST failed tidb-lightning-v1.3.9 升级后加上命名空间就可以解决了如果输出类似下方的结果,则表示升级成功。其中,v1.4.0 表示已升级到的版本号。
TiDB Operator 升级之后,所有 TiDB 集群中的 discovery Deployment 都会自动升级到对应的 TiDB Operator 版本。
如果Kubernetes版本大于1.16
wget -O crd.yaml https://raw.githubusercontent.com/pingcap/tidb-operator/${operator_version}/manifests/crd.yaml如果Kubernetes版本小于1.16
wget -O crd.yaml https://raw.githubusercontent.com/pingcap/tidb-operator/${operator_version}/manifests/crd_v1beta1.yaml下载tidb-operator chart包文件wget http://charts.pingcap.org/tidb-operator-v1.4.0.tgz下载所需的镜像文件docker pull pingcap/tidb-operator:v1.4.0 docker pull pingcap/tidb-backup-manager:v1.4.0 docker save -o tidb-operator-v1.4.0.tar pingcap/tidb-operator:v1.4.0 docker save -o tidb-backup-manager-v1.4.0.tar pingcap/tidb-backup-manager:v1.4.0TiDB Operator 目前只支持对部分组件进行灰度升级,即 tidb-controller-manager 和 tidb-scheduler,不支持对增强型 StatefulSet 控制器和准入控制器进行灰度升级。
在使用 TiDB Operator 时,tidb-scheduler 并不是必须使用。你可以参考 tidb-scheduler 与 default-scheduler,确认是否需要部署 tidb-scheduler。
在当前的tidb operator的values-tidb-operator.yaml中添加如下selector配置
controllerManager: selector: - version!=canary对当前tidb operator执行升级步骤
helm upgrade tidb-operator pingcap/tidb-operator --version=${chart_version} -f ${HOME}/tidb-operator/values-tidb-operator.yaml -ntidb-admin在values-tidb-operator.yaml中添加appendReleaseSuffix 需要设置为 true。
在不同的namespaces中部署灰度的tidb operator
helm install tidb-operator-canary pingcap/tidb-operator --namespace=tidb-admin-canary --version=${operator_version} -f ${HOME}/tidb-operator/${operator_version}/values-tidb-operator.yaml将 ${operator_version} 替换为你需要灰度升级到的 TiDB Operator 版本号。
确认灰度部署的 TiDB Operator 已经正常工作后,可以正常升级 TiDB Operator。
删除灰度部署的TiDB Operatorhelm -n tidb-admin-canary uninstall ${release_name}正常升级TiDB Operator,采用常规升级即可版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。