×

由于 Kubernetes 的基本设计,所有 OpenShift Container Platform 次要版本之间的更新必须序列化。必须从 OpenShift Container Platform <4.y> 更新到 <4.y+1>,然后更新到 <4.y+2>。不能直接从 OpenShift Container Platform <4.y> 更新到 <4.y+2>。但是,希望在两个偶数次要版本之间进行更新的管理员可以这样做,只需要重新启动一次非控制平面主机。

此更新以前称为 **EUS 到 EUS** 更新,现在称为 **仅控制平面** 更新。这些更新仅适用于 OpenShift Container Platform 的 **偶数次要版本** 之间。

尝试仅控制平面更新时,需要考虑一些注意事项。

  • 仅控制平面更新仅在所有相关版本之间的更新在 `stable` 通道中可用后才提供。

  • 如果在更新到奇数次要版本期间或之后但在更新到下一个偶数次要版本之前遇到问题,则解决这些问题可能需要非控制平面主机完成对奇数次要版本的更新才能继续。

  • 您可以通过更新工作程序或自定义池节点来进行部分更新,以适应维护所需的时间。

  • 在机器配置池取消暂停并且更新完成之前,OpenShift Container Platform 的 <4.y+1> 和 <4.y+2> 中的一些功能和错误修复程序不可用。

  • 所有集群都可能使用 EUS 通道进行常规更新而不会暂停池,但只有具有非控制平面 `MachineConfigPools` 对象的集群才能在暂停池的情况下进行仅控制平面更新。

执行仅控制平面更新

以下过程将暂停所有非 `master` 机器配置池并执行从 OpenShift Container Platform <4.y> 到 <4.y+1> 到 <4.y+2> 的更新,然后取消暂停机器配置池。遵循此过程可以减少总更新时间和工作节点重新启动的次数。

先决条件
  • 查看 OpenShift Container Platform <4.y+1> 和 <4.y+2> 的发行说明。

  • 查看任何分层产品和 Operator Lifecycle Manager (OLM) Operator 的发行说明和产品生命周期。某些产品和 OLM Operator 可能需要在仅控制平面更新之前或期间进行更新。

  • 确保您熟悉从 OpenShift Container Platform <4.y+1> 更新到 <4.y+2> 之前所需的特定版本先决条件,例如已弃用的 API 的删除。

  • 如果您的集群使用树内 vSphere 卷,请将 vSphere 更新到版本 7.0u3L+ 或 8.0u2+。

    如果在启动 OpenShift Container Platform 更新之前没有将 vSphere 更新到 7.0u3L+ 或 8.0u2+,则更新后集群可能会出现已知问题。有关更多信息,请参阅 OpenShift 4.12 到 4.13 或 4.13 到 4.14 vSphere CSI 存储迁移的已知问题

使用 Web 控制台进行仅控制平面更新

先决条件
  • 验证机器配置池是否已取消暂停。

  • 具有 `admin` 权限的用户可以访问 Web 控制台。

