×

先决条件

关于受限网络中的安装

在OpenShift Container Platform 4.17中,您可以执行不需要主动连接到互联网即可获取软件组件的安装。受限网络安装可以使用安装程序提供的基础架构或用户提供的基础架构完成,具体取决于您要安装集群的云平台。

如果您选择在云平台上执行受限网络安装,您仍然需要访问其云API。某些云功能(例如Amazon Web Service的Route 53 DNS和IAM服务)需要互联网访问。根据您的网络,在裸机硬件、Nutanix或VMware vSphere上进行安装可能需要较少的互联网访问。

要完成受限网络安装,您必须创建一个镜像注册表,该注册表镜像OpenShift镜像注册表的内容并包含安装介质。您可以在可以访问互联网和封闭网络的镜像主机上创建此注册表,或者使用满足您限制的其他方法。

由于用户预配安装的配置比较复杂,建议您在尝试使用用户预配基础架构进行受限网络安装之前,先完成标准的用户预配基础架构安装。完成此测试安装可以更轻松地隔离和排除受限网络安装过程中可能出现的任何问题。

其他限制

受限网络中的集群具有以下额外限制。

  • ClusterVersion 状态包含 无法检索可用更新 错误。

  • 默认情况下,您无法使用开发者目录的内容,因为您无法访问所需的镜像流标签。

准备用户预配的基础架构

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

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

准备之后,您的集群基础架构必须满足“用户预配基础架构的集群要求”部分中概述的要求。

先决条件
步骤
  1. 设置静态IP地址。

  2. 设置HTTP或HTTPS服务器以向集群节点提供Ignition文件。

  3. 确保您的网络基础架构在集群组件之间提供所需的网络连接。有关要求的详细信息,请参见“用户预配基础架构的网络要求”部分。

  4. 配置防火墙以启用OpenShift Container Platform集群组件通信所需的端口。有关所需端口的详细信息,请参见“用户预配基础架构的网络要求”部分。

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

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

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

    1. 配置Kubernetes API、应用程序通配符、引导机器、控制平面机器和计算机器的DNS名称解析。

    2. 配置Kubernetes API、引导机器、控制平面机器和计算机器的反向DNS解析。

      有关OpenShift Container Platform DNS要求的更多信息,请参见“用户预配的DNS要求”部分。

  6. 验证您的DNS配置。

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

    2. 从您的安装节点运行针对负载均衡器和集群节点的IP地址的反向DNS查找。验证响应中的记录名称是否与正确的组件相对应。

      有关详细的DNS验证步骤,请参见“验证用户预配基础架构的DNS解析”部分。

  7. 预配所需的API和应用程序入口负载均衡基础架构。有关要求的更多信息,请参见“用户预配基础架构的负载均衡要求”部分。

某些负载均衡解决方案需要在初始化负载均衡之前就位集群节点的DNS名称解析。

手动创建安装配置文件

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

先决条件
  • 您在本地机器上有一个SSH公钥,需要提供给安装程序。此密钥将用于对集群节点进行SSH身份验证,以进行调试和灾难恢复。

  • 您已获得OpenShift Container Platform安装程序和集群的pull secret。

步骤
  1. 创建一个安装目录来存储所需的安装资源。

    $ mkdir <installation_directory>

    您必须创建一个目录。某些安装资源(如引导X.509证书)的有效期很短,因此您不能重复使用安装目录。如果您想从另一个集群安装中重复使用单个文件,您可以将它们复制到您的目录中。但是,安装资源的文件名可能会在不同版本之间发生变化。从早期OpenShift Container Platform版本复制安装文件时,请谨慎操作。

  2. 自定义提供的install-config.yaml文件模板样本,并将其保存在<installation_directory>中。

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

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

    install-config.yaml文件在安装过程的下一步中使用。您现在必须对其进行备份。

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: (2)
  hyperthreading: Enabled (3)
  name: master
  replicas: 3 (5)
  architecture: s390x
metadata:
  name: test (6)
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14 (7)
    hostPrefix: 23 (8)
  networkType: OVNKubernetes (9)
  serviceNetwork: (10)
  - 172.30.0.0/16
platform:
  none: {} (11)
fips: false (12)
pullSecret: '{"auths":{"<local_registry>": {"auth": "<credentials>","email": "[email protected]"}}}' (13)
sshKey: 'ssh-ed25519 AAAA...' (14)
additionalTrustBundle: | (15)
  -----BEGIN CERTIFICATE-----
  ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
  -----END CERTIFICATE-----
imageContentSources: (16)
- mirrors:
  - <local_repository>/ocp4/openshift4
  source: quay.io/openshift-release-dev/ocp-release
- mirrors:
  - <local_repository>/ocp4/openshift4
  source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
1 集群的基本域名。所有DNS记录都必须是此基本域的子域,并且包含集群名称。
2 controlPlane 部分是单个映射,但compute 部分是映射序列。为了满足不同数据结构的要求,compute 部分的第一行必须以连字符-开头,而controlPlane 部分的第一行则不能。仅使用一个控制平面池。
3 指定是启用还是禁用同时多线程 (SMT) 或超线程。默认情况下,启用 SMT 以提高机器中内核的性能。您可以通过将参数值设置为Disabled来禁用它。如果禁用SMT,则必须在所有集群机器中禁用它;这包括控制平面机器和计算机器。

默认情况下启用同时多线程 (SMT)。如果您的OpenShift Container Platform节点上没有SMT,则hyperthreading参数无效。

如果您禁用超线程(无论是在您的 OpenShift Container Platform 节点上还是在install-config.yaml文件中),请确保您的容量规划考虑到了机器性能的大幅下降。

4 在用户自备基础设施上安装 OpenShift Container Platform 时,必须将此值设置为0。在安装程序预配的安装中,此参数控制集群为您创建和管理的计算机器数量。在用户自备安装中,您必须在完成集群安装之前手动部署计算机器。

