1.5. 使用 ROSA CLI 升级整个集群
升级整个集群涉及升级机器池中的托管 control plane 和节点。但是,这些组件无法同时升级。它们必须按顺序升级。这可以以任何顺序完成。但是,为了保持集群中节点间的兼容性,机器池中的节点无法使用比托管 control plane 的新版本。因此,如果机器池中的托管 control plane 和节点需要升级到同一 OpenShift 版本,您必须首先升级托管的 control plane,然后升级机器池。
先决条件
- 已安装并配置了 ROSA CLI 的最新版本。
- 没有进行其他升级,或计划在这个升级同时进行。
1.5.1. 升级托管的 control plane
当您需要升级整个集群时,首先升级托管的 control plane。
先决条件
- 已安装并配置了 ROSA CLI 的最新版本。
- 与托管的 control plane 升级相同,没有机器池升级正在进行或调度。
流程
运行以下命令,验证集群的当前版本:
$ rosa describe cluster --cluster=<cluster_name_or_id> 1
- 1
- 将
<cluster_name_or_id
> 替换为集群名称或集群 ID。
运行以下命令,列出您可以将 control plane 升级到的版本:
$ rosa list upgrade --cluster=<cluster_name_or_id>
该命令返回一个可用更新列表,包括推荐的版本。
输出示例
VERSION NOTES 4.14.8 recommended 4.14.7 4.14.6
运行以下命令升级集群的托管 control plane:
$ rosa upgrade cluster -c <cluster_name_or_id> --control-plane [--schedule-date=<yyyy-mm-dd> --schedule-time=<HH:mm>] --version <version_number>
要调度立即升级到指定版本,请运行以下命令:
$ rosa upgrade cluster -c <cluster_name_or_id> --control-plane --version <version_number>
您的托管的 control plane 会被调度立即升级。
要计划在以后的版本中升级到指定版本的升级,请运行以下命令:
$ rosa upgrade cluster -c <cluster_name_or_id> --control-plane --schedule-date=<yyyy-mm-dd> --schedule-time=<HH:mm> --version=<version_number>
您的托管 control plane 在协调通用时间(UTC)中指定的时间进行升级。
1.5.2. 升级机器池
当托管 control plane 升级完成后,您可以升级一个或多个机器池。
机器池配置,如节点排空超时、max-unavailable 和 max-surge 可能会影响升级的时间和成功。
流程
运行以下命令,验证集群的当前版本:
$ rosa describe cluster --cluster=<cluster_name_or_id> 1
- 1
- 将
<cluster_name_or_id
> 替换为集群名称或集群 ID。
输出示例
OpenShift Version: 4.14.8
运行以下命令,列出您可以将机器池升级到的版本:
$ rosa list upgrade --cluster <cluster-name> --machinepool <machinepool_name>
该命令返回一个可用更新列表,包括推荐的版本。
输出示例
VERSION NOTES 4.14.5 recommended 4.14.4 4.14.3
重要不要将机器池升级到比 control plane 高的版本。如果要移至更高的版本,请首先将 control plane 升级到那个版本。
运行以下命令,验证您要升级的机器池的升级行为:
$ rosa describe machinepool --cluster=<cluster_name_or_id> <machinepool_name>
输出示例
Replicas: 5 Node drain grace period: 30 minutes Management upgrade: - Type: Replace - Max surge: 20% - Max unavailable: 20%
在示例中,这些设置允许机器池置备一个超额节点(最多 20%
的副本
),并在升级过程中最多不可用一个节点(最多 20%的副本
)。因此,这个机器池可以一次升级两个节点,方法是在超过副本数的情况下置备一个新节点,并使一个节点不可用并替换它。如果需要保护 pod 中断预算的工作负载,节点升级可能会延迟最多 30 分钟(
node-drain-grace-period
为 30 分钟)。运行以下命令来升级机器池:
$ rosa upgrade machinepool -c <cluster_name> <machinepool_name> [--schedule-date=<yyyy-mm-dd> --schedule-time=<HH:mm>] --version <version_number>
您可以为您要升级的每个机器池运行这个命令来同时升级多个机器池。
要调度机器池的立即升级,请运行以下命令:
$ rosa upgrade machinepool -c <cluster_name> <machinepool_name> --version <version_number>
机器池被调度立即升级,它会启动指定机器池中所有节点的滚动替换。
要将升级调度到以后启动,请运行以下命令:
$ rosa upgrade machinepool -c <cluster_name> <machinepool_name> --schedule-date=<yyyy-mm-dd> --schedule-time=<HH:mm> --version <version_number>
机器池计划在协调通用时间(UTC)中指定的时间和日期开始升级。这将启动指定机器池中所有节点的滚动替换,从指定时间开始。