Openshift Container Platform 4.10 Updating Clusters ZH CN
Openshift Container Platform 4.10 Updating Clusters ZH CN
Openshift Container Platform 4.10 Updating Clusters ZH CN
10
更新集群
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons
Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is
available at
http://creativecommons.org/licenses/by-sa/3.0/
. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must
provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert,
Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift,
Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States
and other countries.
Linux ® is the registered trademark of Linus Torvalds in the United States and other countries.
XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States
and/or other countries.
MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and
other countries.
Node.js ® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the
official Joyent Node.js open source or commercial project.
The OpenStack ® Word Mark and OpenStack logo are either registered trademarks/service marks
or trademarks/service marks of the OpenStack Foundation, in the United States and other
countries and are used with the OpenStack Foundation's permission. We are not affiliated with,
endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
摘要
本文档提供了有关更新和升级 OpenShift Container Platform 集群的信息。更新集群的过程较简单,
可以在不需要使集群离线的情况下进行。
目录
目录
. . . 1. 章
第 . . .更新集群概述
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4. . . . . . . . . . . . .
1.1. 了解 OPENSHIFT CONTAINER PLATFORM 更新 4
1.2. 了解升级频道和发行版本 4
1.3. 了解集群 OPERATOR 条件类型 4
. . . 2. .章
第 . . 了解集群版本状况
.................类
. . .型
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. . . . . . . . . . . . .
2.1. 准备执行 EUS 更新 6
2.2. 使用 WEB 控制台更新集群 6
2.3. 使用命令行界面(CLI)将集群更新为一个新的次版本 6
2.4. 执行 CANARY ROLLOUT 更新 7
2.5. 更新包含使用 RHEL 的计算(COMPUTE)系统的集群 7
2.6. 在断开连接的环境中更新集群 7
2.7. 更新在 VSPHERE 上运行的节点上运行的硬件 8
. . . 3. .章
第 . . 了解
. . . . . OPENSHIFT
. . . . . . . . . . . . . CONTAINER
. . . . . . . . . . . . . PLATFORM
. . . . . . . . . . . . .更新
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9. . . . . . . . . . . . .
3.1. 关于 OPENSHIFT UPDATE 服务 9
3.2. 常见术语 10
. . . 4. .章
第 . . .了解更新
. . . . . . . .频
. . 道和
. . . . .发
. .行版本
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11. . . . . . . . . . . . .
4.1. 更新频道 11
. . . 5. .章
第 . . 了解
. . . . . OPENSHIFT
. . . . . . . . . . . . . CONTAINER
. . . . . . . . . . . . . PLATFORM
. . . . . . . . . . . . .更新持
. . . . . . 续时间
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
..............
5.1. 先决条件 15
5.2. 影响更新持续时间的因素 15
5.3. 集群更新阶段 15
5.4. 估算集群更新时间 17
5.5. RED HAT ENTERPRISE LINUX (RHEL) 计算节点 17
. . . 6. .章
第 . . .准
. .备执
. . . .行
. . .EUS
. . . . 更新
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
..............
6.1. EUS 到 EUS 更新 18
. . . 7. .章
第 . . 使用
. . . . . WEB
. . . . . .控制台更新集群
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
..............
7.1. 先决条件 22
7.2. 执行 CANARY ROLLOUT 更新 23
7.3. 使用手动维护的凭证升级集群 23
7.4. 使用 WEB 控制台暂停 MACHINEHEALTHCHECK 资源 24
7.5. 关于更新单个节点 OPENSHIFT CONTAINER PLATFORM 25
7.6. 使用WEB控制台更新集群 26
7.7. 使用 WEB 控制台更改更新服务器 27
. . . 8. .章
第 . . .使用
. . . . CLI
. . . . 更新集群
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
..............
8.1. 先决条件 28
8.2. 使用手动维护的凭证升级集群 28
8.3. 暂停 MACHINEHEALTHCHECK 资源 30
8.4. 关于更新单个节点 OPENSHIFT CONTAINER PLATFORM 31
8.5. 使用 CLI 更新集群 31
8.6. 根据一个有条件的升级路径进行升级 34
8.7. 使用 CLI 更改更新服务器 35
. . . 9. .章
第 . . .执
. .行
. . CANARY
. . . . . . . . . .ROLLOUT
. . . . . . . . . . .更新
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
..............
9.1. 关于 CANARY ROLLOUT 更新过程和 MCP 36
9.2. 关于执行 CANARY ROLLOUT 更新 37
9.3. 创建机器配置池来执行 CANARY ROLLOUT 更新 38
1
OpenShift Container Platform 4.10 更新集群
9.4. 暂停机器配置池 39
9.5. 执行集群更新 40
9.6. 取消暂停机器配置池 40
9.7. 将节点移到原始机器配置池中 41
. . . 10
第 . . .章
. . 更新包含使用
. . . . . . . . . . . . . .RHEL
. . . . . .的
. .计
. . 算(
. . . . COMPUTE)系
. . . . . . . . . . . . . . . .统
. .的集群
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
..............
10.1. 先决条件 42
10.2. 使用WEB控制台更新集群 42
10.3. 可选:添加 HOOK 以在RHEL系统上执行ANSIBLE任务 43
10.4. 更新集群中的RHEL COMPUTE 系统 45
. . . 11. .章
第 . . .在断开
. . . . . .连
. . 接的
....环
. . .境中更新集群
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
..............
11.1. 关于在断开连接的环境中的集群更新 49
11.2. 镜像 OPENSHIFT CONTAINER PLATFORM 镜像存储库 49
11.3. 使用 OPENSHIFT UPDATE SERVICE 在断开连接的环境中更新集群 56
11.4. 在没有 OPENSHIFT UPDATE SERVICE 的断开连接的环境中更新集群 65
11.5. 从集群中删除 OPENSHIFT UPDATE SERVICE 73
. . . 12
第 . . .章
. . 更新在
. . . . . . .VSPHERE
. . . . . . . . . . .上
. .运
. .行的
. . . .节
. . 点上
....运
. . .行的硬件
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
..............
12.1. 更新 VSPHERE 上的虚拟硬件 77
12.2. 在 VSPHERE 上调度虚拟硬件的更新 79
2
目录
3
OpenShift Container Platform 4.10 更新集群
第 1 章 更新集群概述
您可以使用 Web 控制台或 OpenShift CLI (oc) 使用单一操作来更新 OpenShift Container Platform 4 集
群。
1.2. 了解升级频道和发行版本
升级频道和发行版本: 使用升级频道,您可以选择一个升级策略。升级频道特定于 OpenShift Container
Platform 的次版本。升级频道仅控制发行版本选择,不会影响您安装的集群版本。OpenShift Container
Platform 的一个特定版本的 openshift-install 二进制文件总会安装该次版本。如需更多信息,请参阅以
下:
升级版本路径
了解受限网络集群
在频道间切换
了解条件更新
注意
4
第 1 章 更新集群概述
注意
5
OpenShift Container Platform 4.10 更新集群
第 2 章 了解集群版本状况类型
Cluster Version Operator (CVO) 监控集群 Operator 和其他组件,并负责收集集群版本及其 Operator 的
状态。此状态包括条件类型,它告知您 OpenShift Container Platform 集群的健康状态和当前状态。
更新 EUS 到 EUS
执行 canary rollout 更新
暂停 MachineHealthCheck 资源
使用Web控制台更新集群
使用 Web 控制台更改更新服务器
2.3. 使用命令行界面(CLI)将集群更新为一个新的次版本
使用 CLI 更新集群的次版本 :您可以使用 OpenShift CLI (oc) 更新 OpenShift Container Platform 集
群。以下步骤在次版本中更新集群。您可以使用相同的说明在次版本之间更新集群。
暂停 MachineHealthCheck 资源
使用 CLI 更新集群
使用 CLI 更改更新服务器
6
第 2 章 了解集群版本状况类型
暂停机器配置池
执行集群更新
取消暂停机器配置池
将节点移动到原始机器配置池
使用Web控制台更新集群
更新集群中的RHEL compute 系统
2.6. 在断开连接的环境中更新集群
在断开连接的环境中的集群更新:如果镜像主机无法同时访问互联网和集群,您可以将镜像镜像到与环境
断开连接的文件系统中。然后您可以使用那个主机或可移动介质来实现安装。如果本地容器 registry 和集
群连接到镜像 registry 的主机,您可以直接将发行镜像推送到本地 registry。
准备您的镜像主机
配置允许对容器镜像进行镜像的凭证
更新断开连接的集群
镜像镜像目录的范围,以减少集群节点重启的频率
7
OpenShift Container Platform 4.10 更新集群
更新 vSphere 上的虚拟硬件
在 vSphere 上调度虚拟硬件的更新
重要
8
第 3 章 了解 OPENSHIFT CONTAINER PLATFORM 更新
注意
集群中的 Cluster Version Operator (CVO) 会检查 OpenShift Container Platform 更新服务,并根据当前
组件版本和图中的信息决定有效的更新和更新路径。当您请求更新时,CVO 使用该更新的发行镜像来升
级您的集群。发行工件 (artifact) 作为容器镜像托管在 Quay 中。
重要
两个控制器在持续更新模式下运行。第一个控制器持续更新有效负载清单,将清单应用到集群,并输出
Operator 的受控推出的状态,以指示它们是否处于可用、升级或失败状态。第二个控制器轮询 OpenShift
Update Service,以确定更新是否可用。
重要
仅支持升级到较新版本。不支持将集群还原或回滚到以前的版本。如果您的更新失败,请
联系红帽支持。
如果您将 Red Hat Enterprise Linux (RHEL) 机器用作 worker,MCO 不会在这些机器上更新 kubelet,因
为您必须首先在这些机器上更新 OpenShift API。
3.2. 常见术语
Control plane(控制平面)
control plane 由 control plane 机器组成,负责管理 OpenShift Container Platform 集群。control
plane 机器管理计算机器(也被称为 worker)上的工作负载。
Cluster Version Operator
Cluster Version Operator (CVO)启动集群的更新过程。它根据当前的集群版本检查 OSUS,并检索包
含可用或可能的更新路径的图形。
Machine Config Operator
Machine Config Operator (MCO)是一个集群级别的 Operator,用于管理操作系统和机器配置。通过
MCO,平台管理员可以配置和更新 worker 节点上的 systemd、CRI-O 和 Kubelet、内核、
NetworkManager 和其他系统功能。
OpenShift 更新服务
OpenShift Update Service (OSUS)为 OpenShift Container Platform 提供无线更新,包括 Red Hat
Enterprise Linux CoreOS(RHCOS)。它提供了一个图形或图表,其中包含组件 Operator 的顶点和连
接它们的边。
Channels
Channels 声明了一个与 OpenShift Container Platform 次版本相关的更新策略。OSUS 使用这个配置
的策略来推荐与该策略一致更新边缘。
推荐的更新边缘
推荐的更新边缘 是 OpenShift Container Platform 发行版本之间的建议更新。建议使用给定的更新,
具体取决于集群配置的频道、当前版本、已知的错误和其他信息。OSUS 将建议的边缘与 CVO 通信,
后者在每个集群中运行。
延长更新支持
所有 post-4.7 甚至编号的次版本都标记为 延长更新支持 (EUS)版本。这些版本包括了在 EUS 版本之
间更轻松地更新路径,可以简化 worker 节点的更新,并可以通过规划 EUS-to-EUS OpenShift
Container Platform 版本的更新策略来减少重启 worker 节点的更新。
如需更多信息,请参阅 Red Hat OpenShift Extended Update Support(EUS)概述 。
其他资源
机器配置概述
更新频道和发行版本
10
第 4 章 了解更新频道和发行版本
第 4 章 了解更新频道和发行版本
更新频道是一个升级机制,用户可以声明他们要更新集群的 OpenShift Container Platform 次版本。它们
还允许用户选择更新更新的时间和级别,并通过 fast、stable、candidate 和 eus 频道选项。Cluster
Version Operator 使用基于频道声明的更新图以及其他条件信息,以提供集群可用的推荐和条件更新列
表。
在 4.10 内更新。
4.9 中的更新。
stable-4.10
fast-4.10
candidate-4.10
警告
4.1. 更新频道
4.1.1. fast-4.10 频道
11
OpenShift Container Platform 4.10 更新集群
4.1.2. stable-4.10 频道
虽然当它们的勘误被发布后马上就会出现在 fast-4.10 频道中,但这些内容可能需要一段延迟时间会被添
加到 stable-4.10 频道中。在这个延迟过程中,会从多个源收集数据并分析用于指示产品回归。收集大量
数据点并且缺少负信号后,这些版本将添加到 stable 频道中。
注意
由于获得大量的数据点所需的时间因很多因素而异,因此在快速频道和稳定频道之间的延
迟期间不会提供 Service LeveL Objective (SLO)。如需更多信息,请参阅"选择集群的正确
频道"
4.1.3. eus-4.y 频道
除了 stable 频道外,所有以数字相等的 OpenShift Container Platform 次版本都提供延长更新支持
(EUS)。提升到 stable 频道的版本也同时提升到 EUS 频道。EUS 频道的主要目的是,为了方便执行 EUS
到 EUS 更新的集群。
注意
4.1.4. candidate-4.10 频道
candidate-4.10 频道在构建后马上提供对这个版本的早期访问。只有候选频道中出现的版本可能不包含在
GA 之前删除最终 GA 版本或功能的完整功能集。另外,这些版本没有受到红帽质量保证的约束,可能不
会为以后的 GA 版本提供更新路径。鉴于这些注意事项,候选通道仅适用于销毁和重新创建集群可接受的
目的。
4.1.5. 更新频道中的建议
OpenShift Container Platform 维护一个更新建议服务,它知道已安装的 OpenShift Container Platform
版本以及频道中要获取的路径,以便您获得下一版本。更新路径还仅限于与当前所选频道及其提升特征相
关的版本。
您可在频道中看到以下发行版本:
4.10.0
4.10.1
4.10.3
4.10.4
重要
12
第 4 章 了解更新频道和发行版本
重要
您不需要一定在连续的补丁号间进行升级。在这个示例中,该频道并没有(且重来没有包
括 4.10.2),因此不建议或不支持对 4.10.2 的更新。
4.1.6. 更新建议删除和升级
红帽会监控新发布的版本,以及把这些版本添加到支持的频道前后与那些版本关联的更新路径。如果识别
了严重的回归问题,红帽可能会删除受影响的更新建议。当红帽选择删除更新建议时,会在所有相关频道
中同时采取该操作。删除推荐的更新可能会在更新被提升为支持的频道前或之后发生。
如果红帽从任何支持的发行版本中删除更新建议,则会为更正回归的未来版本提供取代的更新建议。但
是,当缺陷被修正、测试并提升到您选择的频道时,可能会有一些延迟。
4.1.7. 为集群选择正确的频道
选择适当的频道涉及两个决策。
注意
想要应用特定的修复,以便在不延迟的情况下影响您的环境。
内部测试流程。如果您的组织需要数周时间来证明,则最好与我们提升流程同时测试,而不是等
待。这也保证,红帽提供的任何遥测信号均是我们的推出中因素,因此可以更快地修复与您的问
题相关的问题。
4.1.8. 受限网络集群
13
OpenShift Container Platform 4.10 更新集群
4.1.9. 在频道间切换
可以从 Web 控制台或通过 adm upgrade channel 命令来切换频道:
如果您切换到没有包括当前版本的频道,web 控制台将显示警报。在没有当前发行版本的频道中,web 控
制台不推荐任何更新。但是,您可以在任何时候返回原始频道。
更改您的频道可能会影响集群的可支持性。可能适用以下条件:
其他资源
根据一个有条件的升级路径进行升级
为集群选择正确的频道
14
第 5 章 了解 OPENSHIFT CONTAINER PLATFORM 更新持续时间
5.1. 先决条件
熟悉 OpenShift Container Platform 架构 和 OpenShift Container Platform 更新 。
5.2. 影响更新持续时间的因素
以下因素可能会影响您的集群更新持续时间:
机器配置池中的 MaxUnavailable 的值
集群中的节点数
集群节点的健康状况
5.3. 集群更新阶段
在 OpenShift Container Platform 中,集群更新分为两个阶段:
注意
其他资源
2. 更新操作系统 (OS)
15
OpenShift Container Platform 4.10 更新集群
3. 重新引导节点
4. 取消协调所有节点并在节点上调度工作负载
注意
当节点被封锁时,工作负载无法调度到其中。
完成此过程的时间取决于多个因素,包括节点和基础架构配置。此过程可能需要 5 分钟或更长时间来完成
每个节点。
除了 MCO 外,您应该考虑以下参数的影响:
在开始更新前,您必须确保所有节点都可用。任何不可用的节点都可能会影响更新持续时间,因
为节点不可用会影响 maxUnavailable 和 pod 中断预算。
要从终端中检查节点状态,请运行以下命令:
$ oc get node
输出示例
其他资源
机器配置概述
16
第 5 章 了解 OPENSHIFT CONTAINER PLATFORM 更新持续时间
Pod 中断预算
5.4. 估算集群更新时间
类似集群的历史更新持续时间为您提供了未来集群更新的最佳估算。但是,如果历史数据不可用,您可以
使用以下约定来估算集群更新时间:
Cluster update time = CVO target update payload deployment time + (# node update iterations x
MCO node update time)
注意
重启特定节点所需的时间有很大不同。在云实例中,重新启动可能需要大约 1 到 2 分钟,
而在物理主机中,重新引导可能需要超过 15 分钟。
场景 1
当您将 control plane 和计算节点机器配置池 (MCP) 的 maxUnavailable 设置为 1 时,所有 6 个计算节点
会在每个迭代中逐一进行更新。
场景 2
当您为计算节点 MCP 将 maxUnavailable 设置为 2 时,两个计算节点会在每个迭代中并行更新。因此,
它需要三个迭代来更新所有节点。
重要
其他资源
更新 RHEL 计算机器
17
OpenShift Container Platform 4.10 更新集群
第 6 章 准备执行 EUS 更新
由于 Kubernetes 的设计,次版本之间的所有 OpenShift Container Platform 升级都必须按顺序进行。您
必须从 OpenShift Container Platform <4.y> 更新至 <4.y+1>,然后更新至 <4.y+2>。您无法直接从
OpenShift Container Platform <4.y> 更新至 <4.y+2>。但是,希望在两个延长更新支持 (EUS) 版本间更新
的管理员可以这样做,而只需要重启一个非 control plane 主机。
重要
如果您在升级到一个奇数次版本后但在升级到下一个偶数次版本前遇到了问题,则需要在继续进
行前,把非控制平面主机完成升级到奇数次版本。
您可以在多个维护窗口期间通过暂停中间步骤完成升级过程。但是,计划在 60 天内完成整个更
新。确保完成正常的集群自动化过程非常重要,包括与证书轮转关联的操作。
先决条件
先决条件
验证机器配置池是否已取消暂停。
流程
18
第 6 章 准备执行 EUS 更新
注意
3. 将频道设置为 eus-<4.y+2>。
要设置您的频道,请点 Administration → Cluster Settings → Channel。您可以点当前的超链接
频道来编辑频道。
重要
如果没有取消暂停池,集群就无法升级到将来的任何次要版本,而维护任务(如证
书轮转)会被禁止。这会使集群面临未来降级的风险。
其他资源
准备 Operator 更新
使用Web控制台更新集群
19
OpenShift Container Platform 4.10 更新集群
更新安装的 Operator
先决条件
验证机器配置池是否已取消暂停。
重要
流程
$ oc get mcp
输出示例
注意
注意
您无法暂停 master 池。
5. 运行以下命令来更新到最新版本:
20
第 6 章 准备执行 EUS 更新
输出示例
6. 运行以下命令,查看集群版本以确保更新已完成:
$ oc adm upgrade
输出示例
$ oc adm upgrade
输出示例
重要
如果没有取消暂停池,集群就无法升级到将来的任何次要版本,而维护任务(如证
书轮转)会被禁止。这会使集群面临未来降级的风险。
$ oc get mcp
输出示例
其他资源
更新安装的 Operator
21
OpenShift Container Platform 4.10 更新集群
第 7 章 使用 WEB 控制台更新集群
您可以使用 web 控制台对 OpenShift Container Platform 集群进行更新或升级。以下步骤在次版本中更
新集群。您可以使用相同的说明在次版本之间更新集群。
注意
7.1. 先决条件
使用具有 admin 权限的用户访问集群。请参阅使用 RBAC 定义和应用权限 。
重要
其他资源
22
第 7 章 使用 WEB 控制台更新集群
您有任务关键型应用程序,您希望在更新过程中仍然可以使用这些应用程序。在更新后,您可以
慢慢地以小批的形式对应用进行测试。
您有一个短的维护窗口,在此期间不允许更新所有节点;或者您有多个维护窗口。
滚动更新过程不是典型的更新工作流。对于较大的集群,这可能是一个耗时的过程,需要您执行多个命
令。这种复杂性可能会导致出现可能会影响整个集群的错误。建议您仔细考虑您的机构是否希望使用滚动
更新,并在开始前仔细规划流程的实施。
本主题中描述的滚动更新过程涉及:
创建一个或多个自定义机器配置池 (MCP)。
标记您不想立即更新的每个节点,以将这些节点移至自定义 MCP。
暂停这些自定义 MCP,这会阻止对这些节点的更新。
执行集群更新。
取消暂停一个自定义 MCP,它会在这些节点上触发更新。
测试这些节点上的应用程序,以确保应用程序在这些新更新的节点上可以正常工作。
(可选)从小批处理中的其余节点移除自定义标签,并在这些节点上测试应用。
注意
7.3. 使用手动维护的凭证升级集群
默认情况下,带有手动维护凭证的集群的 Cloud Credential Operator(CCO)U gradable 状态为 False。
在使用手动维护凭证升级集群前,您必须为要升级到的发行镜像创建新凭证。另外,您必须检查现有凭证
23
OpenShift Container Platform 4.10 更新集群
在使用手动维护凭证升级集群前,您必须为要升级到的发行镜像创建新凭证。另外,您必须检查现有凭证
所需的权限,并满足新版本中这些组件的任何新权限要求。
流程
2. 更新集群中手动维护的凭证:
要添加的文本
...
metadata:
annotations:
cloudcredential.openshift.io/upgradeable-to: <version_number>
...
添加可升级状态进行更改的注解后,可能需要几分钟时间。
验证
其他资源
24
第 7 章 使用 WEB 控制台更新集群
先决条件
流程
但请注意以下限制:
如果更新有效负载包含操作系统更新(需要重启),则停机时间会非常显著,并影响集群管
理和用户工作负载。
如果更新包含不需要重启的机器配置更改,则停机时间会减少,并且对集群管理和用户工作
负载的影响会减少。在这种情况下,节点排空步骤会通过单节点 OpenShift Container
Platform 跳过,因为集群中没有其他节点可以重新调度工作负载。
重要
某些条件(如更新的软件包中的错误)可能会导致单个节点在重启后无法重启。在这种情
况下,更新不会自动回滚。
25
OpenShift Container Platform 4.10 更新集群
其他资源
7.6. 使用WEB控制台更新集群
如果有可用更新,您可以从Web控制台更新集群。
先决条件
流程
重要
注意
当您准备好升级到下一个次版本时,请选择与该次版本对应的频道。声明更新频道
后,集群可以更方便地为您的目标版本更新路径。集群可能需要一些时间来评估所
有可用的更新,并提供最佳更新建议。更新建议可能会随时间变化,因为它们基于
哪些更新选项。
如果您无法看到到目标次版本的更新路径,请保持将集群更新至当前版本的最新补
丁版本,直到下一个次版本在路径中可用。
3. 选择要更新到的版本,然后单击 Save。
输入频道 Update Status 变为Update to <product-version> in progress,您可以通过监视
Operator 和节点的进度条来查看集群更新的进度。
注意
如果有可用更新,请继续在当前频道中执行更新,直到您无法再更新为止。
如果没有可用的更新,请将 Channel 改为下一个次版本的 stable-*, eus-* 或 fast-* 频道,并
26
第 7 章 使用 WEB 控制台更新集群
您可能需要执行一些过渡的更新,直到您到达您想要的版本。
流程
输出示例
...
spec:
clusterID: db93436d-7b05-42cc-b856-43e11ad2d31a
upstream: '<update-server-url>' 1
...
默认 upstream 是 https://api.openshift.com/api/upgrades_info/v1/graph。
3. 点 Save。
其他资源
了解升级频道和发行版本
27
OpenShift Container Platform 4.10 更新集群
第 8 章 使用 CLI 更新集群
您可以使用 OpenShift CLI (oc) 将 OpenShift Container Platform 集群更新或升级到一个次版本。您还可
以按照相同的说明在次版本间更新集群。
8.1. 先决条件
使用具有 admin 权限的用户访问集群。请参阅使用 RBAC 定义和应用权限 。
重要
其他资源
8.2. 使用手动维护的凭证升级集群
28
第 8 章 使用 CLI 更新集群
在使用手动维护凭证升级集群前,您必须为要升级到的发行镜像创建新凭证。另外,您必须检查现有凭证
所需的权限,并满足新版本中这些组件的任何新权限要求。
流程
2. 更新集群中手动维护的凭证:
要添加的文本
...
metadata:
annotations:
cloudcredential.openshift.io/upgradeable-to: <version_number>
...
添加可升级状态进行更改的注解后,可能需要几分钟时间。
验证
其他资源
29
OpenShift Container Platform 4.10 更新集群
8.3. 暂停 MACHINEHEALTHCHECK 资源
在升级过程中,集群中的节点可能会临时不可用。对于 worker 节点,机器健康检查可能会认为这样的节
点不健康,并重新引导它们。为避免重新引导这样的节点,请在更新集群前暂停所有
MachineHealthCheck 资源。
先决条件
流程
apiVersion: machine.openshift.io/v1beta1
kind: MachineHealthCheck
metadata:
name: example
namespace: openshift-machine-api
annotations:
cluster.x-k8s.io/paused: ""
spec:
selector:
matchLabels:
role: worker
unhealthyConditions:
- type: "Ready"
status: "Unknown"
timeout: "300s"
- type: "Ready"
status: "False"
timeout: "300s"
maxUnhealthy: "40%"
status:
currentHealthy: 5
expectedMachines: 5
重要
30
第 8 章 使用 CLI 更新集群
重要
更新集群后恢复机器健康检查。要恢复检查,请运行以下命令从
MachineHealthCheck 资源中删除暂停注解:
但请注意以下限制:
如果更新有效负载包含操作系统更新(需要重启),则停机时间会非常显著,并影响集群管
理和用户工作负载。
如果更新包含不需要重启的机器配置更改,则停机时间会减少,并且对集群管理和用户工作
负载的影响会减少。在这种情况下,节点排空步骤会通过单节点 OpenShift Container
Platform 跳过,因为集群中没有其他节点可以重新调度工作负载。
重要
某些条件(如更新的软件包中的错误)可能会导致单个节点在重启后无法重启。在这种情
况下,更新不会自动回滚。
其他资源
先决条件
31
OpenShift Container Platform 4.10 更新集群
流程
1. 查看可用更新,记录下要应用的更新的版本号:
$ oc adm upgrade
输出示例
Recommended updates:
VERSION IMAGE
4.9.24 quay.io/openshift-release-dev/ocp-
release@sha256:6a899c54dda6b844bb12a247e324a0f6cde367e880b73ba110c056df6d01803
2
4.9.25 quay.io/openshift-release-dev/ocp-
release@sha256:2eafde815e543b92f70839972f585cc52aa7c37aa72d5f3c8bc886b0fd45707a
4.9.26 quay.io/openshift-release-dev/ocp-
release@sha256:3ccd09dd08c303f27a543351f787d09b83979cd31cf0b4c6ff56cd68814ef6c8
4.9.27 quay.io/openshift-release-dev/ocp-
release@sha256:1c7db78eec0cf05df2cead44f69c0e4b2c3234d5635c88a41e1b922c3bedae16
4.9.28 quay.io/openshift-release-dev/ocp-
release@sha256:4084d94969b186e20189649b5affba7da59f7d1943e4e5bc7ef78b981eafb7a8
4.9.29 quay.io/openshift-release-dev/ocp-
release@sha256:b04ca01d116f0134a102a57f86c67e5b1a3b5da1c4a580af91d521b8fa0aa6ec
4.9.31 quay.io/openshift-release-dev/ocp-
release@sha256:2a28b8ebb53d67dd80594421c39e36d9896b1e65cb54af81fbb86ea9ac3bf2d
7
4.9.32 quay.io/openshift-release-dev/ocp-
release@sha256:ecdb6d0df547b857eaf0edb5574ddd64ca6d9aff1fa61fd1ac6fb641203bedfa
注意
2. 根据您的机构要求,设置适当的升级频道。例如,您可以将频道设置为 stable-4.10、fast-4.10 或
eus-4.10。有关频道的更多信息,请参阅在额外资源项中的了解更新频道和发行版本。
例如,要将频道设置为 stable-4.10 :
32
第 8 章 使用 CLI 更新集群
重要
注意
当您准备好升级到下一个次版本时,请选择与该次版本对应的频道。声明更新频道
后,集群可以更方便地为您的目标版本更新路径。集群可能需要一些时间来评估所
有可用的更新,并提供最佳更新建议。更新建议可能会随时间变化,因为它们基于
哪些更新选项。
如果您无法看到到目标次版本的更新路径,请保持将集群更新至当前版本的最新补
丁版本,直到下一个次版本在路径中可用。
3. 应用更新:
要更新到最新版本:
要更新到一个特定版本:
$ oc adm upgrade
5. 更新完成后,可以通过以下方法确认集群已更新为新版本:
$ oc get clusterversion
输出示例
No updates available. You may force an upgrade to a specific release image, but doing so
might not be supported and might result in downtime or data loss.
注意
33
OpenShift Container Platform 4.10 更新集群
注意
$ oc get nodes
输出示例
其他资源
准备执行 EUS 更新
了解升级频道和发行版本
8.6. 根据一个有条件的升级路径进行升级
您可以使用 Web 控制台或 OpenShift CLI(oc)根据一个有条件的升级路径进行升级。当一个有条件更新对
于您的集群不推荐进行时,您可以使用 OpenShift CLI(oc)4.10 或更高版本来根据一个有条件的路径进行
升级。
流程
1. 因为存在风险而不推荐的更新,您可以使用以下命令查看它的描述信息:
2. 如果集群管理员已评估了潜在的已知风险,并确定这些风险对于当前集群是可接受的,管理员可
以执行以下命令来忽略这些安全保护并继续更新:
<.> <version>是从上一个命令输出中获取的被支持但不推荐的更新版本。
其他资源
升级频道和发行路径
34
第 8 章 使用 CLI 更新集群
流程
输出示例
clusterversion.config.openshift.io/version patched
35
OpenShift Container Platform 4.10 更新集群
第 9 章 执行 CANARY ROLLOUT 更新
有些情况下,您可能希望对 worker 节点进行更多受控的更新推出,以确保任务关键型应用程序在更新过
程中仍然可用,即使更新过程导致您的应用程序失败。根据您的机构需求,您可能需要更新一小部分
worker 节点,在一个时间段内评估集群和工作负载健康状况,然后更新剩余的节点。这通常被称为
Canary 更新。或者,您可能还希望将通常需要主机重新引导的 worker 节点更新放入较小的定义的维护窗
口(不可能一次使用大型维护窗口来更新整个集群)。
注意
重要
36
第 9 章 执行 CANARY ROLLOUT 更新
注意
另外,您需要考虑集群中可用的额外容量量。例如,当应用程序无法在更新的节点上按预期工作时,您可
以对池中那些节点进行 cordon 和 drain 操作,这会将应用 pod 移到其他节点上。您需要考虑您可用的额
外容量数量,以确定您需要的自定义 MCP 数量以及每个 MCP 中有多少节点。例如,如果您使用两个自
定义 MCP 和 50% 的节点在每个池中,则需要确定运行 50% 的节点是否能为您的应用程序提供足够的服
务质量(QoS)。
注意
2. 将节点选择器添加到自定义 MCP。对于您不想与剩余的集群同时更新的每个节点,请向节点添加
匹配的标签。该标签将节点与 MCP 相关联。
注意
3. 在更新过程中暂停您不想更新的 MCP。
注意
37
OpenShift Container Platform 4.10 更新集群
5. 在更新的节点上测试应用,以确保它们按预期工作。
7. (可选)从更新的节点中删除自定义标签并删除自定义 MCP。
输出示例
ci-ln-pwnll6b-f76d1-s8t9n-worker-a-s75z4
ci-ln-pwnll6b-f76d1-s8t9n-worker-b-dglj2
ci-ln-pwnll6b-f76d1-s8t9n-worker-c-lldbm
b. 对于您要延迟的节点,在节点中添加自定义标签:
例如:
输出示例
node/ci-ln-gtrwm8t-f76d1-spbl7-worker-a-xk76k labeled
c. 创建新的 MCP:
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfigPool
metadata:
name: workerpool-canary 1
spec:
machineConfigSelector:
matchExpressions: 2
-{
key: machineconfiguration.openshift.io/role,
operator: In,
38
第 9 章 执行 CANARY ROLLOUT 更新
values: [worker,workerpool-canary]
}
nodeSelector:
matchLabels:
node-role.kubernetes.io/workerpool-canary: "" 3
1 为 MCP 指定名称。
3 指定添加到此池中的自定义标签。
$ oc create -f <file_name>
输出示例
machineconfigpool.machineconfiguration.openshift.io/workerpool-canary created
$ oc get machineconfigpool
输出示例
创建新的机器配置池 workerpool-canary,机器计数中会显示您添加自定义标签的节点数
量。worker MCP 机器数会减少相同的数字。更新机器数可能需要几分钟时间。在本例中,一
个节点已从 worker MCP 移到 worker pool-canary MCP。
9.4. 暂停机器配置池
在这个 Canary rollout 更新过程中,在使用 OpenShift Container Platform 集群的其余集群标记了节点并
创建机器配置池 (MCP) 后,您会暂停这些 MCP。暂停 MCP 可防止 Machine Config Operator (MCO) 更
新与该 MCP 关联的节点。
注意
39
OpenShift Container Platform 4.10 更新集群
暂停 MCP:
例如:
输出示例
machineconfigpool.machineconfiguration.openshift.io/workerpool-canary patched
9.5. 执行集群更新
当 MCP 进入 ready 状态时,您可以执行集群更新。根据您的集群,请查看以下更新方法之一:
使用 Web 控制台更新集群
使用 CLI 更新集群
更新完成后,您可以开始逐一取消暂停 MCP。
9.6. 取消暂停机器配置池
在这个 Canary rollout 更新过程中,OpenShift Container Platform 更新完成后,取消逐一暂停自定义
MCP。取消暂停 MCP 允许 Machine Config Operator (MCO) 更新与该 MCP 关联的节点。
取消暂停 MCP:
例如:
输出示例
machineconfigpool.machineconfiguration.openshift.io/workerpool-canary patched
2. 在更新的节点上测试您的应用,以确保它们按预期工作。
3. 逐一取消暂停任何其他暂停的 MCP,并验证您的应用程序是否正常工作。
9.6.1. 如果应用程序失败
40
第 9 章 执行 CANARY ROLLOUT 更新
9.7. 将节点移到原始机器配置池中
在这个 Canary rollout 更新过程中,在取消暂停自定义机器配置池 (MCP) 并验证与该 MCP 关联的节点上
的应用程序是否按预期工作后,您应该删除添加到节点的自定义标签,将节点移回原始 MCP。
重要
节点必须具有角色才能在集群中正常工作。
将节点移动到其原始 MCP 中:
1. 从节点移除自定义标签。
例如:
输出示例
node/ci-ln-0qv1yp2-f76d1-kl2tq-worker-a-j2ssz labeled
3. 可选:删除自定义 MCP:
41
OpenShift Container Platform 4.10 更新集群
10.1. 先决条件
使用具有 admin 权限的用户访问集群。请参阅使用 RBAC 定义和应用权限 。
其他资源
10.2. 使用WEB控制台更新集群
如果有可用更新,您可以从Web控制台更新集群。
先决条件
流程
重要
注意
42
第 10 章 更新包含使用 RHEL 的计算(COMPUTE)系统的集群
注意
当您准备好升级到下一个次版本时,请选择与该次版本对应的频道。声明更新频道
后,集群可以更方便地为您的目标版本更新路径。集群可能需要一些时间来评估所
有可用的更新,并提供最佳更新建议。更新建议可能会随时间变化,因为它们基于
哪些更新选项。
如果您无法看到到目标次版本的更新路径,请保持将集群更新至当前版本的最新补
丁版本,直到下一个次版本在路径中可用。
3. 选择要更新到的版本,然后单击 Save。
输入频道 Update Status 变为Update to <product-version> in progress,您可以通过监视
Operator 和节点的进度条来查看集群更新的进度。
注意
如果有可用更新,请继续在当前频道中执行更新,直到您无法再更新为止。
您可能需要执行一些过渡的更新,直到您到达您想要的版本。
注意
43
OpenShift Container Platform 4.10 更新集群
先决条件
流程
---
# Trivial example forcing an operator to acknowledge the start of an upgrade
# file=/home/user/openshift-ansible/hooks/pre_compute.yml
[all:vars]
openshift_node_pre_upgrade_hook=/home/user/openshift-ansible/hooks/pre_node.yml
openshift_node_post_upgrade_hook=/home/user/openshift-ansible/hooks/post_node.yml
Hook 名 描述
44
第 10 章 更新包含使用 RHEL 的计算(COMPUTE)系统的集群
Hook 名 描述
openshift_node_pre_cordon_hook
在每个节点被封锁(cordon)之前运行。
此 hook 以串行方式针对每个节点运行。
如果某个任务必须针对其他主机运行,则该
任务必须使用delegate_to或local_action
。
openshift_node_pre_upgrade_hook
在每个节点被封锁后,且被更新前运行。
此 hook 以串行方式针对每个节点运行。
如果某个任务必须针对其他主机运行,则该
任务必须使用delegate_to或local_action
。
openshift_node_pre_uncordon_hook
在每个节点被更新后,且被取消封锁
(uncordon)前运行。
此 hook 以串行方式针对每个节点运行。
如果某个任务必须针对其他主机运行,则该
任务必须使用delegate_to或local_action
。
openshift_node_post_upgrade_hook
每个节点未被取消封锁后运行。这是最后一
个节点更新操作。
此 hook 以串行方式针对每个节点运行。
如果某个任务必须针对其他主机运行,则该
任务必须使用delegate_to或local_action
。
重要
重要
45
OpenShift Container Platform 4.10 更新集群
重要
先决条件
已更新了集群。
重要
因为 RHEL 机器需要集群生成的资产才能完成更新过程,所以您必须在更新其中的
RHEL worker 机器前更新集群。
流程
1. 停止并禁用主机上的防火墙:
注意
重要
46
第 10 章 更新包含使用 RHEL 的计算(COMPUTE)系统的集群
[all:vars]
ansible_user=root
#ansible_become=True
openshift_kubeconfig_path="~/.kube/config"
[workers]
mycluster-rhel8-0.example.com
mycluster-rhel8-1.example.com
mycluster-rhel8-2.example.com
mycluster-rhel8-3.example.com
b. 进入 openshift-ansible 目录:
$ cd /usr/share/ansible/openshift-ansible
c. 运行 upgrade playbook:
1 对于<path> ,指定您创建的Ansible库存文件的路径。
注意
# oc get node
输出示例
47
OpenShift Container Platform 4.10 更新集群
# yum update
注意
48
第 11 章 在断开连接的环境中更新集群
第 11 章 在断开连接的环境中更新集群
11.1. 关于在断开连接的环境中的集群更新
断开连接的环境是集群节点无法访问互联网的环境。因此,您必须在 registry 中填充安装镜像。如果您的
registry 主机无法同时访问互联网和集群,您可以将镜像镜像到与这个环境断开连接的文件系统中,然后
使用主机或可移动介质填补该空白。如果本地容器 registry 和集群连接到镜像 registry 的主机,您可以直
接将发行镜像推送到本地 registry。
11.1.2. 在断开连接的环境中执行集群更新
您可以使用以下步骤之一更新断开连接的 OpenShift Container Platform 集群:
11.2.1. 先决条件
您必须在托管 OpenShift Container Platform 集群的位置(如 Red Hat Quay)中有一个支持
Docker v2-2 的容器镜像 registry。
11.2.2. 准备您的镜像主机
执行镜像步骤前,必须准备主机以检索内容并将其推送到远程位置。
重要
49
OpenShift Container Platform 4.10 更新集群
重要
流程
2. 在 Version 下拉菜单中选择相应的版本。
4. 解包存档:
$ echo $PATH
$ oc <command>
流程
2. 在 Version 下拉菜单中选择相应的版本。
4. 使用 ZIP 程序解压存档。
C:\> path
C:\> oc <command>
50
第 11 章 在断开连接的环境中更新集群
流程
2. 在 Version 下拉菜单中选择相应的版本。
4. 解包和解压存档。
$ echo $PATH
$ oc <command>
11.2.2.2. 配置允许对容器镜像进行镜像的凭证
警告
警告
先决条件
流程
51
OpenShift Container Platform 4.10 更新集群
在安装主机上完成以下步骤:
该文件类似于以下示例:
{
"auths": {
"cloud.openshift.com": {
"auth": "b3BlbnNo...",
"email": "[email protected]"
},
"quay.io": {
"auth": "b3BlbnNo...",
"email": "[email protected]"
},
"registry.connect.redhat.com": {
"auth": "NTE3Njg5Nj...",
"email": "[email protected]"
},
"registry.redhat.io": {
"auth": "NTE3Njg5Nj...",
"email": "[email protected]"
}
}
}
"auths": {
"<mirror_registry>": { 1
"auth": "<credentials>", 2
"email": "[email protected]"
}
},
52
第 11 章 在断开连接的环境中更新集群
该文件类似于以下示例:
{
"auths": {
"registry.example.com": {
"auth": "BGVtbYk3ZHAtqXs=",
"email": "[email protected]"
},
"cloud.openshift.com": {
"auth": "b3BlbnNo...",
"email": "[email protected]"
},
"quay.io": {
"auth": "b3BlbnNo...",
"email": "[email protected]"
},
"registry.connect.redhat.com": {
"auth": "NTE3Njg5Nj...",
"email": "[email protected]"
},
"registry.redhat.io": {
"auth": "NTE3Njg5Nj...",
"email": "[email protected]"
}
}
}
重要
先决条件
您已从 Red Hat OpenShift Cluster Manager 下载了 pull secret ,并已修改为包含镜像存储库身份
验证信息。
流程
1. 使用 Red Hat OpenShift Container Platform Upgrade Graph visualizer 和 update planner 计划从
一个版本升级到另一个版本。OpenShift Upgrade Graph 提供频道图形,并演示了如何确认您的
当前和预定集群版本之间有更新路径。
2. 设置所需的环境变量:
a. 导出发行版本信息:
$ export OCP_RELEASE=<release_version>
$ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'
c. 导出本地存储库名称:
$ LOCAL_REPOSITORY='<local_repository_name>'
$
LOCAL_RELEASE_IMAGES_REPOSITORY='<local_release_images_repository_name>'
e. 导出要进行镜像的存储库名称:
$ PRODUCT_REPO='openshift-release-dev'
对于生产环境版本,必须指定 openshift-release-dev。
$ LOCAL_SECRET_JSON='<path_to_pull_secret>'
注意
g. 导出发行版本镜像:
$ RELEASE_NAME="ocp-release"
对于生产环境版本,您必须指定 ocp-release。
h. 为您的服务器导出构架类型,如 x86_64。
$ ARCHITECTURE=<server_architecture>
54
第 11 章 在断开连接的环境中更新集群
i. 导出托管镜像的目录的路径:
$ REMOVABLE_MEDIA_PATH=<path> 1
1 指定完整路径,包括开始的前斜杠(/)字符。
3. 查看要镜像的镜像和配置清单:
4. 将版本镜像镜像(mirror)到镜像 registry。
如果您的镜像主机无法访问互联网,请执行以下操作:
i. 将可移动介质连接到连接到互联网的系统。
ii. 将镜像和配置清单镜像到可移动介质的目录中:
1 对于 REMOVABLE_MEDIA_PATH,您必须使用与镜像镜像时指定的同一路径。
iv. 使用 oc 命令行界面(CLI)登录到您要升级的集群。
v. 将镜像发行镜像签名配置映射应用到连接的集群:
$ oc apply -f ${REMOVABLE_MEDIA_PATH}/mirror/config/<image_signature_file>
1
1 对于 <image_signature_file>,指定文件的路径和名称,例如 signature-sha256-
81154f5c03294534.yaml。
55
OpenShift Container Platform 4.10 更新集群
i. 将发行镜像直接推送到本地 registry,并使用以下命令将配置映射应用到集群:
注意
其他资源
关于 OpenShift Update 服务
了解升级频道和发行版本
11.3.2. 先决条件
您必须安装了 oc 命令行界面(CLI)工具。
apiVersion: v1
kind: ConfigMap
metadata:
name: my-registry-ca
data:
updateservice-registry: | 1
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
registry-with-port.example.com..5000: | 2
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
先决条件
流程
57
OpenShift Container Platform 4.10 更新集群
该更新将推广至所有节点,可能需要一些时间,具体取决于集群大小。
注意
注意
对于在断开连接的环境中安装的集群(也称为断开连接的集群),Operator Lifecycle
Manager 默认无法访问托管在远程 registry 上的红帽提供的 OperatorHub 源,因为这些远
程源需要有互联网连接。如需更多信息,请参阅在受限网络中使用 Operator Lifecycle
Manager。
流程
注意
58
第 11 章 在断开连接的环境中更新集群
d. 选择一个 批准策略:
e. 点 Install。
流程
apiVersion: v1
kind: Namespace
metadata:
name: openshift-update-service
annotations:
openshift.io/node-selector: ""
labels:
openshift.io/cluster-monitoring: "true" 1
b. 创建命名空间:
$ oc create -f <filename>.yaml
例如:
$ oc create -f update-service-namespace.yaml
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: update-service-operator-group
spec:
targetNamespaces:
- openshift-update-service
例如:
订阅示例
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: update-service-subscription
spec:
channel: v1
installPlanApproval: "Automatic"
source: "redhat-operators" 1
sourceNamespace: "openshift-marketplace"
name: "cincinnati-operator"
d. 创建 Subscription 对象:
$ oc create -f <filename>.yaml
例如:
3. 验证 Operator 安装:
60
第 11 章 在断开连接的环境中更新集群
输出示例
其他资源
在命名空间中安装 Operator。
流程
FROM registry.access.redhat.com/ubi8/ubi:8.1
注意
您可以使用 OpenShift Container Platform Web 控制台或 CLI 创建 OpenShift Update Service 应用程
61
OpenShift Container Platform 4.10 更新集群
您可以使用 OpenShift Container Platform Web 控制台或 CLI 创建 OpenShift Update Service 应用程
序。
您可以使用 OpenShift Container Platform Web 控制台使用 OpenShift Update Service Operator 创建
OpenShift Update Service 应用程序。
先决条件
流程
4. 点 Create UpdateService。
8. 在 Replicas 字段中输入 2。
单击 Resources 选项卡。
验证每个应用资源的状态是否为 Created。
先决条件
62
第 11 章 在断开连接的环境中更新集群
流程
$ NAMESPACE=openshift-update-service
$ NAME=service
$ RELEASE_IMAGES=registry.example.com/ocp4/openshift4-release-images
$ GRAPH_DATA_IMAGE=registry.example.com/openshift/graph-data:latest
a. 使用以下命令获取策略引擎路由:
您可能需要轮询,直到命令成功为止。
63
OpenShift Container Platform 4.10 更新集群
这会轮询到图形请求成功为止,但生成的图形可能为空,具体取决于您已镜像的发行镜像。
注意
先决条件
流程
$ NAMESPACE=openshift-update-service
$ NAME=service
3. 获取策略引擎路由:
4. 为拉取图形数据设置补丁:
$ PATCH="{\"spec\":{\"upstream\":\"${POLICY_ENGINE_GRAPH_URI}\"}}"
64
第 11 章 在断开连接的环境中更新集群
注意
请参阅启用集群范围代理以将 CA 配置为信任更新服务器。
11.3.8. 后续步骤
在更新集群前,请确认满足以下条件:
新发行版本的发行镜像签名配置映射应用到集群。
当前发行版本和更新目标发行镜像被镜像到本地可访问的 registry 中。
最近图数据容器镜像已镜像到本地 registry。
使用 Web 控制台更新集群
使用 CLI 更新集群
准备执行 EUS 更新
执行 canary rollout 更新
11.4.1. 先决条件
您必须安装了 oc 命令行界面(CLI)工具。
65
OpenShift Container Platform 4.10 更新集群
11.4.2. 暂停 MachineHealthCheck 资源
在升级过程中,集群中的节点可能会临时不可用。对于 worker 节点,机器健康检查可能会认为这样的节
点不健康,并重新引导它们。为避免重新引导这样的节点,请在更新集群前暂停所有
MachineHealthCheck 资源。
先决条件
流程
apiVersion: machine.openshift.io/v1beta1
kind: MachineHealthCheck
metadata:
name: example
namespace: openshift-machine-api
annotations:
cluster.x-k8s.io/paused: ""
spec:
selector:
matchLabels:
role: worker
unhealthyConditions:
- type: "Ready"
status: "Unknown"
timeout: "300s"
- type: "Ready"
status: "False"
timeout: "300s"
maxUnhealthy: "40%"
status:
currentHealthy: 5
expectedMachines: 5
重要
66
第 11 章 在断开连接的环境中更新集群
重要
更新集群后恢复机器健康检查。要恢复检查,请运行以下命令从
MachineHealthCheck 资源中删除暂停注解:
11.4.3. 升级断开连接的集群
将受限网络集群更新至您下载的发行镜像的 OpenShift Container Platform 版本。
注意
先决条件
您已将新发行版本的镜像镜像(mirror)到 registry。
流程
更新集群:
注意
67
OpenShift Container Platform 4.10 更新集群
为每个目标存储库识别多个已镜像 (mirror)的存储库,以确保如果一个镜像停止运作,仍可使用
其他镜像。
在断开连接的环境中的集群可以从关键位置(如 quay.io)拉取镜像,并让公司防火墙后面的
registry 提供请求的镜像。
当节点从源存储库中请求镜像时,它会依次尝试每个已镜像的存储库,直到找到所请求的内容。
如果所有镜像均失败,集群则会尝试源存储库。如果成功,则镜像拉取至节点中。
可通过以下方式设置存储库镜像:
您希望为其提供从源存储库请求的内容的每个镜像存储库的单独条目。
注意
先决条件
流程
1. 通过以下方法配置已镜像的存储库:
使用 skopeo 等工具手动将镜像从源目录复制到已镜像的存储库。
例如:在 Red Hat Enterprise Linux(RHEL 7 或 RHEL 8)系统上安装 skopeo RPM 软件包
后,使用 skopeo 命令,如下例所示:
$ skopeo copy \
68
第 11 章 在断开连接的环境中更新集群
docker://registry.access.redhat.com/ubi8/ubi-
minimal@sha256:5cfbaf45ca96806917830c183e9f37df2e913b187adb32e89fd83fa455eba
a6 \
docker://example.io/example/ubi-minimal
apiVersion: operator.openshift.io/v1alpha1
kind: ImageContentSourcePolicy
metadata:
name: ubi8repo
spec:
repositoryDigestMirrors:
- mirrors:
- example.io/example/ubi-minimal 1
- example.com/example/ubi-minimal 2
source: registry.access.redhat.com/ubi8/ubi-minimal 3
- mirrors:
- mirror.example.com/redhat
source: registry.redhat.io/openshift4 4
- mirrors:
- mirror.example.com
source: registry.redhat.io 5
- mirrors:
- mirror.example.net/image
source: registry.example.com/example/myimage 6
- mirrors:
- mirror.example.net
source: registry.example.com/example 7
- mirrors:
- mirror.example.net/registry-example-com
source: registry.example.com 8
2 表示每个目标仓库的多个镜像仓库。如果一个镜像停机,则目标仓库可以使用另一个镜像。
6 拉取镜像 mirror.example.net/image@sha256:…。
69
OpenShift Container Platform 4.10 更新集群
$ oc create -f registryrepomirror.yaml
创建 ImageContentSourcePolicy 对象后,新的设置将部署到每个节点,集群开始使用已镜像的
存储库来响应源存储库请求。
5. 要检查是否应用了已镜像的配置设置,在其中一个节点上执行以下内容。
a. 列出您的节点:
$ oc get node
输出示例
Imagecontentsourcepolicy 资源不会重启节点。
b. 启动调试过程以访问节点:
$ oc debug node/ip-10-0-147-35.ec2.internal
输出示例
c. 将您的根目录改为 /host :
d. 检查 /etc/containers/registries.conf 文件,确保已完成更改:
输出示例
70
第 11 章 在断开连接的环境中更新集群
[[registry]]
prefix = ""
location = "registry.access.redhat.com/ubi8/ubi-minimal"
mirror-by-digest-only = true
[[registry.mirror]]
location = "example.io/example/ubi-minimal"
[[registry.mirror]]
location = "example.com/example/ubi-minimal"
[[registry]]
prefix = ""
location = "registry.example.com"
mirror-by-digest-only = true
[[registry.mirror]]
location = "mirror.example.net/registry-example-com"
[[registry]]
prefix = ""
location = "registry.example.com/example"
mirror-by-digest-only = true
[[registry.mirror]]
location = "mirror.example.net"
[[registry]]
prefix = ""
location = "registry.example.com/example/myimage"
mirror-by-digest-only = true
[[registry.mirror]]
location = "mirror.example.net/image"
[[registry]]
prefix = ""
location = "registry.redhat.io"
mirror-by-digest-only = true
[[registry.mirror]]
location = "mirror.example.com"
[[registry]]
prefix = ""
location = "registry.redhat.io/openshift4"
mirror-by-digest-only = true
[[registry.mirror]]
location = "mirror.example.com/redhat"
e. 将镜像摘要从源拉取到节点,并检查是否通过镜像解析。ImageContentSourcePolicy 对象
仅支持镜像摘要,不支持镜像标签。
71
OpenShift Container Platform 4.10 更新集群
存储库镜像故障排除
如果存储库镜像流程未按规定工作,请使用以下有关存储库镜像如何工作的信息协助排查问题。
首个工作镜像用于提供拉取(pull)的镜像。
只有在无其他镜像工作时,才会使用主 registry。
从系统上下文,Insecure 标志用作回退。
11.4.5. 镜像镜像目录的范围,以减少集群节点重启的频率
您可以在存储库级别或更广泛的 registry 级别限定镜像目录。一个范围广泛的
ImageContentSourcePolicy 资源可减少节点在响应资源更改时需要重启的次数。
先决条件
配置镜像镜像目录,以便在断开连接的集群中使用。
流程
其中:
<local_registry>
您为断开连接的集群配置的本地 registry,如 local.registry:5000。
<pull_spec>
是断开连接的 registry 中配置的 pull 规格,如 redhat/redhat-operator-index:v4.10
<pull_secret_file>
是 .json 文件格式的 registry.redhat.io pull secret。您可以从 Red Hat OpenShift Cluster
Manager 下载 pull secret。
$ oc apply -f imageContentSourcePolicy.yaml
72
第 11 章 在断开连接的环境中更新集群
验证
输出示例
apiVersion: v1
items:
- apiVersion: operator.openshift.io/v1alpha1
kind: ImageContentSourcePolicy
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"operator.openshift.io/v1alpha1","kind":"ImageContentSourcePolicy","metadata":
{"annotations":{},"name":"redhat-operator-index"},"spec":{"repositoryDigestMirrors":
[{"mirrors":["local.registry:5000"],"source":"registry.redhat.io"}]}}
...
11.4.6. 其他资源
在受限网络中使用 Operator Lifecycle Manager
机器配置概述
您可以使用 OpenShift Container Platform Web 控制台使用 OpenShift Update Service Operator 删除
OpenShift Update Service 应用程序。
先决条件
流程
73
OpenShift Container Platform 4.10 更新集群
流程
输出示例
NAME AGE
service 6s
输出示例
您可以使用 OpenShift Container Platform Web 控制台卸载 OpenShift Update Service Operator。
先决条件
流程
74
第 11 章 在断开连接的环境中更新集群
先决条件
流程
$ oc project openshift-update-service
输出示例
$ oc get operatorgroup
输出示例
NAME AGE
openshift-update-service-fprx2 4m41s
输出示例
$ oc get subscription
输出示例
75
OpenShift Container Platform 4.10 更新集群
输出示例
currentCSV: update-service-operator.v0.0.1
6. 删除订阅,如 update-service-operator:
输出示例
输出示例
76
第 12 章 更新在 VSPHERE 上运行的节点上运行的硬件
重要
先决条件
流程
输出示例
77
OpenShift Container Platform 4.10 更新集群
6. 等待节点报告为 Ready :
注意
先决条件
流程
1. 列出集群中的计算节点。
输出示例
注意计算节点的名称。
2. 将计算节点标记为不可调度:
3. 从计算节点撤离容器集。执行此操作有多种方法。例如,您可以撤离节点上的所有或选定 pod:
7. 等待节点报告为 Ready :
8. 将计算节点再次标记为可调度:
9. 对集群中的每个计算节点重复此步骤。
先决条件
流程
注意
从模板转换后,请不要打开虚拟机电源。
其他资源
了解如何撤离节点上的 pod
79
OpenShift Container Platform 4.10 更新集群
80