如果您要安装一个三节点集群,那么在安装 Red Hat Enterprise Linux CoreOS (RHCOS) 机器时,不要部署任何计算机器。

5 您添加到集群的控制平面机器数量。由于集群使用这些值作为集群中 etcd 端点的数量,因此该值必须与您部署的控制平面机器数量匹配。
6 您在 DNS 记录中指定的集群名称。
7 分配 Pod IP 地址的 IP 地址块。此块不得与现有物理网络重叠。这些 IP 地址用于 Pod 网络。如果您需要从外部网络访问 Pod,则必须配置负载均衡器和路由器来管理流量。

E 类 CIDR 范围保留供将来使用。要使用 E 类 CIDR 范围,您必须确保您的网络环境接受 E 类 CIDR 范围内的 IP 地址。

8 分配给每个节点的子网前缀长度。例如,如果hostPrefix设置为23,则每个节点将从给定的cidr分配一个/23子网,允许 510 个 (2^(32 - 23) - 2) Pod IP 地址。如果您需要从外部网络访问节点,请配置负载均衡器和路由器来管理流量。
9 要安装的集群网络插件。默认值OVNKubernetes是唯一受支持的值。
10 用于服务 IP 地址的 IP 地址池。您只能输入一个 IP 地址池。此块不得与现有物理网络重叠。如果您需要从外部网络访问服务,则必须配置负载均衡器和路由器来管理流量。
11 您必须将平台设置为none。您不能为 IBM Z® 基础设施提供其他平台配置变量。

使用平台类型none安装的集群无法使用某些功能,例如使用 Machine API 管理计算机器。即使连接到集群的计算机器安装在通常支持此功能的平台上,此限制也适用。此参数在安装后无法更改。

12 是否启用或禁用 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 核心组件仅在 x86_64、ppc64le 和 s390x 架构上使用已提交给 NIST 进行 FIPS 140-2/140-3 验证的 RHEL 加密库。

13 对于<local_registry>,请指定您的镜像注册表用于提供内容的注册表域名,以及可选的端口。例如,registry.example.comregistry.example.com:5000。对于<credentials>,请指定您的镜像注册表的 base64 编码用户名和密码。
14 Red Hat Enterprise Linux CoreOS (RHCOS) 中core用户的 SSH 公钥。

对于要执行安装调试或灾难恢复的生产 OpenShift Container Platform 集群,请指定您的ssh-agent进程使用的 SSH 密钥。

15 添加additionalTrustBundle参数和值。该值必须是您用于镜像注册表的证书文件的内容。证书文件可以是现有的受信任证书颁发机构,也可以是您为镜像注册表生成的自签名证书。
16 根据您用于镜像存储库的命令的输出提供imageContentSources部分。
  • 使用oc adm release mirror命令时,请使用imageContentSources部分的输出。

  • 使用oc mirror命令时,请使用运行该命令生成的ImageContentSourcePolicy文件的repositoryDigestMirrors部分。

  • ImageContentSourcePolicy已弃用。更多信息请参见 *配置镜像注册表存储库镜像*。

在安装过程中配置集群范围的代理

生产环境可能会拒绝直接访问互联网,而是提供 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)
    1 用于创建集群外部 HTTP 连接的代理 URL。URL 方案必须是http
    2 用于创建集群外部 HTTPS 连接的代理 URL。
    3 要从代理中排除的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。用.作为域名前缀,仅匹配子域。例如,.y.com匹配x.y.com,但不匹配y.com。使用*绕过所有目标的代理。
    4 如果提供,安装程序会生成一个名为user-ca-bundle的配置映射,该映射位于openshift-config命名空间中,其中包含代理HTTPS连接所需的一个或多个附加CA证书。然后,集群网络操作符会创建一个trusted-ca-bundle配置映射,将这些内容与Red Hat Enterprise Linux CoreOS (RHCOS)信任捆绑包合并,并且此配置映射在Proxy对象的trustedCA字段中引用。除非代理的身份证书由RHCOS信任捆绑包中的权威机构签名,否则additionalTrustBundle字段是必需的。
    5 可选:确定Proxy对象的配置以在trustedCA字段中引用user-ca-bundle配置映射的策略。允许的值为ProxyonlyAlways。使用Proxyonly仅在配置了http/https代理时才引用user-ca-bundle配置映射。使用Always始终引用user-ca-bundle配置映射。默认值为Proxyonly

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

    如果安装程序超时,请重新启动,然后使用安装程序的wait-for命令完成部署。例如

    $ ./openshift-install wait-for install-complete --log-level debug
  2. 保存文件并在安装OpenShift Container Platform时引用它。

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

仅支持名为clusterProxy对象,不能创建其他代理。

配置三节点集群

可选地,您可以在仅包含三个控制平面机器的最小三节点集群中部署零个计算机器。这为集群管理员和开发人员提供了更小、更高效的集群,可用于测试、开发和生产。

在三节点OpenShift Container Platform环境中,三个控制平面机器是可调度的,这意味着您的应用程序工作负载将安排在其上运行。

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

步骤
  • 确保在您的install-config.yaml文件中将计算副本的数量设置为0,如下面的compute节所示

    compute:
    - name: worker
      platform: {}
      replicas: 0

    在用户预配的基础设施上安装OpenShift Container Platform时,必须将计算机的replicas参数值设置为0,无论您部署的计算机器数量是多少。在安装程序预配的安装中,该参数控制集群为您创建和管理的计算机器数量。这并不适用于用户预配的安装,其中计算机器是手动部署的。

    控制平面节点的首选资源是六个vCPU和21 GB内存。对于三个控制平面节点,这相当于最小五个节点集群的内存+vCPU。您应该为这三个节点(每个节点安装在120 GB磁盘上)提供三个启用SMT2的IFL。经过测试的最小设置是每个控制平面节点上具有三个vCPU和10 GB内存的120 GB磁盘。

