2.5. 在 IBM Z 和 IBM LinuxONE 中使用 RHEL KVM 安装集群
在 OpenShift Container Platform 版本 4.19 中,您可以在您置备的 IBM Z® 或 IBM® LinuxONE 系统上安装集群。
虽然本文档只涉及 IBM Z®,但它的所有信息也适用于 IBM® LinuxONE。
2.5.1. 先决条件 复制链接链接已复制到粘贴板!
- 您已完成了准备使用用户置备的基础架构在 IBM Z 上安装集群的任务。
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
- 在开始安装过程前,您必须清理安装目录。这样可确保在安装过程中创建和更新所需的安装文件。
-
已为集群置备了 使用 OpenShift Data Foundation 或其他支持的存储协议的持久性存储。要部署私有镜像 registry,您必须使用
ReadWriteMany
访问设置持久性存储。 如果使用防火墙,则会 将其配置为允许集群需要访问的站点。
注意如果要配置代理,请务必查看此站点列表。
- 置备基于 RHEL 8.6 或更高版本的、托管在逻辑分区(LPAR)上的 RHEL Kernel Virtual Machine(KVM)系统。请参阅 Red Hat Enterprise Linux 8 和 9 生命周期。
2.5.2. 准备用户置备的基础架构 复制链接链接已复制到粘贴板!
在用户置备的基础架构上安装 OpenShift Container Platform 之前,您必须准备底层基础架构。
本节详细介绍了设置集群基础架构以准备 OpenShift Container Platform 安装所需的高级别步骤。这包括为您的集群节点配置 IP 网络和网络连接,通过防火墙启用所需的端口,以及设置所需的 DNS 和负载均衡基础架构。
准备后,集群基础架构必须满足 带有用户置备的基础架构部分的集群要求。
先决条件
- 您已参阅 OpenShift Container Platform 4.x Tested Integrations 页面。
- 您已查看了 具有用户置备基础架构的集群要求部分中详述的基础架构 要求。
流程
如果您使用 DHCP 向集群节点提供 IP 网络配置,请配置 DHCP 服务。
- 将节点的持久 IP 地址添加到您的 DHCP 服务器配置。在您的配置中,将相关网络接口的 MAC 地址与每个节点的预期 IP 地址匹配。
当您使用 DHCP 为集群机器配置 IP 寻址时,机器还通过 DHCP 获取 DNS 服务器信息。定义集群节点通过 DHCP 服务器配置使用的持久性 DNS 服务器地址。
注意如果没有使用 DHCP 服务,则必须在 RHCOS 安装时为节点提供 IP 网络配置和 DNS 服务器地址。如果要从 ISO 镜像安装,这些参数可作为引导参数传递。如需有关静态 IP 置备和高级网络选项的更多信息,请参阅 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程 部分。
在 DHCP 服务器配置中定义集群节点的主机名。有关 主机名注意事项的详情,请参阅通过 DHCP 设置集群节点 主机名部分。
注意如果没有使用 DHCP 服务,集群节点可以通过反向 DNS 查找来获取其主机名。
- 选择执行 Red Hat Enterprise Linux CoreOS(RHCOS)的快速跟踪安装或 Red Hat Enterprise Linux CoreOS(RHCOS)的完整安装。要进行完整安装,您必须设置 HTTP 或 HTTPS 服务器,以便提供 Ignition 文件,并将镜像安装到集群节点。对于快速跟踪安装,不需要 HTTP 或 HTTPS 服务器,但需要 DHCP 服务器。请参阅"Fast-track 安装:创建 Red Hat Enterprise Linux CoreOS(RHCOS)机器"和"Full installation: Creating Red Hat Enterprise Linux CoreOS(RHCOS)机器"部分。
- 确保您的网络基础架构提供集群组件之间所需的网络连接。有关 要求的详情,请参阅用户置备的基础架构 的网络要求部分。
将防火墙配置为启用 OpenShift Container Platform 集群组件进行通信所需的端口。如需有关所需端口的详细信息,请参阅用户置备的基础架构 部分的网络要求。
重要默认情况下,OpenShift Container Platform 集群可以访问端口
1936
,因为每个 control plane 节点都需要访问此端口。避免使用 Ingress 负载均衡器公开此端口,因为这样做可能会导致公开敏感信息,如统计信息和指标(与 Ingress Controller 相关的统计信息和指标)。
为集群设置所需的 DNS 基础架构。
- 为 Kubernetes API、应用程序通配符、bootstrap 机器、control plane 机器和计算机器配置 DNS 名称解析。
为 Kubernetes API、bootstrap 机器、control plane 机器和计算机器配置反向 DNS 解析。
如需有关 OpenShift Container Platform DNS 要求的更多信息,请参阅用户置备 DNS 要求部分。
验证您的 DNS 配置。
- 从安装节点,针对 Kubernetes API 的记录名称、通配符路由和集群节点运行 DNS 查找。验证响应中的 IP 地址是否与正确的组件对应。
从安装节点,针对负载均衡器和集群节点的 IP 地址运行反向 DNS 查找。验证响应中的记录名称是否与正确的组件对应。
有关详细的 DNS 验证步骤,请参阅用户置备的基础架构 验证 DNS 解析部分。
- 置备所需的 API 和应用程序入口负载平衡基础架构。有关 要求的更多信息,请参阅用户置备的基础架构的负载平衡 要求部分。
某些负载平衡解决方案要求在初始化负载平衡之前,对群集节点进行 DNS 名称解析。
2.5.3. 手动创建安装配置文件 复制链接链接已复制到粘贴板!
安装集群要求您手动创建安装配置文件。
先决条件
- 在本地机器上有一个 SSH 公钥用于安装程序。您可以使用密钥在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
创建一个安装目录来存储所需的安装资产:
mkdir <installation_directory>
$ mkdir <installation_directory>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
对提供的
install-config.yaml
文件模板示例进行自定义,并将文件保存到<installation_directory>
中。注意此配置文件必须命名为
install-config.yaml
。备份
install-config.yaml
文件,以便使用它来安装多个集群。重要现在备份
install-config.yaml
文件,因为安装过程会在下一步中消耗该文件。
2.5.3.1. IBM Z 的 install-config.yaml 文件示例 复制链接链接已复制到粘贴板!
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
- 1
- 集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
- 2 5
controlPlane
部分是一个单个映射,但compute
部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。仅使用一个 control plane 池。- 3 6
- 指定要启用或禁用并发多线程(SMT)还是超线程。默认情况下,启用 SMT 可提高机器中内核的性能。您可以通过将 参数值设置为
Disabled
来禁用它。如果禁用 SMT,则必须在所有集群机器中禁用它;这包括 control plane 和计算机器。注意默认启用并发多线程(SMT)。如果 OpenShift Container Platform 节点上没有 SMT,
超线程
参数无效。重要如果您禁用
超线程
,无论是在 OpenShift Container Platform 节点上,还是在install-config.yaml
文件中,请确保您的容量规划考虑机器性能显著降低的情况。 - 4
- 在用户置备的基础架构上安装 OpenShift Container Platform 时,必须将这个值设置为
0
。在安装程序置备的安装中,参数控制集群为您创建和管理的计算机器数量。在用户置备的安装中,您必须在完成集群安装前手动部署计算机器。注意如果要安装一个三节点集群,在安装 Red Hat Enterprise Linux CoreOS(RHCOS)机器时不要部署任何计算机器。
- 7
- 您添加到集群的 control plane 机器数量。由于集群使用这些值作为集群中的 etcd 端点数量,所以该值必须与您部署的 control plane 机器数量匹配。
- 8
- 您在 DNS 记录中指定的集群名称。
- 9
- 从中分配 Pod IP 地址的 IP 地址块。此块不得与现有物理网络重叠。这些 IP 地址用于 pod 网络。如果需要从外部网络访问 pod,您必须配置负载均衡器和路由器来管理流量。注意
类 E CIDR 范围被保留以供以后使用。要使用 Class E CIDR 范围,您必须确保您的网络环境接受 Class E CIDR 范围内的 IP 地址。
- 10
- 分配给每个节点的子网前缀长度。例如,如果
hostPrefix 设为
23
,则每个节点从 givencidr
中分配 a/23
子网,这样就能有 510(2^(32 - 23)- 2)个 pod IP 地址。如果需要从外部网络访问节点,请配置负载均衡器和路由器来管理流量。 - 11
- 要安装的集群网络插件。默认值
OVNKubernetes
是唯一支持的值。 - 12
- 用于服务 IP 地址的 IP 地址池。您只能输入一个 IP 地址池。此块不得与现有物理网络重叠。如果您需要从外部网络访问服务,请配置负载均衡器和路由器来管理流量。
- 13
- 您必须将平台设置为
none
。您无法为 IBM Z® 基础架构提供额外的平台配置变量。重要使用平台类型
none
安装的集群无法使用一些功能,如使用 Machine API 管理计算机器。即使附加到集群的计算机器安装在通常支持该功能的平台上,也会应用这个限制。在安装后无法更改此参数。 - 14
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅将 RHEL 切换到 FIPS 模式。
当以 FIPS 模式运行 Red Hat Enterprise Linux (RHEL) 或 Red Hat Enterprise Linux CoreOS (RHCOS) 时,OpenShift Container Platform 核心组件使用 RHEL 加密库,只有在 x86_64, ppc64le, 和 s390x 架构上的库被提交到 NIST 进行 FIPS 140-2/140-3 Validation。
- 15
- Red Hat OpenShift Cluster Manager 的 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
- 16
- Red Hat Enterprise Linux CoreOS(RHCOS)中
core
用户的 SSH 公钥。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。
2.5.3.2. 在安装过程中配置集群范围的代理 复制链接链接已复制到粘贴板!
生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml
文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。
先决条件
-
您有一个现有的
install-config.yaml
文件。 您检查了集群需要访问的站点,并确定它们中的任何站点是否需要绕过代理。默认情况下,所有集群出口流量都经过代理,包括对托管云供应商 API 的调用。如果需要,您将在
Proxy 对象的
spec.noProxy
字段中添加站点来绕过代理。注意Proxy
对象status.noProxy
字段使用安装配置中的networking.machineNetwork[].cidr
、networking.clusterNetwork[].cidr
和networking.serviceNetwork[]
字段的值填充。对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,
Proxy
对象status.noProxy
字段也会使用实例元数据端点填充(169.254.169.254
)。
流程
编辑
install-config.yaml
文件并添加代理设置。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 用于创建集群外 HTTP 连接的代理 URL。URL 方案必须是
http
。 - 2
- 用于创建集群外 HTTPS 连接的代理 URL。
- 3
- 要从代理中排除的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。在域前面加上
.
以仅匹配子域。例如,.y.com
匹配x.y.com
,但不匹配y.com
。使用*
绕过所有目的地的代理。 - 4
- 如果提供,安装程序会在
openshift-config
命名空间中生成名为user-ca-bundle
的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建一个trusted-ca-bundle
配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS (RHCOS)信任捆绑包合并,Proxy
对象的trustedCA
字段中也会引用此配置映射。additionalTrustBundle
字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy
对象的配置以引用trustedCA
字段中user-ca-bundle
配置映射的策略。允许的值是Proxyonly
和Always
。仅在配置了http/https
代理时,使用Proxyonly
引用user-ca-bundle
配置映射。使用Always
始终引用user-ca-bundle
配置映射。默认值为Proxyonly
。
注意安装程序不支持代理的
readinessEndpoints
字段。注意如果安装程序超时,重启并使用安装程序的
wait-for
命令完成部署。例如:./openshift-install wait-for install-complete --log-level debug
$ ./openshift-install wait-for install-complete --log-level debug
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用
提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
2.5.3.3. 配置三节点集群 复制链接链接已复制到粘贴板!
另外,您可以在由三台 control plane 机器组成的最少三个节点集群中部署零台计算机器。这为集群管理员和开发人员提供了更小、效率更高的集群,用于测试、开发和生产。
在三节点 OpenShift Container Platform 环境中,三台 control plane 机器可以调度,这意味着应用程序工作负载被调度到它们上运行。
先决条件
-
您有一个现有的
install-config.yaml
文件。
流程
确保
install-config.yaml
文件中的计算副本数量设置为0
,如以下计算
小节所示:compute: - name: worker platform: {} replicas: 0
compute: - name: worker platform: {} replicas: 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在用户置备的基础架构上安装 OpenShift Container Platform 时,无论您要部署的计算机器数量有多少,您必须将计算机器的
replicas
参数值设置为0
。在安装程序置备的安装中,参数控制集群为您创建和管理的计算机器数量。这不适用于手动部署计算机器的用户置备安装。注意control plane 节点的首选资源是 6 个 vCPU 和 21 GB。对于三个 control plane 节点,这是相当于至少五节点集群的内存 + vCPU。您应该为三个节点提供支持,每个节点安装在一个 120 GB 的磁盘上,并且启用了三个 SMT2 的 IFL。测试最小的设置是每个 control plane 节点在 120 GB 磁盘上的三个 vCPU 和 10 GB。
对于三节点集群安装,请按照以下步骤执行:
- 如果要部署一个带有零计算节点的三节点集群,Ingress Controller Pod 在 control plane 节点上运行。在三节点集群部署中,您必须配置应用程序入口负载均衡器,将 HTTP 和 HTTPS 流量路由到 control plane 节点。如需更多信息,请参阅用户置备的基础架构的负载平衡要求 部分。
-
在以下步骤中创建 Kubernetes 清单文件时,请确保
<installation_directory>/manifests/cluster-scheduler-02-config.yml
文件中的mastersSchedulable
参数被设置为true
。这可让应用程序工作负载在 control plane 节点上运行。 - 在创建 Red Hat Enterprise Linux CoreOS(RHCOS)机器时,不要部署任何计算节点。
2.5.4. Cluster Network Operator 配置 复制链接链接已复制到粘贴板!
集群网络的配置作为 Cluster Network Operator(CNO)配置的一部分指定,并存储在名为 cluster
的自定义资源(CR)对象中。CR 指定 operator.openshift.io
API 组中的 Network
API 的字段。
CNO 配置在集群安装过程中从 Network.config.openshift.io
API 组中的 Network
API 继承以下字段:
clusterNetwork
- 从中分配 Pod IP 地址的 IP 地址池。
serviceNetwork
- 服务的 IP 地址池.
defaultNetwork.type
-
集群网络插件。
OVNKubernetes
是安装期间唯一支持的插件。
您可以通过在名为 cluster
的 CNO 对象中设置 defaultNetwork
对象的字段来为集群指定集群网络插件配置。
2.5.4.1. Cluster Network Operator 配置对象 复制链接链接已复制到粘贴板!
下表中描述了 Cluster Network Operator(CNO)的字段:
字段 | 类型 | 描述 |
---|---|---|
|
|
CNO 对象的名称。这个名称始终是 |
|
| 用于指定从哪些 IP 地址块分配 Pod IP 地址以及集群中每个节点的子网前缀长度的列表。例如: |
|
| 服务的 IP 地址块。OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。例如: spec: serviceNetwork: - 172.30.0.0/14
您只能在创建清单前在 |
|
| 为集群网络配置网络插件。 |
|
| 此对象的字段指定 kube-proxy 配置。如果使用 OVN-Kubernetes 集群网络供应商,则 kube-proxy 配置不会起作用。 |
对于需要在多个网络间部署对象的集群,请确保为 install-config.yaml
文件中定义的每种网络类型指定与 clusterNetwork.hostPrefix
参数相同的值。为每个 clusterNetwork.hostPrefix
参数设置不同的值可能会影响 OVN-Kubernetes 网络插件,其中插件无法有效地在不同节点间路由对象流量。
defaultNetwork 对象配置
下表列出了 defaultNetwork
对象的值:
字段 | 类型 | 描述 |
---|---|---|
|
|
注意 OpenShift Container Platform 默认使用 OVN-Kubernetes 网络插件。 |
|
| 此对象仅对 OVN-Kubernetes 网络插件有效。 |
配置 OVN-Kubernetes 网络插件
下表描述了 OVN-Kubernetes 网络插件的配置字段:
字段 | 类型 | 描述 |
---|---|---|
|
| Geneve(通用网络虚拟化封装)覆盖网络的最大传输单元(MTU)。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。 如果自动探测的值不是您期望的值,请确认节点上主网络接口上的 MTU 是否正确。您不能使用这个选项更改节点上主网络接口的 MTU 值。
如果集群中不同节点需要不同的 MTU 值,则必须将此值设置为 |
|
|
用于所有 Geneve 数据包的端口。默认值为 |
|
| 指定用于自定义 IPsec 配置的配置对象。 |
|
| 为 IPv4 设置指定配置对象。 |
|
| 为 IPv6 设置指定配置对象。 |
|
| 指定用于自定义网络策略审计日志的配置对象。如果未设置,则使用默认的审计日志设置。 |
|
|
可选:指定一个配置对象来自定义如何将出口流量发送到节点网关。有效值为 注意 在迁移出口流量时,工作负载和服务流量会受到一定影响,直到 Cluster Network Operator (CNO) 成功推出更改。 |
字段 | 类型 | 描述 |
---|---|---|
| 字符串 |
如果您的现有网络基础架构与
默认值为 |
| 字符串 |
如果您的现有网络基础架构与
默认值为 |
字段 | 类型 | 描述 |
---|---|---|
| 字符串 |
如果您的现有网络基础架构与
默认值为 |
| 字符串 |
如果您的现有网络基础架构与
默认值为 |
字段 | 类型 | 描述 |
---|---|---|
| 整数 |
每个节点每秒生成一次的消息数量上限。默认值为每秒 |
| 整数 |
审计日志的最大大小,以字节为单位。默认值为 |
| 整数 | 保留的日志文件的最大数量。 |
| 字符串 | 以下附加审计日志目标之一:
|
| 字符串 |
syslog 工具,如 as |
字段 | 类型 | 描述 |
---|---|---|
|
|
将此字段设置为
此字段与 Open vSwitch 硬件卸载功能有交互。如果将此字段设置为 |
|
|
您可以使用 注意
|
|
| 可选:指定一个对象来为主机配置内部 OVN-Kubernetes 伪装地址,以服务 IPv4 地址的流量。 |
|
| 可选:指定一个对象来为主机配置内部 OVN-Kubernetes 伪装地址,以服务 IPv6 地址的流量。 |
字段 | 类型 | 描述 |
---|---|---|
|
|
内部使用的伪装 IPv4 地址,以启用主机服务流量。主机配置了这些 IP 地址和共享网关网桥接口。默认值为 重要
对于 OpenShift Container Platform 4.17 及更新的版本,集群使用 |
字段 | 类型 | 描述 |
---|---|---|
|
|
内部使用的伪装 IPv6 地址,以启用主机服务流量。主机配置了这些 IP 地址和共享网关网桥接口。默认值为 重要
对于 OpenShift Container Platform 4.17 及更新的版本,集群使用 |
字段 | 类型 | 描述 |
---|---|---|
|
| 指定 IPsec 实现的行为。必须是以下值之一:
|
启用 IPSec 的 OVN-Kubernetes 配置示例
2.5.5. 创建 Kubernetes 清单和 Ignition 配置文件 复制链接链接已复制到粘贴板!
由于您必须修改一些集群定义文件并手动启动集群机器,因此您必须生成 Kubernetes 清单和 Ignition 配置文件来配置机器。
安装配置文件转换为 Kubernetes 清单。清单嵌套到 Ignition 配置文件中,稍后用于配置集群机器。
-
OpenShift Container Platform 安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
生成清单和 Ignition 文件的安装程序是特定的架构,可以从 客户端镜像镜像获取。安装程序的 Linux 版本仅在 s390x 上运行。此安装程序也可用作 Mac OS 版本。
先决条件
- 已获得 OpenShift Container Platform 安装程序。
-
已创建
install-config.yaml
安装配置文件。
流程
进入包含 OpenShift Container Platform 安装程序的目录,并为集群生成 Kubernetes 清单:
./openshift-install create manifests --dir <installation_directory>
$ ./openshift-install create manifests --dir <installation_directory>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>
,请指定包含您创建的install-config.yaml
文件的安装目录。
警告如果您要安装一个三节点集群,请跳过以下步骤,以便可以调度 control plane 节点。
重要当您将 control plane 节点从默认的不可调度配置为可以调度时,需要额外的订阅。这是因为 control plane 节点变为计算节点。
检查
<installation_directory>/manifests/cluster-scheduler-02-config.yml Kubernetes 清单文件中的
mastersSchedulable
参数是否已设置为false
。此设置可防止在 control plane 机器上调度 pod:-
打开
<installation_directory>/manifests/cluster-scheduler-02-config.yml
文件。 -
找到
mastersSchedulable
参数,并确保它被设置为false
。 - 保存并退出 文件。
-
打开
要创建 Ignition 配置文件,请从包含安装程序的目录运行以下命令:
./openshift-install create ignition-configs --dir <installation_directory>
$ ./openshift-install create ignition-configs --dir <installation_directory>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>
,请指定相同的安装目录。
为安装目录中的 bootstrap、control plane 和计算节点创建 Ignition 配置文件。
kubeadmin-password
和kubeconfig
文件在./<installation_directory>/auth
目录中创建:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要在您置备的 IBM Z® 基础架构上安装 OpenShift Container Platform,您必须将 Red Hat Enterprise Linux CoreOS(RHCOS)安装为 Red Hat Enterprise Linux(RHEL)客户机虚拟机。安装 RHCOS 时,您必须为您要安装的机器类型提供 OpenShift Container Platform 安装程序生成的 Ignition 配置文件。如果您配置了适当的网络、DNS 和负载均衡基础架构,OpenShift Container Platform bootstrap 过程会在 RHCOS 机器重启后自动启动。
您可以使用预打包的 QEMU 写时复制(QCOW2)磁盘镜像对 RHCOS 执行快速跟踪安装。或者,您可以在新 QCOW2 磁盘镜像上执行完整安装。
要在系统中添加更多安全性,您可以选择使用 IBM® Secure Execution 安装 RHCOS,然后才能继续快速跟踪安装。
2.5.6.1. 为 IBM Z 或 IBM LinuxONE 环境中的节点配置加密 复制链接链接已复制到粘贴板!
您可以选择三种方法来选择性地保护 IBM Z® 或 IBM® LinuxONE 上的 OpenShift Container Platform control plane 和计算节点:
- IBM® 安全执行
- 通过 IBM® Crypto Express (CEX) 的 Linux Unified Key Setup (LUKS)
- 网络绑定磁盘加密 (NBDE)
2.5.6.1.1. 使用 IBM 安全执行安装 RHCOS 复制链接链接已复制到粘贴板!
在使用 IBM® Secure Execution 安装 RHCOS 前,您必须准备底层基础架构。
先决条件
- IBM® z15 或更高版本,或 IBM® LinuxONE114 或更高版本。
- Red Hat Enterprise Linux (RHEL) 8 或更高版本。
- 您有一个 bootstrap Ignition 文件。该文件不受保护,其他人能够查看和编辑它。
- 您已确认引导镜像在安装后没有更改。
- 您必须以 IBM® Secure Execution 客户机身份运行所有节点。
流程
准备 RHEL KVM 主机以支持 IBM® 安全执行。
默认情况下,KVM 主机不支持 IBM® 安全执行模式中的客户机。要在 IBM® Secure Execution 模式中支持客户机,KVM 主机必须使用内核参数规格
prot_virt=1
在 LPAR 模式中引导。要在 RHEL 8 上启用prot_virt=1
,请按照以下步骤执行:-
进入到
/boot/loader/entries/
,以修改您的引导装载程序配置文件slirpconf
。 -
添加内核命令行参数
prot_virt=1
。 运行
zipl
命令并重启系统。从支持 IBM® Secure Execution 开始的 KVM 主机发出以下内核信息:
prot_virt: Reserving <amount>MB as ultravisor base storage.
prot_virt: Reserving <amount>MB as ultravisor base storage.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证 KVM 主机现在支持 IBM® Secure Execution,请运行以下命令:
cat /sys/firmware/uv/prot_virt_host
# cat /sys/firmware/uv/prot_virt_host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
1
1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Linux 实例,此属性的值是 1,它检测其环境与安全主机的一致性。对于其他实例,值为 0。
-
进入到
通过 Ignition 将您的主机密钥添加到 KVM 客户机。
第一次引导过程中,RHCOS 会查找主机密钥以使用它们重新加密自身。RHCOS 在
/etc/se-hostkeys
目录中搜索以ibm-z-hostkey-
开头的文件。集群运行的每台机器的所有主机密钥都必须由管理员加载到目录中。首次启动后,您无法在任何其他机器上运行虚拟机。注意您需要在安全系统上准备 Ignition 文件。例如,另一个 IBM® Secure Execution 客户机。
例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您希望节点能够在多个 IBM Z® 机器上运行,您可以根据需要添加任意数量的主机密钥。
要生成 Base64 编码字符串,请运行以下命令:
base64 <your-hostkey>.crt
base64 <your-hostkey>.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 与不运行 IBM® Secure Execution 的客户机相比,机器的第一次引导将较长,因为整个镜像在 Ignition 阶段之前使用随机生成的 LUKS 密码短语进行加密。
添加 Ignition 保护
为了保护存储在 Ignition 配置文件中的 secret 被读取或修改,您必须加密 Ignition 配置文件。
注意为了实现所需的安全性,在运行 IBM® Secure Execution 时默认禁用 Ignition 日志记录和本地登录。
运行以下命令,获取
secex-qemu.qcow2
镜像的公共 GPG 密钥,并使用密钥加密 Ignition 配置:gpg --recipient-file /path/to/ignition.gpg.pub --yes --output /path/to/config.ign.gpg --verbose --armor --encrypt /path/to/config.ign
gpg --recipient-file /path/to/ignition.gpg.pub --yes --output /path/to/config.ign.gpg --verbose --armor --encrypt /path/to/config.ign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
按照 RHCOS 的 fast-track 安装步骤,使用 IBM® Secure Execution QCOW 镜像安装节点。
注意在启动虚拟机前,请将
serial=ignition
替换为serial=ignition_crypted
,并添加launchSecurity
参数。
验证
当您完成 RHCOS 的快速跟踪安装,以及 Ignition 在第一次引导时运行后,验证解密是否成功。
如果解密成功,您可以预期类似以下示例的输出:
输出示例
[ 2.801433] systemd[1]: Starting coreos-ignition-setup-user.service - CoreOS Ignition User Config Setup... [ 2.803959] coreos-secex-ignition-decrypt[731]: gpg: key <key_name>: public key "Secure Execution (secex) 38.20230323.dev.0" imported [ 2.808874] coreos-secex-ignition-decrypt[740]: gpg: encrypted with rsa4096 key, ID <key_name>, created <yyyy-mm-dd> [ OK ] Finished coreos-secex-igni…S Secex Ignition Config Decryptor.
[ 2.801433] systemd[1]: Starting coreos-ignition-setup-user.service - CoreOS Ignition User Config Setup... [ 2.803959] coreos-secex-ignition-decrypt[731]: gpg: key <key_name>: public key "Secure Execution (secex) 38.20230323.dev.0" imported [ 2.808874] coreos-secex-ignition-decrypt[740]: gpg: encrypted with rsa4096 key, ID <key_name>, created <yyyy-mm-dd> [ OK ] Finished coreos-secex-igni…S Secex Ignition Config Decryptor.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果解密失败,您可以预期类似以下示例的输出:
输出示例
Starting coreos-ignition-s…reOS Ignition User Config Setup... [ 2.863675] coreos-secex-ignition-decrypt[729]: gpg: key <key_name>: public key "Secure Execution (secex) 38.20230323.dev.0" imported [ 2.869178] coreos-secex-ignition-decrypt[738]: gpg: encrypted with RSA key, ID <key_name> [ 2.870347] coreos-secex-ignition-decrypt[738]: gpg: public key decryption failed: No secret key [ 2.870371] coreos-secex-ignition-decrypt[738]: gpg: decryption failed: No secret key
Starting coreos-ignition-s…reOS Ignition User Config Setup... [ 2.863675] coreos-secex-ignition-decrypt[729]: gpg: key <key_name>: public key "Secure Execution (secex) 38.20230323.dev.0" imported [ 2.869178] coreos-secex-ignition-decrypt[738]: gpg: encrypted with RSA key, ID <key_name> [ 2.870347] coreos-secex-ignition-decrypt[738]: gpg: public key decryption failed: No secret key [ 2.870371] coreos-secex-ignition-decrypt[738]: gpg: decryption failed: No secret key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.6.1.2. 在 IBM Z 或 IBM LinuxONE 环境中通过 CEX 进行 LUKS 加密 复制链接链接已复制到粘贴板!
在 IBM Z® 或 IBM® LinuxONE 环境中通过 IBM® Crypto Express (CEX)启用基于硬件的 Linux 统一密钥设置(LUKS)加密需要额外的步骤,本节中详细介绍。
先决条件
-
您已安装了 with
ane
实用程序。 - 您已查看如何使用 Butane 创建机器配置的说明。
流程
为 control plane 和计算节点创建 Butane 配置文件:
通过对带有磁盘加密的 control plane 节点使用以下 Butane 配置来创建名为
main-storage.bu
的文件,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建包含
ignition.platform.id=metal
和ignition.firstboot
的参数文件。control plane 机器的内核参数文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意将参数文件中的所有选项写为一行,并确保您没有换行字符。
2.5.6.1.3. 在 IBM Z 或 IBM LinuxONE 环境中使用静态 IP 配置 NBDE 复制链接链接已复制到粘贴板!
在 IBM Z® 或 IBM® LinuxONE 环境中启用 NBDE 磁盘加密需要额外的步骤,本节中详细介绍。
先决条件
- 您已设置了外部 Tang 服务器。具体步骤请查看 网络绑定磁盘加密。
-
您已安装了 with
ane
实用程序。 - 您已查看如何使用 Butane 创建机器配置的说明。
流程
为 control plane 和计算节点创建 Butane 配置文件。
以下 control plane 节点的 Butane 配置示例为磁盘加密创建一个名为
master-storage.bu
的文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。
运行以下命令,创建自定义 initramfs 文件来引导机器:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意首次引导前,您必须为集群中的每个节点自定义 initramfs,并添加 PXE 内核参数。
创建包含
ignition.platform.id=metal
和ignition.firstboot
的参数文件。control plane 机器的内核参数文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意将参数文件中的所有选项写为一行,并确保您没有换行字符。
2.5.6.2. 使用预打包的 QCOW2 磁盘镜像快速跟踪安装 复制链接链接已复制到粘贴板!
完成以下步骤,在 Red Hat Enterprise Linux CoreOS(RHCOS)快速跟踪安装中创建机器,导入预打包的 Red Hat Enterprise Linux CoreOS(RHCOS)QEMU 写时复制(QCOW2)磁盘镜像。
先决条件
- 至少有一个 LPAR 在 KVM 的 RHEL 8.6 或更高版本中运行,在此过程中称为 RHEL KVM 主机。
- KVM/QEMU 管理程序安装在 RHEL KVM 主机上。
- 一个域名服务器(DNS),它可以对节点执行主机名和反向查找。
- 提供 IP 地址的 DHCP 服务器。
流程
从红帽客户门户网站的产品下载页或 RHCOS image mirror 页获得 RHEL QEMU copy-on-write (QCOW2) 磁盘镜像。
重要RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。仅使用以下流程中描述的适当 RHCOS QCOW2 镜像。
将 QCOW2 磁盘镜像和 Ignition 文件下载到 RHEL KVM 主机上的通用目录中。
例如:
/var/lib/libvirt/images
注意Ignition 文件由 OpenShift Container Platform 安装程序生成。
为每个 KVM 客户机节点使用 QCOW2 磁盘镜像文件创建新磁盘镜像。
qemu-img create -f qcow2 -F qcow2 -b /var/lib/libvirt/images/{source_rhcos_qemu} /var/lib/libvirt/images/{vmname}.qcow2 {size}
$ qemu-img create -f qcow2 -F qcow2 -b /var/lib/libvirt/images/{source_rhcos_qemu} /var/lib/libvirt/images/{vmname}.qcow2 {size}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Ignition 文件和新磁盘镜像创建新的 KVM 客户机节点。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.6.3. 在新 QCOW2 磁盘镜像上完全安装 复制链接链接已复制到粘贴板!
完成以下步骤,在新的 QEMU 写时复制(QCOW2)磁盘镜像上在完整安装中创建机器。
先决条件
- 至少有一个 LPAR 在 KVM 的 RHEL 8.6 或更高版本中运行,在此过程中称为 RHEL KVM 主机。
- KVM/QEMU 管理程序安装在 RHEL KVM 主机上。
- 一个域名服务器(DNS),它可以对节点执行主机名和反向查找。
- 设置了 HTTP 或 HTTPS 服务器。
流程
从红帽客户门户网站的产品下载页或 RHCOS image mirror 页获取 RHEL kernel, initramfs, 和 rootfs 文件。
重要RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。仅使用以下流程中描述的适当 RHCOS QCOW2 镜像。
文件名包含 OpenShift Container Platform 版本号。它们类似以下示例:
-
kernel:
rhcos-<version>-live-kernel-<architecture>
-
initramfs:
rhcos-<version>-live-initramfs.<architecture>.img
-
rootfs:
rhcos-<version>-live-rootfs.<architecture>.img
-
kernel:
在启动
virt-install
前,将下载的 RHEL live kernel、initramfs 和 rootfs 以及 Ignition 文件移到 HTTP 或 HTTPS 服务器中。注意Ignition 文件由 OpenShift Container Platform 安装程序生成。
使用 RHEL 内核、initramfs 和 Ignition 文件、新磁盘镜像并调整 parm 行参数,创建新的 KVM 客户机节点。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.6.4. 高级 RHCOS 安装参考 复制链接链接已复制到粘贴板!
本节演示了网络配置和其他高级选项,允许您修改 Red Hat Enterprise Linux CoreOS(RHCOS)手动安装过程。下表描述了您可以用于 RHCOS live 安装程序和 coreos-installer
命令的内核参数和命令行选项。
2.5.6.4.1. ISO 安装的网络选项 复制链接链接已复制到粘贴板!
如果从 ISO 镜像安装 RHCOS,您可以在引导镜像时手动添加内核参数,以便为节点配置网络。如果没有指定网络参数,当 RHCOS 检测到需要网络来获取 Ignition 配置文件时,在 initramfs 中激活 DHCP。
在手动添加网络参数时,还必须添加 rd.neednet=1
内核参数,以便在 initramfs 中启动网络。
以下信息提供了在 RHCOS 节点上为 ISO 安装配置网络的示例。示例描述了如何使用 ip=
和 nameserver=
内核参数。
在添加内核参数时,顺序非常重要:ip=
和 nameserver=
。
网络选项在系统引导过程中传递给 dracut
工具。有关由 dracut
支持的网络选项的更多信息,请参阅 dracut.cmdline
手册页。
以下示例是 ISO 安装的网络选项。
配置 DHCP 或静态 IP 地址
要配置 IP 地址,可使用 DHCP(ip=dhcp
)或设置单独的静态 IP 地址(ip=<host_ip>
)。如果设置静态 IP,则必须在每个节点上识别 DNS 服务器 IP 地址(名称服务器=<dns_ip>
)。以下示例集:
-
节点的 IP 地址为
10.10.10.2
-
网关地址为
10.10.10.254
-
子网掩码为
255.255.255.0
-
到
core0.example.com
的主机名 -
DNS 服务器地址为
4.4.4.41
-
自动配置值为
none
。当以静态方式配置 IP 网络时,不需要自动配置。
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none nameserver=4.4.4.41
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none
nameserver=4.4.4.41
当您使用 DHCP 为 RHCOS 机器配置 IP 寻址时,机器还通过 DHCP 获取 DNS 服务器信息。对于基于 DHCP 的部署,您可以通过 DHCP 服务器配置定义 RHCOS 节点使用的 DNS 服务器地址。
配置没有静态主机名的 IP 地址
您可以在不分配静态主机名的情况下配置 IP 地址。如果用户没有设置静态主机名,则会提取并通过反向 DNS 查找自动设置。要在没有静态主机名的情况下配置 IP 地址,请参考以下示例:
-
节点的 IP 地址为
10.10.10.2
-
网关地址为
10.10.10.254
-
子网掩码为
255.255.255.0
-
DNS 服务器地址为
4.4.4.41
-
自动配置值为
none
。当以静态方式配置 IP 网络时,不需要自动配置。
ip=10.10.10.2::10.10.10.254:255.255.255.0::enp1s0:none nameserver=4.4.4.41
ip=10.10.10.2::10.10.10.254:255.255.255.0::enp1s0:none
nameserver=4.4.4.41
指定多个网络接口
您可以通过设置多个 ip=
条目来指定多个网络接口。
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none ip=10.10.10.3::10.10.10.254:255.255.255.0:core0.example.com:enp2s0:none
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none
ip=10.10.10.3::10.10.10.254:255.255.255.0:core0.example.com:enp2s0:none
配置默认网关和路由
可选:您可以通过设置 a rd.route=
值来配置到额外网络的路由。
当您配置一个或多个网络时,需要一个默认网关。如果额外网络网关与主要网络网关不同,则默认网关必须是主要网络网关。
运行以下命令来配置默认网关:
ip=::10.10.10.254::::
ip=::10.10.10.254::::
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令为额外网络配置路由:
rd.route=20.20.20.0/24:20.20.20.254:enp2s0
rd.route=20.20.20.0/24:20.20.20.254:enp2s0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在单个接口中禁用 DHCP
您可以在单一接口中禁用 DHCP,例如当有两个或者多个网络接口时,且只有一个接口被使用。在示例中,enp1s0
接口具有一个静态网络配置,而 enp2s0
禁用了 DHCP,不使用它:
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none ip=::::core0.example.com:enp2s0:none
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none
ip=::::core0.example.com:enp2s0:none
合并 DHCP 和静态 IP 配置
您可以将系统上的 DHCP 和静态 IP 配置与多个网络接口合并,例如:
ip=enp1s0:dhcp ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp2s0:none
ip=enp1s0:dhcp
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp2s0:none
在独立接口上配置 VLAN
可选: 您可以使用 vlan=
参数在单个接口上配置 VLAN。
要在网络接口中配置 VLAN 并使用静态 IP 地址,请运行以下命令:
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp2s0.100:none vlan=enp2s0.100:enp2s0
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp2s0.100:none vlan=enp2s0.100:enp2s0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在网络接口中配置 VLAN 并使用 DHCP,请运行以下命令:
ip=enp2s0.100:dhcp vlan=enp2s0.100:enp2s0
ip=enp2s0.100:dhcp vlan=enp2s0.100:enp2s0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
提供多个 DNS 服务器
您可以通过为每个服务器添加一个 nameserver=
条目来提供多个 DNS 服务器,例如
nameserver=1.1.1.1 nameserver=8.8.8.8
nameserver=1.1.1.1
nameserver=8.8.8.8
2.5.7. 等待 bootstrap 过程完成 复制链接链接已复制到粘贴板!
OpenShift Container Platform bootstrap 过程在集群节点首次引导到安装到磁盘的持久 RHCOS 环境后开始。通过 Ignition 配置文件提供的配置信息用于初始化 bootstrap 过程并在机器上安装 OpenShift Container Platform。您必须等待 bootstrap 过程完成。
先决条件
- 已为集群创建 Ignition 配置文件。
- 您已配置了适当的网络、DNS 和负载平衡基础架构。
- 已获得安装程序,并为集群生成 Ignition 配置文件。
- 已在集群机器上安装 RHCOS,并提供 OpenShift Container Platform 安装程序生成的 Ignition 配置文件。
- 您的机器可以直接访问互联网,或者有 HTTP 或 HTTPS 代理可用。
流程
监控 bootstrap 过程:
./openshift-install --dir <installation_directory> wait-for bootstrap-complete \ --log-level=info
$ ./openshift-install --dir <installation_directory> wait-for bootstrap-complete \
1 --log-level=info
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
INFO Waiting up to 30m0s for the Kubernetes API at https://api.test.example.com:6443... INFO API v1.32.3 up INFO Waiting up to 30m0s for bootstrapping to complete... INFO It is now safe to remove the bootstrap resources
INFO Waiting up to 30m0s for the Kubernetes API at https://api.test.example.com:6443... INFO API v1.32.3 up INFO Waiting up to 30m0s for bootstrapping to complete... INFO It is now safe to remove the bootstrap resources
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当 Kubernetes API 服务器提示已在 control plane 机器上引导它时,该命令会成功。
bootstrap 过程完成后,从负载均衡器中删除 bootstrap 机器。
重要此时您必须从负载均衡器中删除 bootstrap 机器。您还可以删除或重新格式化 bootstrap 机器本身。
2.5.8. 使用 CLI 登录集群 复制链接链接已复制到粘贴板!
您可以通过导出集群 kubeconfig
文件,以默认系统用户身份登录集群。kubeconfig
文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。
先决条件
- 已部署 OpenShift Container Platform 集群。
-
已安装 OpenShift CLI(
oc
)。
流程
运行以下命令来导出
kubeadmin
凭证:export KUBECONFIG=<installation_directory>/auth/kubeconfig
$ export KUBECONFIG=<installation_directory>/auth/kubeconfig
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
运行以下命令,使用导出的配置成功运行
oc
命令:oc whoami
$ oc whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
system:admin
system:admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.9. 批准机器的证书签名请求 复制链接链接已复制到粘贴板!
当您将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(CSR)。您必须确认这些 CSR 已获得批准,或根据需要自行批准。必须首先批准客户端请求,然后批准服务器请求。
先决条件
- 您已将机器添加到集群中。
流程
确认集群可以识别这些机器:
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.32.3 master-1 Ready master 63m v1.32.3 master-2 Ready master 64m v1.32.3
NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.32.3 master-1 Ready master 63m v1.32.3 master-2 Ready master 64m v1.32.3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出中列出了您创建的所有机器。
注意在有些 CSR 被批准前,前面的输出可能不包括计算节点(也称为 worker 节点)。
检查待处理的 CSR,并确保添加到集群中的每台机器都有
Pending
或Approved
状态的客户端请求:oc get csr
$ oc get csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME AGE REQUESTOR CONDITION csr-mddf5 20m system:node:master-01.example.com Approved,Issued csr-z5rln 16m system:node:worker-21.example.com Approved,Issued
NAME AGE REQUESTOR CONDITION csr-mddf5 20m system:node:master-01.example.com Approved,Issued csr-z5rln 16m system:node:worker-21.example.com Approved,Issued
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 CSR 没有获得批准,在您添加的机器的所有待处理 CSR 都处于
Pending 状态
后,请批准集群机器的 CSR:注意由于 CSR 会自动轮转,因此请在将机器添加到集群后一小时内批准您的 CSR。如果没有在一小时内批准它们,证书将会轮转,每个节点会存在多个证书。您必须批准所有这些证书。批准客户端 CSR 后,Kubelet 为服务证书创建一个二级 CSR,这需要手动批准。然后,如果 Kubelet 请求具有相同参数的新证书,则后续提供证书续订请求由
machine-approver
自动批准。注意对于在未启用机器 API 的平台上运行的集群,如裸机和其他用户置备的基础架构,您必须实施一种方法来自动批准 kubelet 提供证书请求(CSR)。如果没有批准请求,则
oc exec
、ocrsh
和oc logs
命令将无法成功,因为 API 服务器连接到 kubelet 时需要服务证书。与 Kubelet 端点联系的任何操作都需要此证书批准。该方法必须监视新的 CSR,确认 CSR 由 system:node
或system:admin
组中的node-bootstrapper
服务帐户提交,并确认节点的身份。要单独批准,请对每个有效的 CSR 运行以下命令:
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<csr_name>
是当前 CSR 列表中 CSR 的名称。
要批准所有待处理的 CSR,请运行以下命令:
oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve
$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在有些 CSR 被批准前,一些 Operator 可能无法使用。
现在,您的客户端请求已被批准,您必须查看添加到集群中的每台机器的服务器请求:
oc get csr
$ oc get csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME AGE REQUESTOR CONDITION csr-bfd72 5m26s system:node:ip-10-0-50-126.us-east-2.compute.internal Pending csr-c57lv 5m26s system:node:ip-10-0-95-157.us-east-2.compute.internal Pending ...
NAME AGE REQUESTOR CONDITION csr-bfd72 5m26s system:node:ip-10-0-50-126.us-east-2.compute.internal Pending csr-c57lv 5m26s system:node:ip-10-0-95-157.us-east-2.compute.internal Pending ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果剩余的 CSR 没有被批准,且处于
Pending
状态,请批准集群机器的 CSR:要单独批准,请对每个有效的 CSR 运行以下命令:
oc adm certificate approve <csr_name>
$ oc adm certificate approve <csr_name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<csr_name>
是当前 CSR 列表中 CSR 的名称。
要批准所有待处理的 CSR,请运行以下命令:
oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
批准所有客户端和服务器 CSR 后,机器将
处于 Ready 状态
。运行以下命令验证:oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意批准服务器 CSR 后可能需要几分钟时间让机器过渡到
Ready 状态
。
其他信息
2.5.10. 初始 Operator 配置 复制链接链接已复制到粘贴板!
在 control plane 初始化后,您必须立即配置一些 Operator,以便它们都可用。
先决条件
- 您的 control plane 已初始化。
流程
观察集群组件上线:
watch -n5 oc get clusteroperators
$ watch -n5 oc get clusteroperators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 配置不可用的 Operator。
2.5.10.1. 镜像 registry 存储配置 复制链接链接已复制到粘贴板!
对于不提供默认存储的平台,Image Registry Operator 最初不可用。安装后,您必须将 registry 配置为使用存储,以便 Registry Operator 可用。
显示配置生产集群所需的持久性卷的说明。如果适用,显示有关将空目录配置为存储位置的说明,这仅适用于非生产集群。
提供了在升级过程中使用 Recreate
rollout 策略来允许镜像 registry 使用块存储类型的说明。
2.5.10.1.1. 为 IBM Z 配置 registry 存储 复制链接链接已复制到粘贴板!
作为集群管理员,在安装后需要配置 registry 来使用存储。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 - 在 IBM Z® 上有一个集群。
您已为集群置备持久性存储,如 Red Hat OpenShift Data Foundation。
重要当您只有一个副本时,OpenShift Container Platform 支持对镜像 registry 存储的
ReadWriteOnce
访问。ReadWriteOnce
访问还要求 registry 使用Recreate
rollout 策略。要部署支持高可用性的镜像 registry,需要两个或多个副本,ReadWriteMany
访问。- 必须具有 100Gi 容量。
流程
要将 registry 配置为使用存储,修改
configs.imageregistry/cluster
资源中的spec.storage.pvc
。注意使用共享存储时,请查看您的安全设置以防止外部访问。
验证您没有 registry pod:
oc get pod -n openshift-image-registry -l docker-registry=default
$ oc get pod -n openshift-image-registry -l docker-registry=default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
No resources found in openshift-image-registry namespace
No resources found in openshift-image-registry namespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您的输出中有一个 registry pod,则不需要继续这个过程。
检查 registry 配置:
oc edit configs.imageregistry.operator.openshift.io
$ oc edit configs.imageregistry.operator.openshift.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
storage: pvc: claim:
storage: pvc: claim:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
claim
字段留空以允许自动创建image-registry-storage
PVC。检查
clusteroperator
状态:oc get clusteroperator image-registry
$ oc get clusteroperator image-registry
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE image-registry 4.19 True False False 6h50m
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE image-registry 4.19 True False False 6h50m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 registry 设置为 managed,以启用镜像的构建和推送。
运行:
oc edit configs.imageregistry/cluster
$ oc edit configs.imageregistry/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,更改行
managementState: Removed
managementState: Removed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 至
managementState: Managed
managementState: Managed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.10.1.2. 在非生产集群中为镜像 registry 配置存储 复制链接链接已复制到粘贴板!
您必须为 Image Registry Operator 配置存储。对于非生产集群,您可以将镜像 registry 设置为空目录。如果您这样做,重启 registry 时会丢失所有镜像。
流程
将镜像 registry 存储设置为空目录:
oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"storage":{"emptyDir":{}}}}'
$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"storage":{"emptyDir":{}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告仅为非生产集群配置这个选项。
如果在 Image Registry Operator 初始化其组件前运行这个命令,
oc patch
命令会失败并显示以下错误:Error from server (NotFound): configs.imageregistry.operator.openshift.io "cluster" not found
Error from server (NotFound): configs.imageregistry.operator.openshift.io "cluster" not found
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待几分钟,然后再次运行 命令。
2.5.11. 在用户置备的基础架构上完成安装 复制链接链接已复制到粘贴板!
完成 Operator 配置后,可以在您提供的基础架构上完成集群安装。
先决条件
- 您的 control plane 已初始化。
- 已完成初始 Operator 配置。
流程
使用以下命令确认所有集群组件都在线:
watch -n5 oc get clusteroperators
$ watch -n5 oc get clusteroperators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,当所有集群都可用时,以下命令会通知您。它还检索并显示凭证:
./openshift-install --dir <installation_directory> wait-for install-complete
$ ./openshift-install --dir <installation_directory> wait-for install-complete
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
输出示例
INFO Waiting up to 30m0s for the cluster to initialize...
INFO Waiting up to 30m0s for the cluster to initialize...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cluster Version Operator 完成从 Kubernetes API 服务器部署 OpenShift Container Platform 集群时,该命令会成功。
重要-
安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
确认 Kubernetes API 服务器正在与 pod 通信。
要查看所有 pod 的列表,请使用以下命令:
oc get pods --all-namespaces
$ oc get pods --all-namespaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令,查看上一命令的输出中所列 pod 的日志:
oc logs <pod_name> -n <namespace>
$ oc logs <pod_name> -n <namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 pod 名称和命名空间,如上一命令的输出中所示。
如果 pod 日志显示,Kubernetes API 服务器可以与集群机器通信。
对于使用光纤通道协议(FCP)的安装,还需要额外的步骤才能启用多路径。不要在安装过程中启用多路径。
如需更多信息,请参阅 安装后机器配置任务 文档中的"使用 RHCOS 上使用内核参数启用多路径"。
2.5.12. OpenShift Container Platform 的 Telemetry 访问 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 4.19 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。