升级 TiDB Operator

本文介绍如何升级 TiDB Operator 到指定版本。你可以选择在线升级离线升级

在线升级

如果服务器可以访问外网,你可以按照以下步骤在线升级 TiDB Operator:

  1. 升级 TiDB Operator 前,确保 Helm repo 包含你需要升级的 TiDB Operator 版本。通过以下命令查看 Helm repo 包含的 TiDB Operator 版本:

    helm search repo -l tidb-operator
    

    如果输出中未包含你需要的新版本,可以使用 helm repo update 命令更新 repo。详情请参考配置 Helm repo

  2. 更新 Kubernetes 的 CustomResourceDefinition (CRD)。关于 CRD 的更多信息,请参阅 CustomResourceDefinition

    kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.2.7/manifests/crd.yaml && \
    kubectl get crd tidbclusters.pingcap.com
    
  3. 获取你要升级的 tidb-operator chart 中的 values.yaml 文件:

    mkdir -p ${HOME}/tidb-operator/v1.2.7 && \
    helm inspect values pingcap/tidb-operator --version=v1.2.7 > ${HOME}/tidb-operator/v1.2.7/values-tidb-operator.yaml
    
  4. 修改 ${HOME}/tidb-operator/v1.2.7/values-tidb-operator.yamloperatorImage 镜像版本为要升级到的版本。

  5. 如果你在旧版本 values.yaml 中设置了自定义配置,将自定义配置合并到 ${HOME}/tidb-operator/v1.2.7/values-tidb-operator.yaml 中。

  6. 执行升级:

    helm upgrade tidb-operator pingcap/tidb-operator --version=v1.2.7 -f ${HOME}/tidb-operator/v1.2.7/values-tidb-operator.yaml
    
  7. Pod 全部正常启动之后,运行以下命令确认 TiDB Operator 镜像版本:

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

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

    image: pingcap/tidb-operator:v1.2.7
    image: docker.io/pingcap/tidb-operator:v1.2.7
    image: pingcap/tidb-operator:v1.2.7
    image: docker.io/pingcap/tidb-operator:v1.2.7
    
    注意

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

离线升级

如果服务器没有连接外网,你可以按照以下步骤离线升级 TiDB Operator:

  1. 使用有外网的机器,下载升级所需的文件和镜像。

    1. 下载 TiDB Operator 需要的 crd.yaml 文件。关于 CRD 的更多信息,请参阅 CustomResourceDefinition

      wget https://raw.githubusercontent.com/pingcap/tidb-operator/v1.2.7/manifests/crd.yaml
      
    2. 下载 tidb-operator chart 包文件:

      wget http://charts.pingcap.org/tidb-operator-v1.2.7.tgz
      
    3. 下载 TiDB Operator 升级所需的 Docker 镜像:

      docker pull pingcap/tidb-operator:v1.2.7
      docker pull pingcap/tidb-backup-manager:v1.2.7
      
      docker save -o tidb-operator-v1.2.7.tar pingcap/tidb-operator:v1.2.7
      docker save -o tidb-backup-manager-v1.2.7.tar pingcap/tidb-backup-manager:v1.2.7
      
  2. 将下载的文件和镜像上传到需要升级的服务器上,在服务器上按照以下步骤进行安装:

    1. 安装 TiDB Operator 需要的 crd.yaml 文件:

      kubectl apply -f ./crd.yaml
      
    2. 解压 tidb-operator chart 包文件,并拷贝 values.yaml 文件到升级目录:

      tar zxvf tidb-operator-v1.2.7.tgz && \
      mkdir -p ${HOME}/tidb-operator/v1.2.7 && \
      cp tidb-operator/values.yaml ${HOME}/tidb-operator/v1.2.7/values-tidb-operator.yaml
      
    3. 安装 Docker 镜像到服务器上:

      docker load -i tidb-operator-v1.2.7.tar && \
      docker load -i tidb-backup-manager-v1.2.7.tar
      
  3. 修改 ${HOME}/tidb-operator/v1.2.7/values-tidb-operator.yamloperatorImage 镜像版本为要升级到的版本。

  4. 如果你在旧版本 values.yaml 中设置了自定义配置,将自定义配置合并到 ${HOME}/tidb-operator/v1.2.7/values-tidb-operator.yaml 中。

  5. 执行升级:

    helm upgrade tidb-operator ./tidb-operator --version=v1.2.7 -f ${HOME}/tidb-operator/v1.2.7/values-tidb-operator.yaml
    
  6. Pod 全部正常启动之后,运行以下命令确认 TiDB Operator 镜像版本:

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

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

    image: pingcap/tidb-operator:v1.2.7
    image: docker.io/pingcap/tidb-operator:v1.2.7
    image: pingcap/tidb-operator:v1.2.7
    image: docker.io/pingcap/tidb-operator:v1.2.7
    
    注意

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

文档内容是否有帮助?