对于三节点集群安装,请遵循以下步骤

  • 如果您要部署一个具有零个计算节点的三节点集群,则Ingress Controller Pod将在控制平面节点上运行。在三节点集群部署中,您必须配置您的应用程序入口负载均衡器以将HTTP和HTTPS流量路由到控制平面节点。有关更多信息,请参见“用户预配基础设施的负载均衡要求”部分。

  • 在以下过程中创建Kubernetes清单文件时,请确保<installation_directory>/manifests/cluster-scheduler-02-config.yml文件中的mastersSchedulable参数设置为true。这将使您的应用程序工作负载能够在控制平面节点上运行。

  • 创建Red Hat Enterprise Linux CoreOS (RHCOS)机器时,请不要部署任何计算节点。

集群网络操作符配置

集群网络的配置指定为集群网络操作符 (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对象的字段来指定集群的集群网络插件配置。

集群网络操作符配置对象

集群网络操作符 (CNO) 的字段在下面的表中描述

表1. 集群网络操作符配置对象
字段 类型 描述

metadata.name

字符串

CNO对象的名称。此名称始终为cluster

spec.clusterNetwork

数组

一个列表,指定分配Pod IP地址的IP地址块以及分配给集群中每个单独节点的子网前缀长度。例如

spec:
  clusterNetwork:
  - cidr: 10.128.0.0/19
    hostPrefix: 23
  - cidr: 10.128.32.0/19
    hostPrefix: 23

spec.serviceNetwork

数组

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

spec:
  serviceNetwork:
  - 172.30.0.0/14

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

spec.defaultNetwork

对象

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

spec.kubeProxyConfig

对象

此对象的字段指定kube-proxy配置。如果您使用的是OVN-Kubernetes集群网络插件,则kube-proxy配置无效。

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

defaultNetwork 对象配置

defaultNetwork对象的取值在下面的表中定义

表2. defaultNetwork对象
字段 类型 描述

type

字符串

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

OpenShift Container Platform 默认使用 OVN-Kubernetes 网络插件。OpenShift SDN 对于新集群不再作为安装选项提供。

ovnKubernetesConfig

对象

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

OVN-Kubernetes 网络插件的配置

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

表 3. ovnKubernetesConfig 对象
字段 类型 描述

mtu

整数

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

如果自动检测到的值与预期值不符,请确认节点上主网络接口的 MTU 是否正确。无法使用此选项更改节点上主网络接口的 MTU 值。

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

genevePort

整数

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

ipsecConfig

对象

指定一个配置对象,用于自定义 IPsec 配置。

ipv4

对象

指定 IPv4 设置的配置对象。

ipv6

对象

指定 IPv6 设置的配置对象。

policyAuditConfig

对象

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

gatewayConfig

对象

可选:指定一个配置对象,用于自定义如何将出站流量发送到节点网关。

迁移出站流量期间,在集群网络操作员 (CNO) 成功推出更改之前,可能会对工作负载和服务流量造成一些中断。

表 4. ovnKubernetesConfig.ipv4 对象
字段 类型 描述

internalTransitSwitchSubnet

字符串

如果您的现有网络基础设施与 100.88.0.0/16 IPv4 子网重叠,则可以为 OVN-Kubernetes 指定不同的内部使用 IP 地址范围。启用东西向流量的分布式转接交换机的子网。此子网不能与 OVN-Kubernetes 或主机本身使用的任何其他子网重叠。它必须足够大,以容纳集群中每个节点的一个 IP 地址。

默认值为 100.88.0.0/16

internalJoinSubnet

字符串

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

默认值为 100.64.0.0/16

表 5. ovnKubernetesConfig.ipv6 对象
字段 类型 描述

internalTransitSwitchSubnet

字符串

如果您的现有网络基础设施与 fd97::/64 IPv6 子网重叠,则可以为 OVN-Kubernetes 指定不同的内部使用 IP 地址范围。启用东西向流量的分布式转接交换机的子网。此子网不能与 OVN-Kubernetes 或主机本身使用的任何其他子网重叠。它必须足够大,以容纳集群中每个节点的一个 IP 地址。

默认值为 fd97::/64

internalJoinSubnet

字符串

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

默认值为 fd98::/64

表 6. policyAuditConfig 对象
字段 类型 描述

rateLimit

整数

每个节点每秒生成的最多消息数。默认值为每秒 20 条消息。

maxFileSize

整数

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

maxLogFiles

整数

保留的最大日志文件数。

destination

字符串

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

libc

主机上 journald 进程的 libc syslog() 函数。

udp:<host>:<port>

一个 syslog 服务器。将 <host>:<port> 替换为 syslog 服务器的主机和端口。

unix:<file>

<file> 指定的 Unix 域套接字文件。

null

不要将审计日志发送到任何其他目标。

syslogFacility

字符串

syslog 设施,例如 RFC5424 中定义的 kern。默认值为 local0

表 7. gatewayConfig 对象
字段 类型 描述

routingViaHost

布尔值

将此字段设置为 true 可将 Pod 的出站流量发送到主机网络堆栈。对于依赖于内核路由表中手动配置的路由的高度专业化安装和应用程序,您可能希望将出站流量路由到主机网络堆栈。默认情况下,出站流量在 OVN 中进行处理以退出集群,并且不受内核路由表中专用路由的影响。默认值为 false

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

ipForwarding

对象

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

ipv4

对象

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

ipv6

对象

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

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

internalMasqueradeSubnet

字符串

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

对于 OpenShift Container Platform 4.17 及更高版本,集群使用169.254.0.0/17作为默认伪装子网。对于已升级的集群,默认伪装子网不会发生变化。

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

internalMasqueradeSubnet

字符串

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

对于 OpenShift Container Platform 4.17 及更高版本,集群使用fd69::/112作为默认伪装子网。对于已升级的集群,默认伪装子网不会发生变化。

表 10. ipsecConfig 对象
字段 类型 描述

模式

字符串

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

  • 已禁用:集群节点上未启用 IPsec。

  • 外部:对与外部主机的网络流量启用 IPsec。

  • 完整:对 Pod 流量和与外部主机的网络流量启用 IPsec。

启用 IPSec 的示例 OVN-Kubernetes 配置
defaultNetwork:
  type: OVNKubernetes
  ovnKubernetesConfig:
    mtu: 1400
    genevePort: 6081
      ipsecConfig:
        mode: Full

创建 Kubernetes 清单和 Ignition 配置文件

因为您必须修改一些集群定义文件并手动启动集群机器,所以您必须生成集群需要用来配置机器的 Kubernetes 清单和 Ignition 配置文件。

安装配置文件转换为 Kubernetes 清单。清单打包到 Ignition 配置文件中,这些文件随后用于配置集群机器。

  • OpenShift Container Platform 安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在此时续订。如果集群在续订证书之前关闭,并且在 24 小时后重新启动,则集群会自动恢复过期的证书。例外情况是,您必须手动批准待处理的node-bootstrapper证书签名请求 (CSR) 以恢复 kubelet 证书。有关更多信息,请参阅有关“从过期的控制平面证书中恢复”的文档。

  • 建议您在生成 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)
    1 对于<安装目录>,指定包含您创建的install-config.yaml文件的安装目录。

    如果您要安装三节点集群,请跳过以下步骤,以允许控制平面节点可调度。

    当您将控制平面节点从默认的不可调度状态配置为可调度状态时,需要额外的订阅。这是因为控制平面节点随后会变成计算节点。

  2. 检查<安装目录>/manifests/cluster-scheduler-02-config.yml Kubernetes 清单文件中的mastersSchedulable参数是否设置为false。此设置可防止在控制平面机器上调度 Pod。

    1. 打开<安装目录>/manifests/cluster-scheduler-02-config.yml文件。

    2. 找到mastersSchedulable参数并确保将其设置为false

    3. 保存并退出文件。

  3. 要创建 Ignition 配置文件,请从包含安装程序的目录运行以下命令

    $ ./openshift-install create ignition-configs --dir <installation_directory> (1)
    1 对于<安装目录>,指定相同的安装目录。

    为安装目录中的引导程序、控制平面和计算节点创建 Ignition 配置文件。kubeadmin-passwordkubeconfig文件创建在./<安装目录>/auth目录中

    .
    ├── auth
    │   ├── kubeadmin-password
    │   └── kubeconfig
    ├── bootstrap.ign
    ├── master.ign
    ├── metadata.json
    └── worker.ign

