2.5. 在 IBM Z 和 IBM LinuxONE 中使用 RHEL KVM 安装集群


在 OpenShift Container Platform 版本 4.19 中,您可以在您置备的 IBM Z® 或 IBM® LinuxONE 系统上安装集群。

注意

虽然本文档只涉及 IBM Z®,但它的所有信息也适用于 IBM® LinuxONE。

2.5.1. 先决条件

2.5.2. 准备用户置备的基础架构

在用户置备的基础架构上安装 OpenShift Container Platform 之前,您必须准备底层基础架构。

本节详细介绍了设置集群基础架构以准备 OpenShift Container Platform 安装所需的高级别步骤。这包括为您的集群节点配置 IP 网络和网络连接,通过防火墙启用所需的端口,以及设置所需的 DNS 和负载均衡基础架构。

准备后,集群基础架构必须满足 带有用户置备的基础架构部分的集群要求

先决条件

流程

  1. 如果您使用 DHCP 向集群节点提供 IP 网络配置,请配置 DHCP 服务。

    1. 将节点的持久 IP 地址添加到您的 DHCP 服务器配置。在您的配置中,将相关网络接口的 MAC 地址与每个节点的预期 IP 地址匹配。
    2. 当您使用 DHCP 为集群机器配置 IP 寻址时,机器还通过 DHCP 获取 DNS 服务器信息。定义集群节点通过 DHCP 服务器配置使用的持久性 DNS 服务器地址。

      注意

      如果没有使用 DHCP 服务,则必须在 RHCOS 安装时为节点提供 IP 网络配置和 DNS 服务器地址。如果要从 ISO 镜像安装,这些参数可作为引导参数传递。如需有关静态 IP 置备和高级网络选项的更多信息,请参阅 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程 部分。

    3. 在 DHCP 服务器配置中定义集群节点的主机名。有关 主机名注意事项的详情,请参阅通过 DHCP 设置集群节点 主机名部分。

      注意

      如果没有使用 DHCP 服务,集群节点可以通过反向 DNS 查找来获取其主机名。

  2. 选择执行 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)机器"部分。
  3. 确保您的网络基础架构提供集群组件之间所需的网络连接。有关 要求的详情,请参阅用户置备的基础架构 的网络要求部分。
  4. 将防火墙配置为启用 OpenShift Container Platform 集群组件进行通信所需的端口。如需有关所需端口的详细信息,请参阅用户置备的基础架构 部分的网络要求。

    重要

    默认情况下,OpenShift Container Platform 集群可以访问端口 1936,因为每个 control plane 节点都需要访问此端口。

    避免使用 Ingress 负载均衡器公开此端口,因为这样做可能会导致公开敏感信息,如统计信息和指标(与 Ingress Controller 相关的统计信息和指标)。

  5. 为集群设置所需的 DNS 基础架构。

    1. 为 Kubernetes API、应用程序通配符、bootstrap 机器、control plane 机器和计算机器配置 DNS 名称解析。
    2. 为 Kubernetes API、bootstrap 机器、control plane 机器和计算机器配置反向 DNS 解析。

      如需有关 OpenShift Container Platform DNS 要求的更多信息,请参阅用户置备 DNS 要求部分。

  6. 验证您的 DNS 配置。

    1. 从安装节点,针对 Kubernetes API 的记录名称、通配符路由和集群节点运行 DNS 查找。验证响应中的 IP 地址是否与正确的组件对应。
    2. 从安装节点,针对负载均衡器和集群节点的 IP 地址运行反向 DNS 查找。验证响应中的记录名称是否与正确的组件对应。

      有关详细的 DNS 验证步骤,请参阅用户置备的基础架构 验证 DNS 解析部分。

  7. 置备所需的 API 和应用程序入口负载平衡基础架构。有关 要求的更多信息,请参阅用户置备的基础架构的负载平衡 要求部分。
注意

某些负载平衡解决方案要求在初始化负载平衡之前,对群集节点进行 DNS 名称解析。

2.5.3. 手动创建安装配置文件

安装集群要求您手动创建安装配置文件。

先决条件

  • 在本地机器上有一个 SSH 公钥用于安装程序。您可以使用密钥在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
  • 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。

流程

  1. 创建一个安装目录来存储所需的安装资产:

    $ mkdir <installation_directory>
    Copy to Clipboard Toggle word wrap
    重要

    您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。

  2. 对提供的 install-config.yaml 文件模板示例进行自定义,并将文件保存到 <installation_directory> 中。

    注意

    此配置文件必须命名为 install-config.yaml

  3. 备份 install-config.yaml 文件,以便使用它来安装多个集群。

    重要

    现在备份 install-config.yaml 文件,因为安装过程会在下一步中消耗该文件。

2.5.3.1. IBM Z 的 install-config.yaml 文件示例

您可以自定义 install-config.yaml 文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。

apiVersion: v1
baseDomain: example.com 
1

compute: 
2

- hyperthreading: Enabled 
3

  name: worker
  replicas: 0 
4

  architecture: s390x
controlPlane: 
5

  hyperthreading: Enabled 
6

  name: master
  replicas: 3 
7

  architecture: s390x
metadata:
  name: test 
8

networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14 
9

    hostPrefix: 23 
10

  networkType: OVNKubernetes 
11

  serviceNetwork: 
12

  - 172.30.0.0/16
platform:
  none: {} 
13

fips: false 
14

pullSecret: '{"auths": ...}' 
15

sshKey: 'ssh-ed25519 AAAA...' 
16
Copy to Clipboard Toggle word wrap
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,则每个节点从 given cidr 中分配 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[].cidrnetworking.clusterNetwork[].cidrnetworking.serviceNetwork[] 字段的值填充。

    对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,Proxy 对象 status.noProxy 字段也会使用实例元数据端点填充(169.254.169.254)。

