当前位置 : 主页 > 操作系统 > centos >

TiDB Operator升级

来源:互联网 收集:自由互联 发布时间:2023-08-21
在使用TiDB Operator部署管理 Kubernetes 上的 TiDB 集群时,有时需要对Operator进行升级,从而达到更稳定的管理tidb集群的功能和扩展一些新功能。一般在升级TiDB Operator的时候有常规升级和灰

在使用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 search repo -l tidb-operator

 TiDB Operator升级_github

如果输出中未包含你需要的版本则可以执行如下添加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升级_灰度_02

更新 Kubernetes 的 CustomResourceDefinition (CRD)

如果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/v1/pingcap.com_tidbdashboards.yaml

 TiDB Operator升级_github_03

  • 更新CRD

kubectl replace -f https://raw.githubusercontent.com/pingcap/tidb-operator/${operator_version}/manifests/crd.yaml && \
kubectl get crd tidbclusters.pingcap.com

 TiDB Operator升级_docker_04

如果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-tidb-operator.yaml文件

mkdir -p ${HOME}/tidb-operator/v1.4.0 && \
helm inspect values pingcap/tidb-operator --versinotallow=v1.4.0 > ${HOME}/tidb-operator/v1.4.0/values-tidb-operator.yaml

 TiDB Operator升级_灰度_05

旧版本 ​​values.yaml​​​ 中设置了自定义配置,将自定义配置合并到 ​​${HOME}/tidb-operator/v1.4.0/values-tidb-operator.yaml​​ 中。

执行升级

helm upgrade tidb-operator pingcap/tidb-operator --versinotallow=v1.4.0 -f ${HOME}/tidb-operator/v1.4.0/values-tidb-operator.yaml  -ntidb-admin

 TiDB Operator升级_灰度_06

如果不加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

升级后加上命名空间就可以解决了

pod全部正常启动后,查看确认TiDB Operator镜像版本

kubectl get po -n tidb-admin -l app.kubernetes.io/instance=tidb-operator -o yaml | grep 'image:.*operator:'

如果输出类似下方的结果,则表示升级成功。其中,​​v1.4.0​​ 表示已升级到的版本号。

 TiDB Operator升级_github_07

TiDB Operator 升级之后,所有 TiDB 集群中的 ​​discovery​​ Deployment 都会自动升级到对应的 TiDB Operator 版本。

离线升级

下载升级所需的文件和镜像

下载所需的CRD.yaml文件
  • 如果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.0

将下载文件和镜像上传到私有仓库和升级的operator服务器上,依次执行

1、升级 TiDB Operator 需要的 crd.yaml 文件:
kubectl replace -f ./crd.yaml
2、解压 tidb-operator chart 包文件,并拷贝 values.yaml 文件到升级目录:
tar zxvf tidb-operator-v1.4.0.tgz && \
mkdir -p ${HOME}/tidb-operator/v1.4.0 && \
cp tidb-operator/values.yaml ${HOME}/tidb-operator/v1.4.0/values-tidb-operator.yaml

修改values.yaml中operatorImage镜像版本为升级的版本

 TiDB Operator升级_docker_08

执行升级命令

helm upgrade tidb-operator ./tidb-operator --versinotallow=v1.4.0 -f ${HOME}/tidb-operator/v1.4.0/values.yaml  -n tidb-admin

pod全部启动后,运行如下命令确认TiDB Operator镜像版本

kubectl get po -n tidb-admin -l app.kubernetes.io/instance=tidb-operator -o yaml | grep 'image:.*operator:'

 TiDB Operator升级_github_09

灰度升级

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配置

controllerManager:
selector:
- version!=canary

 TiDB Operator升级_灰度_10

对当前tidb operator执行升级步骤

helm upgrade tidb-operator pingcap/tidb-operator --versinotallow=${chart_version} -f ${HOME}/tidb-operator/values-tidb-operator.yaml -ntidb-admin

 TiDB Operator升级_github_11

部署灰度的TiDB Operator

在values-tidb-operator.yaml中添加​​appendReleaseSuffix​​​ 需要设置为 ​​true​​。

 TiDB Operator升级_灰度_12

在不同的namespaces中部署灰度的tidb operator

helm install tidb-operator-canary pingcap/tidb-operator --namespace=tidb-admin-canary --versinotallow=${operator_version} -f ${HOME}/tidb-operator/${operator_version}/values-tidb-operator.yaml

将 ​​${operator_version}​​ 替换为你需要灰度升级到的 TiDB Operator 版本号。

正常升级tidb operator

确认灰度部署的 TiDB Operator 已经正常工作后,可以正常升级 TiDB Operator。

删除灰度部署的TiDB Operator

helm -n tidb-admin-canary uninstall ${release_name}

正常升级TiDB Operator,采用常规升级即可


上一篇:SSH远程管理
下一篇:没有了
网友评论