在 IBM Z 或 IBM LinuxONE 环境中使用静态 IP 配置 NBDE

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

先决条件
  • 您已设置外部 Tang 服务器。有关说明,请参阅基于网络的磁盘加密

  • 您已安装butane实用程序。

  • 您已查看有关如何使用 Butane 创建机器配置的说明。

步骤
  1. 为控制平面和计算节点创建 Butane 配置文件。

    以下控制平面节点的 Butane 配置示例创建了一个名为master-storage.bu的用于磁盘加密的文件

    variant: openshift
    version: 4.17.0
    metadata:
      name: master-storage
      labels:
        machineconfiguration.openshift.io/role: master
    storage:
      luks:
        - clevis:
            tang:
              - thumbprint: QcPr_NHFJammnRCA3fFMVdNBwjs
                url: http://clevis.example.com:7500
            options: (1)
               - --cipher
               - aes-cbc-essiv:sha256
          device: /dev/disk/by-partlabel/root (2)
          label: luks-root
          name: root
          wipe_volume: true
      filesystems:
        - device: /dev/mapper/root
          format: xfs
          label: root
          wipe_filesystem: true
    openshift:
      fips: true (3)
    1 只有在启用 FIPS 模式时才需要 cipher 选项。如果禁用 FIPS,请省略此条目。
    2 对于 DASD 类型磁盘上的安装,请替换为device: /dev/disk/by-label/root
    3 是否启用或禁用 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

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

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

    控制平面机器的示例内核参数文件
    cio_ignore=all,!condev rd.neednet=1 \
    console=ttysclp0 \
    coreos.inst.install_dev=/dev/<block_device> \(1)
    ignition.firstboot ignition.platform.id=metal \
    coreos.inst.ignition_url=http://<http_server>/master.ign \(2)
    coreos.live.rootfs_url=http://<http_server>/rhcos-<version>-live-rootfs.<architecture>.img \(3)
    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 \(4)
    zfcp.allow_lun_scan=0
    1 指定块设备类型。对于 DASD 类型磁盘上的安装,请指定/dev/dasda。对于 FCP 类型磁盘上的安装,请指定/dev/sda
    2 指定 Ignition 配置文件的位置。使用master.ignworker.ign。仅支持 HTTP 和 HTTPS 协议。
    3 指定正在引导的kernelinitramfsrootfs工件的位置。仅支持 HTTP 和 HTTPS 协议。
    4 对于 DASD 类型磁盘上的安装,请替换为rd.dasd=0.0.xxxx以指定 DASD 设备。

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

安装 RHCOS 并启动 OpenShift Container Platform 引导过程

要在您配置的 IBM Z® 基础架构上安装 OpenShift Container Platform,您必须在 z/VM 来宾虚拟机上安装 Red Hat Enterprise Linux CoreOS (RHCOS)。安装 RHCOS 时,必须提供由 OpenShift Container Platform 安装程序为要安装的机器类型生成的 Ignition 配置文件。如果您已配置合适的网络、DNS 和负载均衡基础架构,则在 RHCOS z/VM 来宾虚拟机重新引导后,OpenShift Container Platform 引导过程将自动开始。

完成以下步骤以创建机器。

先决条件
  • 在您的配置机器上运行的 HTTP 或 HTTPS 服务器,可供您创建的机器访问。

  • 如果您想启用安全启动,您已获得相应的 Red Hat 产品签名密钥并阅读了 IBM 文档中的IBM Z 和 IBM LinuxONE 上的安全启动