流程

  1. 编辑 install-config.yaml 文件并添加代理设置。例如:

    apiVersion: v1
    baseDomain: my.domain.com
    proxy:
      httpProxy: http://<username>:<pswd>@<ip>:<port> 
    1
    
      httpsProxy: https://<username>:<pswd>@<ip>:<port> 
    2
    
      noProxy: example.com 
    3
    
    additionalTrustBundle: | 
    4
    
        -----BEGIN CERTIFICATE-----
        <MY_TRUSTED_CA_CERT>
        -----END CERTIFICATE-----
    additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> 
    5
    Copy to Clipboard Toggle word wrap
    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 配置映射的策略。允许的值是 ProxyonlyAlways。仅在配置了 http/https 代理时,使用 Proxyonly 引用 user-ca-bundle 配置映射。使用 Always 始终引用 user-ca-bundle 配置映射。默认值为 Proxyonly
    注意

    安装程序不支持代理的 readinessEndpoints 字段。

    注意

    如果安装程序超时,重启并使用安装程序的 wait-for 命令完成部署。例如:

    $ ./openshift-install wait-for install-complete --log-level debug
    Copy to Clipboard Toggle word wrap
  2. 保存该文件并在安装 OpenShift Container Platform 时引用。

安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec

注意

只支持名为 clusterProxy 对象,且无法创建额外的代理。

2.5.3.3. 配置三节点集群

另外,您可以在由三台 control plane 机器组成的最少三个节点集群中部署零台计算机器。这为集群管理员和开发人员提供了更小、效率更高的集群,用于测试、开发和生产。

在三节点 OpenShift Container Platform 环境中,三台 control plane 机器可以调度,这意味着应用程序工作负载被调度到它们上运行。

先决条件

  • 您有一个现有的 install-config.yaml 文件。

流程

  • 确保 install-config.yaml 文件中的计算副本数量设置为 0,如以下 计算 小节所示:

    compute:
    - name: worker
      platform: {}
      replicas: 0
    Copy to Clipboard Toggle word wrap
    注意

    在用户置备的基础架构上安装 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)的字段:

Expand
表 2.34. Cluster Network Operator 配置对象
字段类型描述

metadata.name

字符串

CNO 对象的名称。这个名称始终是 集群

spec.clusterNetwork

array

用于指定从哪些 IP 地址块分配 Pod IP 地址以及集群中每个节点的子网前缀长度的列表。例如:

spec:
  clusterNetwork:
  - cidr: 10.128.0.0/19
    hostPrefix: 23
  - cidr: 10.128.32.0/19
    hostPrefix: 23
Copy to Clipboard Toggle word wrap

spec.serviceNetwork

array

服务的 IP 地址块。OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。例如:

spec:
  serviceNetwork:
  - 172.30.0.0/14
Copy to Clipboard Toggle word wrap

您只能在创建清单前在 install-config.yaml 文件中自定义此字段。该值在清单文件中是只读的。

spec.defaultNetwork

object

为集群网络配置网络插件。

spec.kubeProxyConfig

object

此对象的字段指定 kube-proxy 配置。如果使用 OVN-Kubernetes 集群网络供应商,则 kube-proxy 配置不会起作用。

重要

对于需要在多个网络间部署对象的集群,请确保为 install-config.yaml 文件中定义的每种网络类型指定与 clusterNetwork.hostPrefix 参数相同的值。为每个 clusterNetwork.hostPrefix 参数设置不同的值可能会影响 OVN-Kubernetes 网络插件,其中插件无法有效地在不同节点间路由对象流量。

defaultNetwork 对象配置

下表列出了 defaultNetwork 对象的值:

Expand
表 2.35. defaultNetwork 对象
字段类型描述

type

字符串

OVNKubernetes。Red Hat OpenShift Networking 网络插件在安装过程中被选择。此值在集群安装后无法更改。

注意

OpenShift Container Platform 默认使用 OVN-Kubernetes 网络插件。

ovnKubernetesConfig

object

此对象仅对 OVN-Kubernetes 网络插件有效。

配置 OVN-Kubernetes 网络插件

下表描述了 OVN-Kubernetes 网络插件的配置字段:

Expand
表 2.36. ovnKubernetesConfig object
字段类型描述

mtu

integer

Geneve(通用网络虚拟化封装)覆盖网络的最大传输单元(MTU)。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。

如果自动探测的值不是您期望的值,请确认节点上主网络接口上的 MTU 是否正确。您不能使用这个选项更改节点上主网络接口的 MTU 值。

如果集群中不同节点需要不同的 MTU 值,则必须将此值设置为 集群中的最低 MTU 值小 100。例如,如果集群中的某些节点的 MTU 为 9001,而某些节点的 MTU 为 1500,则必须将此值设置为 1400

genevePort

integer

用于所有 Geneve 数据包的端口。默认值为 6081。此值在集群安装后无法更改。

ipsecConfig

object

指定用于自定义 IPsec 配置的配置对象。

ipv4

object

为 IPv4 设置指定配置对象。

ipv6

object

为 IPv6 设置指定配置对象。

policyAuditConfig

object

指定用于自定义网络策略审计日志的配置对象。如果未设置,则使用默认的审计日志设置。

gatewayConfig

object

可选:指定一个配置对象来自定义如何将出口流量发送到节点网关。有效值为 SharedLocal。默认值为 Shared。在默认设置中,Open vSwitch (OVS) 将流量直接输出到节点 IP 接口。在 Local 设置中,它会遍历主机网络;因此,它会应用到主机的路由表。

注意

在迁移出口流量时,工作负载和服务流量会受到一定影响,直到 Cluster Network Operator (CNO) 成功推出更改。

Expand
表 2.37. ovnKubernetesConfig.ipv4 object
字段类型描述

internalTransitSwitchSubnet

字符串