步骤
  1. 使用 Web 控制台的管理员视角,将任何 Operator Lifecycle Manager (OLM) 运算符更新到与您目标更新版本兼容的版本。您可以在“更新已安装的运算符”中找到有关如何执行此操作的更多信息;请参见“其他资源”。

  2. 验证所有机器配置池的状态是否显示为已更新,并且没有机器配置池的状态显示为正在更新

    要查看所有机器配置池的状态,请单击计算MachineConfigPools 并查看更新状态列的内容。

    如果您的机器配置池的状态为正在更新,请等待此状态更改为已更新。此过程可能需要几分钟。

  3. 将您的通道设置为eus-<4.y+2>

    要设置您的通道,请单击管理集群设置通道。您可以通过单击当前的超链接通道来编辑您的通道。

  4. 暂停所有工作机器池,但主池除外。您可以在计算页面下的MachineConfigPools 选项卡上执行此操作。选择您要暂停的机器配置池旁边的垂直省略号,然后单击暂停更新

  5. 更新到版本<4.y+1> 并完成保存步骤之前的操作。您可以在“使用 Web 控制台更新集群”中找到有关如何执行这些操作的更多信息;请参见“其他资源”。

  6. 通过查看集群的上次完成的版本来确保<4.y+1> 更新已完成。您可以在集群设置页面下的详细信息选项卡中找到此信息。

  7. 如有必要,请使用 Web 控制台的管理员视角更新您的 OLM 运算符。您可以在“更新已安装的运算符”中找到有关如何执行这些操作的更多信息;请参见“其他资源”。

  8. 更新到版本<4.y+2> 并完成保存步骤之前的操作。您可以在“使用 Web 控制台更新集群”中找到有关如何执行这些操作的更多信息;请参见“其他资源”。

  9. 通过查看集群的上次完成的版本来确保<4.y+2> 更新已完成。您可以在集群设置页面下的详细信息选项卡中找到此信息。

  10. 取消暂停所有先前暂停的机器配置池。您可以在计算页面下的MachineConfigPools 选项卡上执行此操作。选择您要取消暂停的机器配置池旁边的垂直省略号,然后单击取消暂停更新

    如果池被暂停,则集群不允许升级到任何未来的次要版本,并且某些维护任务将被阻止。这会使集群面临未来性能下降的风险。

  11. 验证您先前暂停的池是否已更新,以及您的集群是否已完成对版本<4.y+2>的更新。

    您可以在计算页面下的MachineConfigPools 选项卡上,通过确认更新状态的值为已更新来验证您的池是否已更新。

    更新包含 Red Hat Enterprise Linux (RHEL) 计算机的集群时,这些计算机在更新过程中会暂时不可用。您必须针对每台进入集群未就绪状态的 RHEL 计算机运行升级 playbook,才能完成集群更新。有关更多信息,请参见其他资源部分中的“更新包含 RHEL 计算机的集群”。

    您可以通过查看集群的上次完成的版本来验证您的集群是否已完成更新。您可以在集群设置页面下的详细信息选项卡中找到此信息。

使用 CLI 进行控制平面仅更新

先决条件
  • 验证机器配置池是否已取消暂停。

  • 在每次更新之前,将 OpenShift CLI (oc) 更新到目标版本。

强烈建议不要跳过此先决条件。如果在更新之前未将 OpenShift CLI (oc) 更新到目标版本,则可能会出现意外问题。