步骤
  1. 登录您配置机器上的 Linux。

  2. RHCOS 镜像获取 Red Hat Enterprise Linux CoreOS (RHCOS) 内核、initramfs 和 rootfs 文件。

    RHCOS 镜像可能不会随着每次 OpenShift Container Platform 版本的发布而更改。您必须下载版本号小于或等于您安装的 OpenShift Container Platform 版本的镜像。仅使用以下步骤中描述的相应内核、initramfs 和 rootfs 文件。

    文件名包含 OpenShift Container Platform 版本号。它们类似于以下示例:

    • 内核:rhcos-<version>-live-kernel-<architecture>

    • initramfs:rhcos-<version>-live-initramfs.<architecture>.img

    • rootfs:rhcos-<version>-live-rootfs.<architecture>.img

      rootfs 镜像对于 FCP 和 DASD 都是相同的。

  3. 创建参数文件。以下参数特定于特定的虚拟机。

    • 对于ip=,请指定以下七个条目:

      1. 机器的 IP 地址。

      2. 空字符串。

      3. 网关。

      4. 子网掩码。

      5. 机器主机名和域名,格式为hostname.domainname。省略此值以让 RHCOS 自行决定。

      6. 网络接口名称。省略此值以让 RHCOS 自行决定。

      7. 如果您使用静态 IP 地址,请指定none

    • 对于coreos.inst.ignition_url=,请指定机器角色的 Ignition 文件。使用bootstrap.ignmaster.ignworker.ign。仅支持 HTTP 和 HTTPS 协议。

    • 对于coreos.live.rootfs_url=,请指定与您要启动的内核和 initramfs 匹配的 rootfs 文件。仅支持 HTTP 和 HTTPS 协议。

    • 可选:要启用安全启动,请添加coreos.inst.secure_ipl

    • 对于 DASD 类型磁盘上的安装,请完成以下任务:

      1. 对于coreos.inst.install_dev=,请指定/dev/dasda

      2. 使用rd.dasd=指定要安装 RHCOS 的 DASD。

      3. 保持所有其他参数不变。

        引导机器的示例参数文件bootstrap-0.parm

        cio_ignore=all,!condev rd.neednet=1 \
        console=ttysclp0 \
        coreos.inst.install_dev=/dev/<block_device> \(1)
        coreos.inst.ignition_url=http://<http_server>/bootstrap.ign \(2)
        coreos.live.rootfs_url=http://<http_server>/rhcos-<version>-live-rootfs.<architecture>.img \(3)
        coreos.inst.secure_ipl \(4)
        ip=<ip>::<gateway>:<netmask>:<hostname>::none nameserver=<dns> \
        rd.znet=qeth,0.0.bdf0,0.0.bdf1,0.0.bdf2,layer2=1,portno=0 \
        rd.dasd=0.0.3490 \
        zfcp.allow_lun_scan=0
        1 指定块设备类型。对于 DASD 类型磁盘上的安装,请指定/dev/dasda。对于 FCP 类型磁盘上的安装,请指定/dev/sda
        2 指定 Ignition 配置文件的位置。使用bootstrap.ignmaster.ignworker.ign。仅支持 HTTP 和 HTTPS 协议。
        3 指定正在引导的kernelinitramfsrootfs工件的位置。仅支持 HTTP 和 HTTPS 协议。
        4 可选:要启用安全启动,请添加coreos.inst.secure_ipl

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

    • 对于 FCP 类型磁盘上的安装,请完成以下任务:

      1. 使用rd.zfcp=<adapter>,<wwpn>,<lun>指定要安装 RHCOS 的 FCP 磁盘。对于多路径,对每个附加路径重复此步骤。

        当您使用多条路径进行安装时,您必须在安装后立即启用多路径,而不是在以后的某个时间点启用,因为这可能会导致问题。

      2. 将安装设备设置为:coreos.inst.install_dev=/dev/disk/by-id/scsi-<serial_number>

        如果使用 NPIV 配置了其他 LUN,FCP 需要zfcp.allow_lun_scan=0。例如,如果您必须启用zfcp.allow_lun_scan=1 因为您使用 CSI 驱动程序,则必须配置您的 NPIV,以便每个节点都无法访问另一个节点的引导分区。

      3. 保持所有其他参数不变。

        需要额外的安装后步骤才能完全启用多路径。有关更多信息,请参阅《安装后机器配置任务》中的“在 RHCOS 上使用内核参数启用多路径”。

        以下是具有多路径功能的计算节点的示例参数文件worker-1.parm

        cio_ignore=all,!condev rd.neednet=1 \
        console=ttysclp0 \
        coreos.inst.install_dev=/dev/disk/by-id/scsi-<serial_number> \
        coreos.live.rootfs_url=http://<http_server>/rhcos-<version>-live-rootfs.<architecture>.img \
        coreos.inst.ignition_url=http://<http_server>/worker.ign \
        ip=<ip>::<gateway>:<netmask>:<hostname>::none nameserver=<dns> \
        rd.znet=qeth,0.0.bdf0,0.0.bdf1,0.0.bdf2,layer2=1,portno=0 \
        rd.zfcp=0.0.1987,0x50050763070bc5e3,0x4008400B00000000 \
        rd.zfcp=0.0.19C7,0x50050763070bc5e3,0x4008400B00000000 \
        rd.zfcp=0.0.1987,0x50050763071bc5e3,0x4008400B00000000 \
        rd.zfcp=0.0.19C7,0x50050763071bc5e3,0x4008400B00000000 \
        zfcp.allow_lun_scan=0

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

  4. 将 initramfs、内核、参数文件和 RHCOS 镜像传输到 z/VM,例如使用 FTP。有关如何使用 FTP 传输文件并从虚拟阅读器启动的详细信息,请参阅在 IBM Z® 上启动安装以在 z/VM 中安装 RHEL

  5. 将文件穿孔到将成为引导节点的 z/VM 来宾虚拟机的虚拟阅读器。

    请参阅 IBM 文档中的PUNCH

    您可以使用 CP PUNCH 命令,或者如果您使用 Linux,则可以使用vmur命令在两个 z/VM 来宾虚拟机之间传输文件。

  6. 登录引导机器上的 CMS。

  7. 从阅读器 IPL 引导机器。

    $ ipl c

    请参阅 IBM 文档中的IPL

  8. 对集群中的其他机器重复此过程。