如果您的现有网络基础架构与 100.88.0.0/16 IPv4 子网重叠,您可以指定不同的 IP 地址范围供 OVN-Kubernetes 使用。启用东西流量的分布式传输交换机的子网。此子网不能与 OVN-Kubernetes 或主机本身使用的任何其他子网重叠。必须足够大,以适应集群中的每个节点一个 IP 地址。

默认值为 100.88.0.0/16

internalJoinSubnet

字符串

如果您的现有网络基础架构与 100.64.0.0/16 IPv4 子网重叠,您可以指定不同的 IP 地址范围供 OVN-Kubernetes 使用。您必须确保 IP 地址范围没有与 OpenShift Container Platform 安装使用的任何其他子网重叠。IP 地址范围必须大于可添加到集群的最大节点数。例如,如果 clusterNetwork.cidr 值为 10.128.0.0/14,并且 clusterNetwork.hostPrefix 值为 /23,则最大节点数量为 2^(23-14)=512

默认值为 100.64.0.0/16

Expand
表 2.38. ovnKubernetesConfig.ipv6 object
字段类型描述

internalTransitSwitchSubnet

字符串

如果您的现有网络基础架构与 fd97::/64 IPv6 子网重叠,您可以指定不同的 IP 地址范围供 OVN-Kubernetes 使用。启用东西流量的分布式传输交换机的子网。此子网不能与 OVN-Kubernetes 或主机本身使用的任何其他子网重叠。必须足够大,以适应集群中的每个节点一个 IP 地址。

默认值为 fd97::/64

internalJoinSubnet

字符串

如果您的现有网络基础架构与 fd98::/64 IPv6 子网重叠,您可以指定不同的 IP 地址范围供 OVN-Kubernetes 使用。您必须确保 IP 地址范围没有与 OpenShift Container Platform 安装使用的任何其他子网重叠。IP 地址范围必须大于可添加到集群的最大节点数。

默认值为 fd98::/64

Expand
表 2.39. policyAuditConfig object
字段类型描述

rateLimit

整数

每个节点每秒生成一次的消息数量上限。默认值为每秒 20 条消息。

maxFileSize

整数

审计日志的最大大小,以字节为单位。默认值为 50000000 或 50 MB。

maxLogFiles

整数

保留的日志文件的最大数量。

目的地

字符串

以下附加审计日志目标之一:

libc
主机上的 journald 进程的 libc syslog() 函数。
UDP:<host>:<port>
一个 syslog 服务器。将 <host>:<port> 替换为 syslog 服务器的主机 和端口。
Unix:<file>
<file> 指定的 Unix 域套接字文件。
null
不要将审计日志发送到任何其他目标。

syslogFacility

字符串

syslog 工具,如 as kern,如 RFC5424 定义。默认值为 local0。

Expand
表 2.40. gatewayConfig object
字段类型描述

routingViaHost

布尔值

将此字段设置为 true,将来自 pod 的出口流量发送到主机网络堆栈。对于依赖于在内核路由表中手动配置路由的高级别安装和应用程序,您可能需要将出口流量路由到主机网络堆栈。默认情况下,出口流量在 OVN 中进行处理以退出集群,不受内核路由表中的特殊路由的影响。默认值为 false

此字段与 Open vSwitch 硬件卸载功能有交互。如果将此字段设置为 true,则不会获得卸载的性能优势,因为主机网络堆栈会处理出口流量。

ipForwarding

object

您可以使用 Network 资源中的 ipForwarding 规格来控制 OVN-Kubernetes 管理接口上所有流量的 IP 转发。指定 Restricted 只允许 Kubernetes 相关流量的 IP 转发。指定 Global 以允许转发所有 IP 流量。对于新安装,默认值为 Restricted。对于到 OpenShift Container Platform 4.14 或更高版本的更新,默认值为 Global

注意

Restricted 的默认值将 IP 转发设置为 drop。

ipv4

object

可选:指定一个对象来为主机配置内部 OVN-Kubernetes 伪装地址,以服务 IPv4 地址的流量。

ipv6

object

可选:指定一个对象来为主机配置内部 OVN-Kubernetes 伪装地址,以服务 IPv6 地址的流量。

Expand
表 2.41. gatewayConfig.ipv4 对象
字段类型描述

internalMasqueradeSubnet

字符串

内部使用的伪装 IPv4 地址,以启用主机服务流量。主机配置了这些 IP 地址和共享网关网桥接口。默认值为 169.254.169.0/29

重要

对于 OpenShift Container Platform 4.17 及更新的版本,集群使用 169.254.0.0/17 作为默认的 masquerade 子网。对于升级的集群,默认 masquerade 子网没有变化。

Expand
表 2.42. gatewayConfig.ipv6 对象
字段类型描述

internalMasqueradeSubnet

字符串

内部使用的伪装 IPv6 地址,以启用主机服务流量。主机配置了这些 IP 地址和共享网关网桥接口。默认值为 fd69::/125

重要

对于 OpenShift Container Platform 4.17 及更新的版本,集群使用 fd69::/112 作为默认的 masquerade 子网。对于升级的集群,默认 masquerade 子网没有变化。

Expand
表 2.43. ipsecConfig 对象
字段类型描述

模式

字符串

指定 IPsec 实现的行为。必须是以下值之一:

  • Disabled: 在集群节点上不启用 IPsec。
  • External :对于带有外部主机的网络流量,启用 IPsec。
  • Full: IPsec 为带有外部主机的 pod 流量和网络流量启用 IPsec。

启用 IPSec 的 OVN-Kubernetes 配置示例

defaultNetwork:
  type: OVNKubernetes
  ovnKubernetesConfig:
    mtu: 1400
    genevePort: 6081
    ipsecConfig:
      mode: Full
Copy to Clipboard Toggle word wrap

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 安装配置文件。