步骤
  1. 使用 Web 控制台的管理员视角,将任何 Operator Lifecycle Manager (OLM) 运算符更新到与您目标更新版本兼容的版本。您可以在“更新已安装的运算符”中找到有关如何执行此操作的更多信息;请参见“其他资源”。

  2. 验证所有机器配置池的状态是否显示为已更新,并且没有机器配置池的状态显示为正在更新。要查看所有机器配置池的状态,请运行以下命令

    $ oc get mcp
    示例输出
    NAME     CONFIG                                         	UPDATED   UPDATING
    master   rendered-master-ecbb9582781c1091e1c9f19d50cf836c       True  	  False
    worker   rendered-worker-00a3f0c68ae94e747193156b491553d5       True  	  False
  3. 您当前的版本为<4.y>,您目标更新的版本为<4.y+2>。通过运行以下命令切换到eus-<4.y+2>通道

    $ oc adm upgrade channel eus-<4.y+2>

    如果您收到一条错误消息,指示eus-<4.y+2>不是可用通道之一,则表示 Red Hat 仍在推出 EUS 版本更新。此推出过程通常从 GA 日期开始需要 45-90 天。

  4. 通过运行以下命令暂停所有工作机器池,但主池除外

    $ oc patch mcp/worker --type merge --patch '{"spec":{"paused":true}}'

    您无法暂停主池。

  5. 通过运行以下命令更新到最新版本

    $ oc adm upgrade --to-latest
    示例输出
    Updating to latest version <4.y+1.z>
  6. 查看集群版本以确保更新已完成,请运行以下命令

    $ oc adm upgrade
    示例输出
    Cluster version is <4.y+1.z>
    ...
  7. 通过运行以下命令更新到版本<4.y+2>

    $ oc adm upgrade --to-latest
  8. 检索集群版本以确保<4.y+2> 更新已完成,请运行以下命令

    $ oc adm upgrade
    示例输出
    Cluster version is <4.y+2.z>
    ...
  9. 要将您的工作节点更新到<4.y+2>,请通过运行以下命令取消暂停所有先前暂停的机器配置池

    $ oc patch mcp/worker --type merge --patch '{"spec":{"paused":false}}'

    如果不取消暂停池,则集群不允许更新到任何未来的次要版本,并且某些维护任务将被阻止。这会使集群面临未来性能下降的风险。

  10. 验证您先前暂停的池是否已更新,以及对版本<4.y+2>的更新是否已完成,请运行以下命令

    $ oc get mcp

    更新包含 Red Hat Enterprise Linux (RHEL) 计算机的集群时,这些计算机在更新过程中会暂时不可用。您必须针对每台进入集群未就绪状态的 RHEL 计算机运行升级 playbook,才能完成集群更新。有关更多信息,请参见其他资源部分中的“更新包含 RHEL 计算机的集群”。

    示例输出
    NAME 	   CONFIG                                            UPDATED     UPDATING
    master   rendered-master-52da4d2760807cb2b96a3402179a9a4c    True  	 False
    worker   rendered-worker-4756f60eccae96fb9dcb4c392c69d497    True 	 False

分层产品和通过 Operator Lifecycle Manager 安装的运算符的控制平面仅更新

除了针对 Web 控制台和 CLI 提到的控制平面仅更新步骤之外,在对具有以下内容的集群执行控制平面仅更新时,还需要考虑其他步骤

  • 分层产品

  • 通过 Operator Lifecycle Manager (OLM) 安装的运算符

什么是分层产品?

分层产品是指由多个旨在一起使用的底层产品组成的产品,不能分解成单独的订阅。有关分层 OpenShift Container Platform 产品的示例,请参见OpenShift 上的分层产品

在对分层产品集群和通过 OLM 安装的运算符集群执行控制平面仅更新时,必须完成以下操作

  1. 您已将之前通过 Operator Lifecycle Manager (OLM) 安装的所有运算符更新到与您的目标版本兼容的版本。更新运算符可确保在集群更新期间默认 OperatorHub 目录从当前次要版本切换到下一个版本时,它们具有有效的更新路径。有关如何检查兼容性以及必要时更新已安装运算符的更多信息,请参见“其他资源”部分中的“更新已安装的运算符”。

  2. 确认当前和目标运算符版本之间的集群版本兼容性。您可以使用Red Hat OpenShift Container Platform 运算符更新信息检查器验证您的 OLM 运算符兼容哪些版本。

例如,以下是针对“OpenShift Data Foundation”从<4.y>到<4.y+2>执行控制平面仅更新的步骤。这可以通过 CLI 或 Web 控制台完成。有关如何通过所需界面更新集群的信息,请参见“其他资源”中的使用 Web 控制台进行控制平面仅更新和“使用 CLI 进行控制平面仅更新”。

示例工作流程
  1. 暂停工作机器池。

  2. 更新 OpenShift <4.y> → OpenShift <4.y+1>。

  3. 更新 ODF <4.y> → ODF <4.y+1>。

  4. 更新 OpenShift <4.y+1> → OpenShift <4.y+2>。

  5. 更新到 ODF <4.y+2>。

  6. 取消暂停工作机器池。

对 ODF <4.y+2> 的更新可以在取消暂停工作机器池之前或之后进行。