高级 RHCOS 安装参考

本节说明网络配置和其他高级选项,这些选项允许您修改 Red Hat Enterprise Linux CoreOS (RHCOS) 手动安装过程。下表描述了您可以与 RHCOS 实时安装程序和coreos-installer命令一起使用的内核参数和命令行选项。

ISO 安装的网络和绑定选项

如果您从 ISO 镜像安装 RHCOS,则可以在引导镜像时手动添加内核参数以配置节点的网络。如果未指定网络参数,则当 RHCOS 检测到需要网络来获取 Ignition 配置文件时,DHCP 会在 initramfs 中激活。

手动添加网络参数时,还必须添加rd.neednet=1内核参数才能在 initramfs 中启动网络。

以下信息提供在您的 RHCOS 节点上为 ISO 安装配置网络和绑定的示例。这些示例描述了如何使用ip=nameserver=bond=内核参数。

添加内核参数的顺序很重要:ip=nameserver=,然后是bond=

网络选项在系统启动期间传递给dracut工具。有关dracut支持的网络选项的更多信息,请参阅dracut.cmdline 手册页

以下示例是 ISO 安装的网络选项。

配置 DHCP 或静态 IP 地址

要配置 IP 地址,可以使用 DHCP (ip=dhcp) 或设置单个静态 IP 地址 (ip=<host_ip>)。如果设置静态 IP,则必须在每个节点上标识 DNS 服务器 IP 地址 (nameserver=<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

当您使用 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=条目来指定多个网络接口。

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
配置默认网关和路由

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

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

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

    ip=::10.10.10.254::::
  • 输入以下命令配置附加网络的路由

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

    ip=enp2s0.100:dhcp
    vlan=enp2s0.100:enp2s0
提供多个 DNS 服务器

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

nameserver=1.1.1.1
nameserver=8.8.8.8
将多个网络接口绑定到单个接口

可选:您可以使用bond=选项将多个网络接口绑定到单个接口。请参考以下示例

  • 配置绑定接口的语法为:bond=<name>[:<network_interfaces>][:options]

    <name>是绑定设备名称(bond0),<network_interfaces>表示物理(以太网)接口的逗号分隔列表(em1,em2),而options是绑定选项的逗号分隔列表。输入modinfo bonding查看可用选项。

  • 当您使用bond=创建绑定接口时,必须指定如何分配 IP 地址以及绑定接口的其他信息。

    • 要将绑定接口配置为使用 DHCP,请将绑定的 IP 地址设置为dhcp。例如

      bond=bond0:em1,em2:mode=active-backup
      ip=bond0:dhcp
    • 要将绑定接口配置为使用静态 IP 地址,请输入所需的特定 IP 地址和相关信息。例如

bond=bond0:em1,em2:mode=active-backup,fail_over_mac=1
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:bond0:none

在主动-备份模式下,始终设置fail_over_mac=1选项,以避免使用共享 OSA/RoCE 卡时出现问题。

将多个网络接口绑定到单个接口

可选:您可以使用vlan=参数在绑定接口上配置 VLAN 并使用 DHCP,例如

ip=bond0.100:dhcp
bond=bond0:em1,em2:mode=active-backup
vlan=bond0.100:bond0

使用以下示例配置具有 VLAN 的绑定接口并使用静态 IP 地址

ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:bond0.100:none
bond=bond0:em1,em2:mode=active-backup
vlan=bond0.100:bond0
使用网络团队

可选:您可以使用team=参数使用网络团队作为绑定的替代方案

  • 配置团队接口的语法为:team=name[:network_interfaces]

    name是团队设备名称(team0),network_interfaces表示物理(以太网)接口的逗号分隔列表(em1, em2)。

当 RHCOS 切换到即将发布的 RHEL 版本时,计划弃用团队功能。更多信息,请参阅此Red Hat 知识库文章

使用以下示例配置网络团队

team=team0:em1,em2
ip=team0:dhcp

等待引导过程完成

在集群节点首次启动到已安装到磁盘的持久性 RHCOS 环境后,OpenShift Container Platform 引导过程开始。通过 Ignition 配置文件提供的配置信息用于初始化引导过程并在机器上安装 OpenShift Container Platform。您必须等待引导过程完成。

先决条件
  • 您已创建集群的 Ignition 配置文件。

  • 您已配置合适的网络、DNS 和负载均衡基础设施。

  • 您已获得安装程序并为您的集群生成了 Ignition 配置文件。

  • 您已在集群机器上安装 RHCOS 并提供了 OpenShift Container Platform 安装程序生成的 Ignition 配置文件。

步骤
  1. 监控引导过程

    $ ./openshift-install --dir <installation_directory> wait-for bootstrap-complete \ (1)
        --log-level=info (2)
    
    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.30.3 up
    INFO Waiting up to 30m0s for bootstrapping to complete...
    INFO It is now safe to remove the bootstrap resources

    当 Kubernetes API 服务器发出信号表明它已在控制平面机器上引导时,命令成功。

  2. 引导过程完成后,从负载均衡器中移除引导机器。

    此时必须从负载均衡器中移除引导机器。您也可以移除或重新格式化引导机器本身。

使用 CLI 登录集群

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

先决条件
  • 您已部署 OpenShift Container Platform 集群。

  • 您已安装oc CLI。

步骤
  1. 导出kubeadmin凭据

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig (1)
    1 对于<installation_directory>,请指定您存储安装文件的目录的路径。
  2. 验证您可以使用导出的配置成功运行oc命令

    $ oc whoami
    示例输出
    system:admin

批准机器的证书签名请求

当您将机器添加到集群时,将为每个添加的机器生成两个挂起的证书签名请求 (CSR)。您必须确认这些 CSR 已被批准,或者如有必要,自行批准它们。必须先批准客户端请求,然后批准服务器请求。

先决条件
  • 您已将机器添加到集群。

步骤
  1. 确认集群识别这些机器

    $ oc get nodes
    示例输出
    NAME      STATUS    ROLES   AGE  VERSION
    master-0  Ready     master  63m  v1.30.3
    master-1  Ready     master  63m  v1.30.3
    master-2  Ready     master  64m  v1.30.3

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

    在批准某些 CSR 之前,上述输出可能不包括计算节点(也称为工作节点)。

  2. 查看挂起的 CSR,并确保您看到为添加到集群的每台机器的客户端请求显示“Pending”(挂起)或“Approved”(已批准)状态

    $ oc get csr
    示例输出
    NAME        AGE     REQUESTOR                                                                   CONDITION
    csr-8b2br   15m     system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
    csr-8vnps   15m     system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
    ...

    在此示例中,两台机器正在加入集群。您可能会在列表中看到更多已批准的 CSR。

  3. 如果 CSR 未被批准,则在您添加的所有机器的挂起 CSR 都处于“Pending”(挂起)状态后,批准集群机器的 CSR

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

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

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

      $ oc adm certificate approve <csr_name> (1)
      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

      某些 Operators 只有在批准某些 CSR 后才能可用。

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

    $ oc get csr
    示例输出
    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
    ...
  5. 如果剩余的 CSR 未获批准且状态为Pending,请批准集群机器的 CSR

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

      $ oc adm certificate approve <csr_name> (1)
      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
  6. 批准所有客户端和服务器 CSR 后,机器将具有Ready 状态。通过运行以下命令验证此状态

    $ oc get nodes
    示例输出
    NAME      STATUS    ROLES   AGE  VERSION
    master-0  Ready     master  73m  v1.30.3
    master-1  Ready     master  73m  v1.30.3
    master-2  Ready     master  74m  v1.30.3
    worker-0  Ready     worker  11m  v1.30.3
    worker-1  Ready     worker  11m  v1.30.3

    批准服务器 CSR 后,机器可能需要几分钟才能转换为Ready 状态。

附加信息

初始 Operator 配置

控制平面初始化后,您必须立即配置一些 Operators,以便它们全部可用。

先决条件
  • 您的控制平面已初始化。

步骤
  1. 观察集群组件上线

    $ watch -n5 oc get clusteroperators
    示例输出
    NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE
    authentication                             4.17.0    True        False         False      19m
    baremetal                                  4.17.0    True        False         False      37m
    cloud-credential                           4.17.0    True        False         False      40m
    cluster-autoscaler                         4.17.0    True        False         False      37m
    config-operator                            4.17.0    True        False         False      38m
    console                                    4.17.0    True        False         False      26m
    csi-snapshot-controller                    4.17.0    True        False         False      37m
    dns                                        4.17.0    True        False         False      37m
    etcd                                       4.17.0    True        False         False      36m
    image-registry                             4.17.0    True        False         False      31m
    ingress                                    4.17.0    True        False         False      30m
    insights                                   4.17.0    True        False         False      31m
    kube-apiserver                             4.17.0    True        False         False      26m
    kube-controller-manager                    4.17.0    True        False         False      36m
    kube-scheduler                             4.17.0    True        False         False      36m
    kube-storage-version-migrator              4.17.0    True        False         False      37m
    machine-api                                4.17.0    True        False         False      29m
    machine-approver                           4.17.0    True        False         False      37m
    machine-config                             4.17.0    True        False         False      36m
    marketplace                                4.17.0    True        False         False      37m
    monitoring                                 4.17.0    True        False         False      29m
    network                                    4.17.0    True        False         False      38m
    node-tuning                                4.17.0    True        False         False      37m
    openshift-apiserver                        4.17.0    True        False         False      32m
    openshift-controller-manager               4.17.0    True        False         False      30m
    openshift-samples                          4.17.0    True        False         False      32m
    operator-lifecycle-manager                 4.17.0    True        False         False      37m
    operator-lifecycle-manager-catalog         4.17.0    True        False         False      37m
    operator-lifecycle-manager-packageserver   4.17.0    True        False         False      32m
    service-ca                                 4.17.0    True        False         False      38m
    storage                                    4.17.0    True        False         False      37m
  2. 配置不可用的 Operators。

禁用默认 OperatorHub 目录源

在 OpenShift Container Platform 安装期间,默认情况下会为 OperatorHub 配置从 Red Hat 和社区项目提供的 Red Hat 内容的 Operator 目录。在受限网络环境中,您必须以集群管理员身份禁用默认目录。

步骤
  • 通过将disableAllDefaultSources: true添加到OperatorHub对象来禁用默认目录的源

    $ oc patch OperatorHub cluster --type json \
        -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'

或者,您可以使用 Web 控制台来管理目录源。在**管理** → **集群设置** → **配置** → **OperatorHub**页面中,单击**源**选项卡,您可以在其中创建、更新、删除、禁用和启用各个源。

镜像注册表存储配置

对于不提供默认存储的平台,镜像注册表 Operator 最初不可用。安装后,您必须配置注册表以使用存储,以便注册表 Operator 可用。

显示了配置持久卷的说明,这是生产集群所必需的。在适用情况下,将显示有关将空目录配置为存储位置的说明,这仅适用于非生产集群。

提供了其他说明,用于在升级期间使用Recreate滚动策略允许镜像注册表使用块存储类型。

为 IBM Z 配置注册表存储

作为集群管理员,安装后您必须配置注册表以使用存储。

先决条件
  • 您可以作为具有cluster-admin角色的用户访问集群。

  • 您在 IBM Z® 上有一个集群。

  • 您已为集群预配了持久性存储,例如 Red Hat OpenShift Data Foundation。

    当您只有一个副本时,OpenShift Container Platform 支持镜像注册表存储的ReadWriteOnce访问。ReadWriteOnce访问还要求注册表使用Recreate滚动策略。要部署支持高可用性的具有两个或更多副本的镜像注册表,需要ReadWriteMany访问。

  • 必须具有 100Gi 容量。

步骤
  1. 要配置注册表以使用存储,请更改configs.imageregistry/cluster资源中的spec.storage.pvc

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

  2. 验证您没有注册表 pod

    $ oc get pod -n openshift-image-registry -l docker-registry=default
    示例输出
    No resources found in openshift-image-registry namespace

    如果您的输出中确实有注册表 pod,则无需继续执行此过程。

  3. 检查注册表配置

    $ oc edit configs.imageregistry.operator.openshift.io
    示例输出
    storage:
      pvc:
        claim:

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

  4. 检查clusteroperator状态

    $ oc get clusteroperator image-registry
    示例输出
    NAME             VERSION              AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
    image-registry   4.17                 True        False         False      6h50m
  5. 确保您的注册表设置为托管,以启用构建和推送镜像。

    • 运行

      $ oc edit configs.imageregistry/cluster

      然后,更改行

      managementState: Removed

      managementState: Managed

在非生产集群中为镜像注册表配置存储

您必须为镜像注册表 Operator 配置存储。对于非生产集群,您可以将镜像注册表设置为空目录。如果您这样做,如果您重新启动注册表,所有镜像都将丢失。

步骤
  • 要将镜像注册表存储设置为空目录

    $ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"storage":{"emptyDir":{}}}}'

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

    如果您在镜像注册表 Operator 初始化其组件之前运行此命令,则oc patch命令将失败并显示以下错误

    Error from server (NotFound): configs.imageregistry.operator.openshift.io "cluster" not found

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