流程

  1. 进入包含 OpenShift Container Platform 安装程序的目录,并为集群生成 Kubernetes 清单:

    $ ./openshift-install create manifests --dir <installation_directory> 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定包含您创建的 install-config.yaml 文件的安装目录。
    警告

    如果您要安装一个三节点集群,请跳过以下步骤,以便可以调度 control plane 节点。

    重要

    当您将 control plane 节点从默认的不可调度配置为可以调度时,需要额外的订阅。这是因为 control plane 节点变为计算节点。

  2. 检查 <installation_directory>/manifests/cluster-scheduler-02-config.yml Kubernetes 清单文件中的 mastersSchedulable 参数是否已设置为 false。此设置可防止在 control plane 机器上调度 pod:

    1. 打开 <installation_directory>/manifests/cluster-scheduler-02-config.yml 文件。
    2. 找到 mastersSchedulable 参数,并确保它被设置为 false
    3. 保存并退出 文件。
  3. 要创建 Ignition 配置文件,请从包含安装程序的目录运行以下命令:

    $ ./openshift-install create ignition-configs --dir <installation_directory> 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定相同的安装目录。

    为安装目录中的 bootstrap、control plane 和计算节点创建 Ignition 配置文件。kubeadmin-passwordkubeconfig 文件在 ./<installation_directory>/auth 目录中创建:

    .
    ├── auth
    │   ├── kubeadmin-password
    │   └── kubeconfig
    ├── bootstrap.ign
    ├── master.ign
    ├── metadata.json
    └── worker.ign
    Copy to Clipboard Toggle word wrap

要在您置备的 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,然后才能继续快速跟踪安装。

您可以选择三种方法来选择性地保护 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 客户机身份运行所有节点。

