概述

本节包含有关如何将 Rancher Server 回滚到以前版本的信息。

回滚到特定版本

如果回滚在这两种情况下,则必须遵循一些额外的说明才能使集群正常工作。

  • 从 v2.1.6+ 回滚到 v2.1.0-v2.1.5 或 v2.0.0-v2.0.10 之间的任何版本。
  • 从 v2.0.11+ 回滚到 v2.0.0-v2.0.10 之间的任何版本。

由于早期的 Rancher 版本存在安全漏洞CVE-2018-20321,如果用户需要回滚到存在此漏洞的 Rancher 的早期版本。则需要采取特殊步骤,步骤如下:

  1. 记录每个集群的serviceAccountToken。为此,将以下脚本保存在运行 rancher 容器(单节点)或可以通过 kubectl 访问 Rancher 管理平面(高可用)的计算机上,并且运行它们。在运行命令之前,请确保已安装 了 JQ。这些命令取决于您的 Rancher 安装方式。

    单节点 Rancher

    1. docker exec <NAME OF RANCHER CONTAINER> kubectl get clusters -o json | jq '[.items[] | select(any(.status.conditions[]; .type == "ServiceAccountMigrated")) | {name: .metadata.name, token: .status.serviceAccountToken}]' > tokens.json

    高可用 Rancher

    1. kubectl get clusters -o json | jq '[.items[] | select(any(.status.conditions[]; .type == "ServiceAccountMigrated")) | {name: .metadata.name, token: .status.serviceAccountToken}]' > tokens.json
  2. 执行命令后,将创建一个tokens.json文件。重要!在安全的地方备份此文件。回滚 Rancher 后,需要使用它来恢复集群功能。如果丢失此文件,则可能无法访问集群。

  3. 按照正常回滚流程回滚 Rancher。

  4. 一旦 Rancher 恢复正常,由 Rancher 管理的每个集群(导入集群除外)将处于Unvailable状态。

  5. 根据您安装 Rancher 的方式应用备份的 tokens。

    单节点 Rancher

    将以下脚本另存为apply_tokens.sh,然后保存到运行 Rancher docker 容器的机器上。并且将先前创建的tokens.json文件复制到脚本所在的目录。

    1. set -e
    2. tokens=$(jq .[] -c tokens.json)
    3. for token in $tokens; do
    4. name=$(echo $token | jq -r .name)
    5. value=$(echo $token | jq -r .token)
    6. docker exec $1 kubectl patch --type=merge clusters $name -p "{\"status\": {\"serviceAccountToken\": \"$value\"}}"
    7. done

    允许执行脚本(chmod +x apply_tokens.sh)并执行脚本,如下所示:

    1. ./apply_tokens.sh <DOCKER CONTAINER NAME>

    片刻之后,集群将从Unavailable状态回到Available状态。

    高可用 Rancher

    将以下脚本另存为apply_tokens.sh,并复制到可以通过 kubectl 访问 Rancher 管理平面的计算机上。并且将先前创建的tokens.json文件复制到脚本所在的目录。

    1. set -e
    2. tokens=$(jq .[] -c tokens.json)
    3. for token in $tokens; do
    4. name=$(echo $token | jq -r .name)
    5. value=$(echo $token | jq -r .token)
    6. kubectl patch --type=merge clusters $name -p "{\"status\": {\"serviceAccountToken\": \"$value\"}}"
    7. done

    允许执行脚本(chmod +x apply_tokens.sh)并执行脚本,如下所示:

    1. ./apply_tokens.sh

    片刻之后,集群将从Unavailable状态回到Available状态。

  6. 开始使用 Rancher。