完成用户预配基础设施上的安装

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

先决条件
  • 您的控制平面已初始化。

  • 您已完成初始 Operator 配置。

步骤
  1. 使用以下命令确认所有集群组件都已上线

    $ watch -n5 oc get clusteroperators
    示例输出
    NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE
    authentication                             4.17.0    True        False         False      19m
    baremetal                                  4.17.0    True        False         False      37m
    cloud-credential                           4.17.0    True        False         False      40m
    cluster-autoscaler                         4.17.0    True        False         False      37m
    config-operator                            4.17.0    True        False         False      38m
    console                                    4.17.0    True        False         False      26m
    csi-snapshot-controller                    4.17.0    True        False         False      37m
    dns                                        4.17.0    True        False         False      37m
    etcd                                       4.17.0    True        False         False      36m
    image-registry                             4.17.0    True        False         False      31m
    ingress                                    4.17.0    True        False         False      30m
    insights                                   4.17.0    True        False         False      31m
    kube-apiserver                             4.17.0    True        False         False      26m
    kube-controller-manager                    4.17.0    True        False         False      36m
    kube-scheduler                             4.17.0    True        False         False      36m
    kube-storage-version-migrator              4.17.0    True        False         False      37m
    machine-api                                4.17.0    True        False         False      29m
    machine-approver                           4.17.0    True        False         False      37m
    machine-config                             4.17.0    True        False         False      36m
    marketplace                                4.17.0    True        False         False      37m
    monitoring                                 4.17.0    True        False         False      29m
    network                                    4.17.0    True        False         False      38m
    node-tuning                                4.17.0    True        False         False      37m
    openshift-apiserver                        4.17.0    True        False         False      32m
    openshift-controller-manager               4.17.0    True        False         False      30m
    openshift-samples                          4.17.0    True        False         False      32m
    operator-lifecycle-manager                 4.17.0    True        False         False      37m
    operator-lifecycle-manager-catalog         4.17.0    True        False         False      37m
    operator-lifecycle-manager-packageserver   4.17.0    True        False         False      32m
    service-ca                                 4.17.0    True        False         False      38m
    storage                                    4.17.0    True        False         False      37m

    或者,以下命令会在所有集群可用时通知您。它还会检索和显示凭据

    $ ./openshift-install --dir <installation_directory> wait-for install-complete (1)
    1 对于<installation_directory>,请指定您存储安装文件的目录的路径。
    示例输出
    INFO Waiting up to 30m0s for the cluster to initialize...

    当集群版本 Operator 完成从 Kubernetes API 服务器部署 OpenShift Container Platform 集群后,该命令将成功。

    • 安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后会在那时续订。如果集群在续订证书之前关闭,并且在 24 小时后重新启动集群,则集群会自动恢复过期的证书。例外情况是,您必须手动批准挂起的node-bootstrapper证书签名请求 (CSR) 以恢复 kubelet 证书。有关更多信息,请参阅有关“从过期的控制平面证书中恢复”的文档。

    • 建议您在生成 Ignition 配置文件后 12 小时内使用它们,因为 24 小时证书会在集群安装后 16 到 22 小时之间轮换。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中运行证书更新时安装失败。

  2. 确认 Kubernetes API 服务器正在与 Pod 通信。

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

      $ oc get pods --all-namespaces
      示例输出
      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
      ...
    2. 使用以下命令查看先前命令输出中列出的 Pod 的日志

      $ oc logs <pod_name> -n <namespace> (1)
      1 指定 Pod 名称和命名空间,如先前命令的输出所示。

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

  3. 对于使用光纤通道协议 (FCP) 的安装,需要执行其他步骤才能启用多路径。请勿在安装过程中启用多路径。

    有关更多信息,请参阅安装后机器配置任务文档中的“在 RHCOS 上使用内核参数启用多路径”。

  4. 集群注册页面上注册您的集群。

验证

如果您在 OpenShift Container Platform 引导过程中启用了安全启动,则需要执行以下验证步骤

  1. 通过运行以下命令调试节点

    $ oc debug node/<node_name>
    chroot /host
  2. 通过运行以下命令确认是否启用了安全启动

    $ cat /sys/firmware/ipl/secure
    示例输出
    1 (1)
    
    1 如果启用了安全启动,则值为1;如果未启用安全启动,则值为0

后续步骤