流程

  1. 准备 RHEL KVM 主机以支持 IBM® 安全执行。

    • 默认情况下,KVM 主机不支持 IBM® 安全执行模式中的客户机。要在 IBM® Secure Execution 模式中支持客户机,KVM 主机必须使用内核参数规格 prot_virt=1 在 LPAR 模式中引导。要在 RHEL 8 上启用 prot_virt=1,请按照以下步骤执行:

      1. 进入到 /boot/loader/entries/,以修改您的引导装载程序配置文件 slirpconf
      2. 添加内核命令行参数 prot_virt=1
      3. 运行 zipl 命令并重启系统。

        从支持 IBM® Secure Execution 开始的 KVM 主机发出以下内核信息:

        prot_virt: Reserving <amount>MB as ultravisor base storage.
        Copy to Clipboard Toggle word wrap
      4. 要验证 KVM 主机现在支持 IBM® Secure Execution,请运行以下命令:

        # cat /sys/firmware/uv/prot_virt_host
        Copy to Clipboard Toggle word wrap

        输出示例

        1
        Copy to Clipboard Toggle word wrap

        对于 Linux 实例,此属性的值是 1,它检测其环境与安全主机的一致性。对于其他实例,值为 0。

  2. 通过 Ignition 将您的主机密钥添加到 KVM 客户机。

    第一次引导过程中,RHCOS 会查找主机密钥以使用它们重新加密自身。RHCOS 在 /etc/se-hostkeys 目录中搜索以 ibm-z-hostkey- 开头的文件。集群运行的每台机器的所有主机密钥都必须由管理员加载到目录中。首次启动后,您无法在任何其他机器上运行虚拟机。

    注意

    您需要在安全系统上准备 Ignition 文件。例如,另一个 IBM® Secure Execution 客户机。

    例如:

    {
      "ignition": { "version": "3.0.0" },
      "storage": {
        "files": [
          {
            "path": "/etc/se-hostkeys/ibm-z-hostkey-<your-hostkey>.crt",
            "contents": {
              "source": "data:;base64,<base64 encoded hostkey document>"
            },
            "mode": 420
          },
          {
            "path": "/etc/se-hostkeys/ibm-z-hostkey-<your-hostkey>.crt",
            "contents": {
              "source": "data:;base64,<base64 encoded hostkey document>"
            },
            "mode": 420
          }
        ]
      }
    }
    ```
    Copy to Clipboard Toggle word wrap
    注意

    如果您希望节点能够在多个 IBM Z® 机器上运行,您可以根据需要添加任意数量的主机密钥。

  3. 要生成 Base64 编码字符串,请运行以下命令:

    base64 <your-hostkey>.crt
    Copy to Clipboard Toggle word wrap

    与不运行 IBM® Secure Execution 的客户机相比,机器的第一次引导将较长,因为整个镜像在 Ignition 阶段之前使用随机生成的 LUKS 密码短语进行加密。

  4. 添加 Ignition 保护

    为了保护存储在 Ignition 配置文件中的 secret 被读取或修改,您必须加密 Ignition 配置文件。

    注意

    为了实现所需的安全性,在运行 IBM® Secure Execution 时默认禁用 Ignition 日志记录和本地登录。

    1. 运行以下命令,获取 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
      Copy to Clipboard Toggle word wrap
  5. 按照 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.
    Copy to Clipboard Toggle word wrap

  • 如果解密失败,您可以预期类似以下示例的输出:

    输出示例

    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 Toggle word wrap

在 IBM Z® 或 IBM® LinuxONE 环境中通过 IBM® Crypto Express (CEX)启用基于硬件的 Linux 统一密钥设置(LUKS)加密需要额外的步骤,本节中详细介绍。

先决条件

  • 您已安装了 with ane 实用程序。
  • 您已查看如何使用 Butane 创建机器配置的说明。

流程

  1. 为 control plane 和计算节点创建 Butane 配置文件:

    • 通过对带有磁盘加密的 control plane 节点使用以下 Butane 配置来创建名为 main-storage.bu 的文件,例如:

      variant: openshift
      version: 4.19.0
      metadata:
        name: main-storage
        labels:
          machineconfiguration.openshift.io/role: master
      boot_device:
        layout: s390x-virt
        luks:
          cex:
            enabled: true
      openshift:
        fips: true 
      1
      
        kernel_arguments:
          - rd.luks.key=/etc/luks/cex.key 
      2
      Copy to Clipboard Toggle word wrap
      1
      指定是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。
      2
      指定解密设备所需的密钥位置。您无法更改这个值。
  2. 创建包含 ignition.platform.id=metalignition.firstboot 的参数文件。

    control plane 机器的内核参数文件示例

    cio_ignore=all,!condev rd.neednet=1 \
    console=ttysclp0 \
    ignition.firstboot ignition.platform.id=metal \
    coreos.inst.ignition_url=http://<http_server>/master.ign \
    1
    
    coreos.live.rootfs_url=http://<http_server>/rhcos-<version>-live-rootfs.<architecture>.img \
    2
    
    ip=<ip_address>::<gateway>:<netmask>:<hostname>::none nameserver=<dns> \
    rd.znet=qeth,0.0.bdd0,0.0.bdd1,0.0.bdd2,layer2=1 \
    rd.zfcp=0.0.5677,0x600606680g7f0056,0x034F000000000000
    Copy to Clipboard Toggle word wrap

    1
    指定 Ignition 配置文件的位置。使用 master.ignworker.ign。您只能使用 HTTP 和 HTTPS 协议。
    2
    指定您要引导的内核initramfsrootfs 工件的位置。您只能使用 HTTP 和 HTTPS 协议。
    注意

    将参数文件中的所有选项写为一行,并确保您没有换行字符。

在 IBM Z® 或 IBM® LinuxONE 环境中启用 NBDE 磁盘加密需要额外的步骤,本节中详细介绍。

先决条件

  • 您已设置了外部 Tang 服务器。具体步骤请查看 网络绑定磁盘加密
  • 您已安装了 with ane 实用程序。
  • 您已查看如何使用 Butane 创建机器配置的说明。

流程

  1. 为 control plane 和计算节点创建 Butane 配置文件。

    以下 control plane 节点的 Butane 配置示例为磁盘加密创建一个名为 master-storage.bu 的文件:

    variant: openshift
    version: 4.19.0
    metadata:
      name: master-storage
      labels:
        machineconfiguration.openshift.io/role: master
    storage:
      luks:
        - clevis:
            tang:
              - thumbprint: QcPr_NHFJammnRCA3fFMVdNBwjs
                url: http://clevis.example.com:7500
          device: /dev/disk/by-partlabel/root
          label: luks-root
          name: root
          wipe_volume: true
      filesystems:
        - device: /dev/mapper/root
          format: xfs
          label: root
          wipe_filesystem: true
    openshift:
      fips: true 
    1
    Copy to Clipboard Toggle word wrap
    1
    是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。
  2. 运行以下命令,创建自定义 initramfs 文件来引导机器:

    $ coreos-installer pxe customize \
        /root/rhcos-bootfiles/rhcos-<release>-live-initramfs.s390x.img \
        --dest-device /dev/disk/by-id/scsi-<serial_number> --dest-karg-append \
        ip=<ip_address>::<gateway_ip>:<subnet_mask>::<network_device>:none \
        --dest-karg-append nameserver=<nameserver_ip> \
        --dest-karg-append rd.neednet=1 -o \
        /root/rhcos-bootfiles/<node_name>-initramfs.s390x.img
    Copy to Clipboard Toggle word wrap
    注意

    首次引导前,您必须为集群中的每个节点自定义 initramfs,并添加 PXE 内核参数。

  3. 创建包含 ignition.platform.id=metalignition.firstboot 的参数文件。

    control plane 机器的内核参数文件示例

    cio_ignore=all,!condev rd.neednet=1 \
    console=ttysclp0 \
    ignition.firstboot ignition.platform.id=metal \
    coreos.inst.ignition_url=http://<http_server>/master.ign \
    1
    
    coreos.live.rootfs_url=http://<http_server>/rhcos-<version>-live-rootfs.<architecture>.img \
    2
    
    ip=<ip>::<gateway>:<netmask>:<hostname>::none nameserver=<dns> \
    rd.znet=qeth,0.0.bdd0,0.0.bdd1,0.0.bdd2,layer2=1 \
    rd.zfcp=0.0.5677,0x600606680g7f0056,0x034F000000000000 \
    zfcp.allow_lun_scan=0
    Copy to Clipboard Toggle word wrap

    1
    指定 Ignition 配置文件的位置。使用 master.ignworker.ign。仅支持 HTTP 和 HTTPS 协议。
    2
    指定您要引导的 kernelinitramfsrootfs 工件位置。仅支持 HTTP 和 HTTPS 协议。
    注意

    将参数文件中的所有选项写为一行,并确保您没有换行字符。

完成以下步骤,在 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 服务器。

流程

  1. 从红帽客户门户网站的产品下载页或 RHCOS image mirror 页获得 RHEL QEMU copy-on-write (QCOW2) 磁盘镜像。

    重要

    RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。仅使用以下流程中描述的适当 RHCOS QCOW2 镜像。

  2. 将 QCOW2 磁盘镜像和 Ignition 文件下载到 RHEL KVM 主机上的通用目录中。

    例如: /var/lib/libvirt/images

    注意

    Ignition 文件由 OpenShift Container Platform 安装程序生成。

  3. 为每个 KVM 客户机节点使用 QCOW2 磁盘镜像文件创建新磁盘镜像。

    $ 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 Toggle word wrap
  4. 使用 Ignition 文件和新磁盘镜像创建新的 KVM 客户机节点。

    $ virt-install --noautoconsole \
       --connect qemu:///system \
       --name <vm_name> \
       --memory <memory_mb> \
       --vcpus <vcpus> \
       --disk <disk> \
       --launchSecurity type="s390-pv" \ 
    1
    
       --import \
       --network network=<virt_network_parm>,mac=<mac_address> \
       --disk path=<ign_file>,format=raw,readonly=on,serial=ignition,startup_policy=optional 
    2
    Copy to Clipboard Toggle word wrap
    1
    如果启用了 IBM® Secure Execution,请添加 launchSecurity type="s390-pv" 参数。
    2
    如果启用了 IBM® Secure Execution,请将 serial=ignition 替换为 serial=ignition_crypted

2.5.6.3. 在新 QCOW2 磁盘镜像上完全安装

完成以下步骤,在新的 QEMU 写时复制(QCOW2)磁盘镜像上在完整安装中创建机器。

先决条件

  • 至少有一个 LPAR 在 KVM 的 RHEL 8.6 或更高版本中运行,在此过程中称为 RHEL KVM 主机。
  • KVM/QEMU 管理程序安装在 RHEL KVM 主机上。
  • 一个域名服务器(DNS),它可以对节点执行主机名和反向查找。
  • 设置了 HTTP 或 HTTPS 服务器。

流程

  1. 从红帽客户门户网站的产品下载页或 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
  2. 在启动 virt-install 前,将下载的 RHEL live kernel、initramfs 和 rootfs 以及 Ignition 文件移到 HTTP 或 HTTPS 服务器中。

    注意

    Ignition 文件由 OpenShift Container Platform 安装程序生成。

  3. 使用 RHEL 内核、initramfs 和 Ignition 文件、新磁盘镜像并调整 parm 行参数,创建新的 KVM 客户机节点。

    $ virt-install \
       --connect qemu:///system \
       --name <vm_name> \
       --memory <memory_mb> \
       --vcpus <vcpus> \
       --location <media_location>,kernel=<rhcos_kernel>,initrd=<rhcos_initrd> \ / 
    1
    
       --disk <vm_name>.qcow2,size=<image_size>,cache=none,io=native \
       --network network=<virt_network_parm> \
       --boot hd \
       --extra-args "rd.neednet=1" \
       --extra-args "coreos.inst.install_dev=/dev/<block_device>" \
       --extra-args "coreos.inst.ignition_url=http://<http_server>/bootstrap.ign" \
    2
    
       --extra-args "coreos.live.rootfs_url=http://<http_server>/rhcos-<version>-live-rootfs.<architecture>.img" \
    3
    
       --extra-args "ip=<ip>::<gateway>:<netmask>:<hostname>::none nameserver=<dns>" \
       --noautoconsole \
       --wait
    Copy to Clipboard Toggle word wrap
    1
    对于 --location 参数,指定 HTTP 或 HTTPS 服务器中的 kernel/initrd 的位置。
    2
    指定 Ignition 配置文件的位置。使用 bootstrap.ignmaster.ignworker.ign。仅支持 HTTP 和 HTTPS 协议。
    3
    指定您要引导的 kernelinitramfsrootfs 工件位置。仅支持 HTTP 和 HTTPS 协议。

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
Copy to Clipboard Toggle word wrap
注意

当您使用 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
Copy to Clipboard Toggle word wrap
指定多个网络接口

您可以通过设置多个 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
Copy to Clipboard Toggle word wrap
配置默认网关和路由

可选:您可以通过设置 a rd.route= 值来配置到额外网络的路由。

注意

当您配置一个或多个网络时,需要一个默认网关。如果额外网络网关与主要网络网关不同,则默认网关必须是主要网络网关。

  • 运行以下命令来配置默认网关:

    ip=::10.10.10.254::::
    Copy to Clipboard Toggle word wrap
  • 输入以下命令为额外网络配置路由:

    rd.route=20.20.20.0/24:20.20.20.254:enp2s0
    Copy to Clipboard Toggle word wrap
在单个接口中禁用 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
Copy to Clipboard Toggle word wrap
合并 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
Copy to Clipboard Toggle word wrap
在独立接口上配置 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
    Copy to Clipboard Toggle word wrap
  • 要在网络接口中配置 VLAN 并使用 DHCP,请运行以下命令:

    ip=enp2s0.100:dhcp
    vlan=enp2s0.100:enp2s0
    Copy to Clipboard Toggle word wrap
提供多个 DNS 服务器

您可以通过为每个服务器添加一个 nameserver= 条目来提供多个 DNS 服务器,例如

nameserver=1.1.1.1
nameserver=8.8.8.8
Copy to Clipboard Toggle word wrap

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 代理可用。

流程

  1. 监控 bootstrap 过程:

    $ ./openshift-install --dir <installation_directory> wait-for bootstrap-complete \ 
    1
    
        --log-level=info 
    2
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。
    2
    要查看不同的安装详情,请指定 warndebugerror,而不是 info

    输出示例

    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 Toggle word wrap

    当 Kubernetes API 服务器提示已在 control plane 机器上引导它时,该命令会成功。

  2. bootstrap 过程完成后,从负载均衡器中删除 bootstrap 机器。

    重要

    此时您必须从负载均衡器中删除 bootstrap 机器。您还可以删除或重新格式化 bootstrap 机器本身。

2.5.8. 使用 CLI 登录集群

您可以通过导出集群 kubeconfig 文件,以默认系统用户身份登录集群。kubeconfig 文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。

先决条件

  • 已部署 OpenShift Container Platform 集群。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 运行以下命令来导出 kubeadmin 凭证:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。
  2. 运行以下命令,使用导出的配置成功运行 oc 命令:

    $ oc whoami
    Copy to Clipboard Toggle word wrap

    输出示例

    system:admin
    Copy to Clipboard Toggle word wrap

2.5.9. 批准机器的证书签名请求

当您将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(CSR)。您必须确认这些 CSR 已获得批准,或根据需要自行批准。必须首先批准客户端请求,然后批准服务器请求。

先决条件

  • 您已将机器添加到集群中。

流程

  1. 确认集群可以识别这些机器:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    输出示例

    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 Toggle word wrap

    输出中列出了您创建的所有机器。

    注意

    在有些 CSR 被批准前,前面的输出可能不包括计算节点(也称为 worker 节点)。

  2. 检查待处理的 CSR,并确保添加到集群中的每台机器都有 PendingApproved 状态的客户端请求:

    $ oc get csr
    Copy to Clipboard Toggle word wrap

    输出示例

    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 Toggle word wrap

  3. 如果 CSR 没有获得批准,在您添加的机器的所有待处理 CSR 都处于 Pending 状态 后,请批准集群机器的 CSR:

    注意

    由于 CSR 会自动轮转,因此请在将机器添加到集群后一小时内批准您的 CSR。如果没有在一小时内批准它们,证书将会轮转,每个节点会存在多个证书。您必须批准所有这些证书。批准客户端 CSR 后,Kubelet 为服务证书创建一个二级 CSR,这需要手动批准。然后,如果 Kubelet 请求具有相同参数的新证书,则后续提供证书续订请求由 machine-approver 自动批准。

    注意

    对于在未启用机器 API 的平台上运行的集群,如裸机和其他用户置备的基础架构,您必须实施一种方法来自动批准 kubelet 提供证书请求(CSR)。如果没有批准请求,则 oc exec、ocrshoc logs 命令将无法成功,因为 API 服务器连接到 kubelet 时需要服务证书。与 Kubelet 端点联系的任何操作都需要此证书批准。该方法必须监视新的 CSR,确认 CSR 由 system: nodesystem:admin 组中的 node-bootstrapper 服务帐户提交,并确认节点的身份。

    • 要单独批准,请对每个有效的 CSR 运行以下命令:

      $ oc adm certificate approve <csr_name> 
      1
      Copy to Clipboard Toggle word wrap
      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
      Copy to Clipboard Toggle word wrap
      注意

      在有些 CSR 被批准前,一些 Operator 可能无法使用。

  4. 现在,您的客户端请求已被批准,您必须查看添加到集群中的每台机器的服务器请求:

    $ oc get csr
    Copy to Clipboard Toggle word wrap

    输出示例

    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 Toggle word wrap

  5. 如果剩余的 CSR 没有被批准,且处于 Pending 状态,请批准集群机器的 CSR:

    • 要单独批准,请对每个有效的 CSR 运行以下命令:

      $ oc adm certificate approve <csr_name> 
      1
      Copy to Clipboard Toggle word wrap
      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
      Copy to Clipboard Toggle word wrap
  6. 批准所有客户端和服务器 CSR 后,机器将 处于 Ready 状态。运行以下命令验证:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME      STATUS    ROLES   AGE  VERSION
    master-0  Ready     master  73m  v1.32.3
    master-1  Ready     master  73m  v1.32.3
    master-2  Ready     master  74m  v1.32.3
    worker-0  Ready     worker  11m  v1.32.3
    worker-1  Ready     worker  11m  v1.32.3
    Copy to Clipboard Toggle word wrap

    注意

    批准服务器 CSR 后可能需要几分钟时间让机器过渡到 Ready 状态

其他信息

2.5.10. 初始 Operator 配置

在 control plane 初始化后,您必须立即配置一些 Operator,以便它们都可用。

先决条件

  • 您的 control plane 已初始化。

流程

  1. 观察集群组件上线:

    $ watch -n5 oc get clusteroperators
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE
    authentication                             4.19.0    True        False         False      19m
    baremetal                                  4.19.0    True        False         False      37m
    cloud-credential                           4.19.0    True        False         False      40m
    cluster-autoscaler                         4.19.0    True        False         False      37m
    config-operator                            4.19.0    True        False         False      38m
    console                                    4.19.0    True        False         False      26m
    csi-snapshot-controller                    4.19.0    True        False         False      37m
    dns                                        4.19.0    True        False         False      37m
    etcd                                       4.19.0    True        False         False      36m
    image-registry                             4.19.0    True        False         False      31m
    ingress                                    4.19.0    True        False         False      30m
    insights                                   4.19.0    True        False         False      31m
    kube-apiserver                             4.19.0    True        False         False      26m
    kube-controller-manager                    4.19.0    True        False         False      36m
    kube-scheduler                             4.19.0    True        False         False      36m
    kube-storage-version-migrator              4.19.0    True        False         False      37m
    machine-api                                4.19.0    True        False         False      29m
    machine-approver                           4.19.0    True        False         False      37m
    machine-config                             4.19.0    True        False         False      36m
    marketplace                                4.19.0    True        False         False      37m
    monitoring                                 4.19.0    True        False         False      29m
    network                                    4.19.0    True        False         False      38m
    node-tuning                                4.19.0    True        False         False      37m
    openshift-apiserver                        4.19.0    True        False         False      32m
    openshift-controller-manager               4.19.0    True        False         False      30m
    openshift-samples                          4.19.0    True        False         False      32m
    operator-lifecycle-manager                 4.19.0    True        False         False      37m
    operator-lifecycle-manager-catalog         4.19.0    True        False         False      37m
    operator-lifecycle-manager-packageserver   4.19.0    True        False         False      32m
    service-ca                                 4.19.0    True        False         False      38m
    storage                                    4.19.0    True        False         False      37m
    Copy to Clipboard Toggle word wrap

  2. 配置不可用的 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 容量。

流程

  1. 要将 registry 配置为使用存储,修改 configs.imageregistry/cluster 资源中的 spec.storage.pvc

    注意

    使用共享存储时,请查看您的安全设置以防止外部访问。

  2. 验证您没有 registry pod:

    $ oc get pod -n openshift-image-registry -l docker-registry=default
    Copy to Clipboard Toggle word wrap

    输出示例

    No resources found in openshift-image-registry namespace
    Copy to Clipboard Toggle word wrap

    注意

    如果您的输出中有一个 registry pod,则不需要继续这个过程。

  3. 检查 registry 配置:

    $ oc edit configs.imageregistry.operator.openshift.io
    Copy to Clipboard Toggle word wrap

    输出示例

    storage:
      pvc:
        claim:
    Copy to Clipboard Toggle word wrap

    claim 字段留空以允许自动创建 image-registry-storage PVC。

  4. 检查 clusteroperator 状态:

    $ oc get clusteroperator image-registry
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME             VERSION              AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
    image-registry   4.19                 True        False         False      6h50m
    Copy to Clipboard Toggle word wrap

  5. 确保 registry 设置为 managed,以启用镜像的构建和推送。

    • 运行:

      $ oc edit configs.imageregistry/cluster
      Copy to Clipboard Toggle word wrap

      然后,更改行

      managementState: Removed
      Copy to Clipboard Toggle word wrap

      managementState: Managed
      Copy to Clipboard Toggle word wrap

您必须为 Image Registry Operator 配置存储。对于非生产集群,您可以将镜像 registry 设置为空目录。如果您这样做,重启 registry 时会丢失所有镜像。

流程

  • 将镜像 registry 存储设置为空目录:

    $ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"storage":{"emptyDir":{}}}}'
    Copy to Clipboard Toggle word wrap
    警告

    仅为非生产集群配置这个选项。

    如果在 Image Registry Operator 初始化其组件前运行这个命令,oc patch 命令会失败并显示以下错误:

    Error from server (NotFound): configs.imageregistry.operator.openshift.io "cluster" not found
    Copy to Clipboard Toggle word wrap

    等待几分钟,然后再次运行 命令。

2.5.11. 在用户置备的基础架构上完成安装

完成 Operator 配置后,可以在您提供的基础架构上完成集群安装。

先决条件

  • 您的 control plane 已初始化。
  • 已完成初始 Operator 配置。

流程

  1. 使用以下命令确认所有集群组件都在线:

    $ watch -n5 oc get clusteroperators
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE
    authentication                             4.19.0    True        False         False      19m
    baremetal                                  4.19.0    True        False         False      37m
    cloud-credential                           4.19.0    True        False         False      40m
    cluster-autoscaler                         4.19.0    True        False         False      37m
    config-operator                            4.19.0    True        False         False      38m
    console                                    4.19.0    True        False         False      26m
    csi-snapshot-controller                    4.19.0    True        False         False      37m
    dns                                        4.19.0    True        False         False      37m
    etcd                                       4.19.0    True        False         False      36m
    image-registry                             4.19.0    True        False         False      31m
    ingress                                    4.19.0    True        False         False      30m
    insights                                   4.19.0    True        False         False      31m
    kube-apiserver                             4.19.0    True        False         False      26m
    kube-controller-manager                    4.19.0    True        False         False      36m
    kube-scheduler                             4.19.0    True        False         False      36m
    kube-storage-version-migrator              4.19.0    True        False         False      37m
    machine-api                                4.19.0    True        False         False      29m
    machine-approver                           4.19.0    True        False         False      37m
    machine-config                             4.19.0    True        False         False      36m
    marketplace                                4.19.0    True        False         False      37m
    monitoring                                 4.19.0    True        False         False      29m
    network                                    4.19.0    True        False         False      38m
    node-tuning                                4.19.0    True        False         False      37m
    openshift-apiserver                        4.19.0    True        False         False      32m
    openshift-controller-manager               4.19.0    True        False         False      30m
    openshift-samples                          4.19.0    True        False         False      32m
    operator-lifecycle-manager                 4.19.0    True        False         False      37m
    operator-lifecycle-manager-catalog         4.19.0    True        False         False      37m
    operator-lifecycle-manager-packageserver   4.19.0    True        False         False      32m
    service-ca                                 4.19.0    True        False         False      38m
    storage                                    4.19.0    True        False         False      37m
    Copy to Clipboard Toggle word wrap

    另外,当所有集群都可用时,以下命令会通知您。它还检索并显示凭证:

    $ ./openshift-install --dir <installation_directory> wait-for install-complete 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。

    输出示例

    INFO Waiting up to 30m0s for the cluster to initialize...
    Copy to Clipboard Toggle word wrap

    Cluster Version Operator 完成从 Kubernetes API 服务器部署 OpenShift Container Platform 集群时,该命令会成功。

    重要
    • 安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的 node-bootstrapper 证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。
    • 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
  2. 确认 Kubernetes API 服务器正在与 pod 通信。

    1. 要查看所有 pod 的列表,请使用以下命令:

      $ oc get pods --all-namespaces
      Copy to Clipboard Toggle word wrap

      输出示例

      NAMESPACE                         NAME                                            READY   STATUS      RESTARTS   AGE
      openshift-apiserver-operator      openshift-apiserver-operator-85cb746d55-zqhs8   1/1     Running     1          9m
      openshift-apiserver               apiserver-67b9g                                 1/1     Running     0          3m
      openshift-apiserver               apiserver-ljcmx                                 1/1     Running     0          1m
      openshift-apiserver               apiserver-z25h4                                 1/1     Running     0          2m
      openshift-authentication-operator authentication-operator-69d5d8bf84-vh2n8        1/1     Running     0          5m
      ...
      Copy to Clipboard Toggle word wrap

    2. 使用以下命令,查看上一命令的输出中所列 pod 的日志:

      $ oc logs <pod_name> -n <namespace> 
      1
      Copy to Clipboard Toggle word wrap
      1
      指定 pod 名称和命名空间,如上一命令的输出中所示。

      如果 pod 日志显示,Kubernetes API 服务器可以与集群机器通信。

  3. 对于使用光纤通道协议(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 订阅。

2.5.13. 后续步骤

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat