×

在 OpenShift Container Platform 4.17 版本中,您可以使用自定义网络配置在安装程序在 IBM Cloud® 上配置的基础架构上安装集群。通过自定义您的网络配置,您的集群可以与环境中现有的 IP 地址分配共存,并与现有的 MTU 和 VXLAN 配置集成。要自定义安装,请在安装集群之前修改install-config.yaml文件中的参数。

您必须在安装期间设置大多数网络配置参数,并且您只能修改正在运行的集群中的kubeProxy配置参数。

先决条件

OpenShift Container Platform 的互联网访问

在 OpenShift Container Platform 4.17 中,您需要访问互联网才能安装集群。

您必须具有互联网访问权限才能

  • 访问OpenShift 集群管理器以下载安装程序并执行订阅管理。如果集群具有互联网访问权限并且您未禁用遥测,则该服务会自动授权您的集群。

  • 访问Quay.io以获取安装集群所需的软件包。

  • 获取执行集群更新所需的软件包。

如果您的集群无法直接访问互联网,您可以在您配置的某些类型的基础设施上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它来填充镜像注册表中的安装包。对于某些安装类型,您安装集群的环境不需要访问互联网。在更新集群之前,请更新镜像注册表的内容。

生成集群节点SSH访问的密钥对

在 OpenShift Container Platform 安装过程中,您可以向安装程序提供 SSH 公钥。该密钥通过 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS (RHCOS) 节点,并用于验证对节点的 SSH 访问。该密钥将添加到每个节点上 `core` 用户的 `~/.ssh/authorized_keys` 列表中,从而启用无密码身份验证。

密钥传递到节点后,您可以使用密钥对以 `core` 用户身份通过 SSH 登录到 RHCOS 节点。要通过 SSH 访问节点,SSH 必须管理本地用户的私钥身份。

如果您想 SSH 登录到您的集群节点以执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。`./openshift-install gather` 命令也需要集群节点上存在 SSH 公钥。

在需要灾难恢复和调试的生产环境中,请勿跳过此过程。

您必须使用本地密钥,而不是使用平台特定方法(例如 AWS 密钥对)配置的密钥。

步骤
  1. 如果您在本地机器上没有现有的 SSH 密钥对用于身份验证到您的集群节点,请创建一个。例如,在使用 Linux 操作系统的计算机上,运行以下命令:

    $ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> (1)
    1 指定新 SSH 密钥的路径和文件名,例如 `~/.ssh/id_ed25519`。如果您有现有的密钥对,请确保您的公钥位于 `~/.ssh` 目录中。

    如果您计划安装使用已提交给 NIST 用于 FIPS 140-2/140-3 验证的 RHEL 加密库的 OpenShift Container Platform 集群(仅限于 `x86_64`、`ppc64le` 和 `s390x` 架构),请不要创建使用 `ed25519` 算法的密钥。而是创建使用 `rsa` 或 `ecdsa` 算法的密钥。

  2. 查看 SSH 公钥

    $ cat <path>/<file_name>.pub

    例如,运行以下命令查看 `~/.ssh/id_ed25519.pub` 公钥:

    $ cat ~/.ssh/id_ed25519.pub
  3. 如果尚未添加,请将 SSH 私钥身份添加到本地用户的 SSH 代理。要对集群节点进行无密码 SSH 身份验证,或者要使用 `./openshift-install gather` 命令,都需要 SSH 代理管理密钥。

    在某些发行版中,默认的 SSH 私钥身份(例如 `~/.ssh/id_rsa` 和 `~/.ssh/id_dsa`)会自动管理。

    1. 如果本地用户的 `ssh-agent` 进程尚未运行,请将其作为后台任务启动:

      $ eval "$(ssh-agent -s)"
      示例输出
      Agent pid 31874

      如果您的集群处于 FIPS 模式,则只能使用符合 FIPS 的算法生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。

  4. 将您的 SSH 私钥添加到 `ssh-agent`

    $ ssh-add <path>/<file_name> (1)
    1 指定 SSH 私钥的路径和文件名,例如 `~/.ssh/id_ed25519`
    示例输出
    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
  • 安装 OpenShift Container Platform 时,请向安装程序提供 SSH 公钥。

获取安装程序

在安装 OpenShift Container Platform 之前,请在您用于安装的主机上下载安装文件。

先决条件
  • 您需要一台运行 Linux 或 macOS 的计算机,并具有 500 MB 的本地磁盘空间。

步骤
  1. 转到 Red Hat Hybrid Cloud Console 上的 集群类型 页面。如果您有 Red Hat 帐户,请使用您的凭据登录。如果没有,请创建一个帐户。

  2. 从页面的“自己运行”部分选择您的基础设施提供商。

  3. 从“OpenShift 安装程序”下的下拉菜单中选择您的主机操作系统和架构,然后单击“下载安装程序”。

  4. 将下载的文件放在您想要存储安装配置文件的目录中。

    • 安装程序会在您用于安装集群的计算机上创建多个文件。安装集群完成后,您必须保留安装程序和安装程序创建的文件。这两个文件都是删除集群所必需的。

    • 即使集群在安装过程中失败,删除安装程序创建的文件也不会删除您的集群。要删除您的集群,请完成针对您的特定云提供商的 OpenShift Container Platform 卸载过程。

  5. 解压缩安装程序。例如,在使用 Linux 操作系统的计算机上,运行以下命令:

    $ tar -xvf openshift-install-linux.tar.gz
  6. 从 Red Hat OpenShift 集群管理器下载您的安装 pull secret。此 pull secret 允许您对包含的授权机构提供的服务进行身份验证,包括提供 OpenShift Container Platform 组件容器镜像的 Quay.io。

或者,您可以从 Red Hat 客户门户 检索安装程序,您可以在其中指定要下载的安装程序版本。但是,您必须拥有有效的订阅才能访问此页面。

导出 API 密钥

您必须将创建的 API 密钥设置为全局变量;安装程序在启动期间会读取该变量以设置 API 密钥。

先决条件
  • 您已为您的 IBM Cloud® 帐户创建了用户 API 密钥或服务 ID API 密钥。

步骤
  • 将您的帐户 API 密钥导出为全局变量:

    $ export IC_API_KEY=<api_key>

您必须按指定设置变量名;安装程序需要在启动时存在该变量名。

创建安装配置文件

您可以自定义您在 IBM Cloud® 上安装的 OpenShift Container Platform 集群。

先决条件
  • 您拥有 OpenShift Container Platform 安装程序和集群的 pull secret。

步骤
  1. 创建 `install-config.yaml` 文件。

    1. 更改到包含安装程序的目录并运行以下命令:

      $ ./openshift-install create install-config --dir <installation_directory> (1)
      1 对于 ``,请指定存储安装程序创建文件的目录名。

      指定目录时:

      • 验证该目录是否具有 `execute` 权限。此权限是安装目录下运行 Terraform 二进制文件所必需的。

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

    2. 在提示符处,提供您的云的配置详细信息。

      1. 可选:选择一个 SSH 密钥来访问您的集群机器。

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

      2. 选择 **ibmcloud** 作为目标平台。

      3. 选择要将集群部署到的区域。

      4. 选择要将集群部署到的基础域。基础域对应于您为集群创建的公共 DNS 区域。

      5. 输入集群的描述性名称。

  2. 修改 install-config.yaml 文件。您可以在“安装配置参数”部分找到有关可用参数的更多信息。

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

    install-config.yaml 文件在安装过程中会被使用。如果您想重复使用该文件,则必须立即备份。

集群安装的最低资源要求

每个集群机器必须满足以下最低要求

表 1. 最低资源要求
机器 操作系统 vCPU 虚拟 RAM 存储 每秒输入/输出 (IOPS)

引导程序

RHCOS

4

16 GB

100 GB

300

控制平面

RHCOS

4

16 GB

100 GB

300

计算

RHCOS

2

8 GB

100 GB

300

从 OpenShift Container Platform 4.13 版本开始,RHCOS 基于 RHEL 9.2 版本,这更新了微架构要求。以下列表包含每种架构所需的最低指令集架构 (ISA):

  • x86-64 架构需要 x86-64-v2 ISA

  • ARM64 架构需要 ARMv8.0-A ISA

  • IBM Power 架构需要 Power 9 ISA

  • s390x 架构需要 z14 ISA

更多信息,请参见 RHEL 架构

如果您的平台的实例类型满足集群机器的最低要求,则支持在 OpenShift Container Platform 中使用它。

IBM Cloud 的测试实例类型

以下 IBM Cloud® 实例类型已通过 OpenShift Container Platform 测试。

机器系列
  • bx2-8x32

  • bx2d-4x16

  • bx3d-4x20

  • cx2-8x16

  • cx2d-4x8

  • cx3d-8x20

  • gx2-8x64x1v100

  • gx3-16x80x1l4

  • gx3d-160x1792x8h100

  • mx2-8x64

  • mx2d-4x32

  • mx3d-4x40

  • ox2-8x64

  • ux2d-2x56

  • vx2d-4x56

其他资源

IBM Cloud 的自定义 install-config.yaml 文件示例

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

此 YAML 文件示例仅供参考。您必须使用安装程序获取您的 install-config.yaml 文件,然后对其进行修改。

apiVersion: v1
baseDomain: example.com (1)
controlPlane:  (2) (3)
  hyperthreading: Enabled (4)
  name: master
  platform:
    ibmcloud: {}
  replicas: 3
compute:  (2) (3)
- hyperthreading: Enabled (4)
  name: worker
  platform:
    ibmcloud: {}
  replicas: 3
metadata:
  name: test-cluster (1)
networking: (2)
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  machineNetwork:
  - cidr: 10.0.0.0/16
  networkType: OVNKubernetes (5)
  serviceNetwork:
  - 172.30.0.0/16
platform:
  ibmcloud:
    region: us-south (1)
credentialsMode: Manual
publish: External
pullSecret: '{"auths": ...}' (1)
fips: false (6)
sshKey: ssh-ed25519 AAAA... (7)
1 必需。安装程序会提示您输入此值。
2 如果您没有提供这些参数和值,安装程序将提供默认值。
3 controlPlane 部分是一个单一映射,但 compute 部分是一系列映射。为了满足不同数据结构的要求,compute 部分的第一行必须以连字符 - 开头,而 controlPlane 部分的第一行则不能。仅使用一个控制平面池。
4 启用或禁用同时多线程处理,也称为超线程。默认情况下,启用同时多线程处理以提高机器内核的性能。您可以将其参数值设置为 Disabled 来禁用它。如果您在某些集群机器中禁用了同时多线程处理,则必须在所有集群机器中禁用它。

如果您禁用同时多线程处理,请确保您的容量规划考虑到了机器性能的大幅下降。如果您禁用同时多线程处理,请为您的机器使用更大的机器类型,例如 n1-standard-8

5 要安装的集群网络插件。默认值 OVNKubernetes 是唯一受支持的值。
6 启用或禁用 FIPS 模式。默认情况下,FIPS 模式未启用。如果启用了 FIPS 模式,则 OpenShift Container Platform 运行的 Red Hat Enterprise Linux CoreOS (RHCOS) 机器将绕过默认的 Kubernetes 加密套件,并改用随 RHCOS 提供的加密模块。

要为您的集群启用 FIPS 模式,您必须从配置为在 FIPS 模式下运行的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 上配置 FIPS 模式的更多信息,请参见 在 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 加密库。

7 可选:提供您用于访问集群中机器的 sshKey 值。

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

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

生产环境可能会拒绝直接访问互联网,而是提供 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 证书。集群网络操作员 (Cluster Network Operator) 随后创建一个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对象,不能创建其他代理。

手动创建 IAM

安装集群需要 Cloud Credential Operator (CCO) 在手动模式下运行。虽然安装程序将 CCO 配置为手动模式,但您必须为您的云提供商指定身份和访问管理密钥。

您可以使用 Cloud Credential Operator (CCO) 实用程序 (ccoctl) 创建所需的 IBM Cloud® 资源。

先决条件
  • 您已配置ccoctl二进制文件。

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

步骤
  1. 编辑install-config.yaml配置文件,使其包含设置为ManualcredentialsMode参数。

    install-config.yaml配置文件示例
    apiVersion: v1
    baseDomain: cluster1.example.com
    credentialsMode: Manual (1)
    compute:
    - architecture: amd64
      hyperthreading: Enabled
    1 添加此行是为了将credentialsMode参数设置为Manual
  2. 要生成清单,请从包含安装程序的目录运行以下命令:

    $ ./openshift-install create manifests --dir <installation_directory>
  3. 从包含安装程序的目录中,通过运行以下命令设置包含发行版镜像的$RELEASE_IMAGE变量:

    $ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
  4. 通过运行以下命令从 OpenShift Container Platform 发行版镜像中提取CredentialsRequest自定义资源 (CR) 列表:

    $ oc adm release extract \
      --from=$RELEASE_IMAGE \
      --credentials-requests \
      --included \(1)
      --install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \(2)
      --to=<path_to_directory_for_credentials_requests> (3)
    1 --included参数仅包含特定集群配置所需的清单。
    2 指定install-config.yaml文件的位置。
    3 指定要存储CredentialsRequest对象的目录的路径。如果指定的目录不存在,则此命令将创建它。

    此命令为每个CredentialsRequest对象创建一个 YAML 文件。

    CredentialsRequest对象示例
      apiVersion: cloudcredential.openshift.io/v1
      kind: CredentialsRequest
      metadata:
        labels:
          controller-tools.k8s.io: "1.0"
        name: openshift-image-registry-ibmcos
        namespace: openshift-cloud-credential-operator
      spec:
        secretRef:
          name: installer-cloud-credentials
          namespace: openshift-image-registry
        providerSpec:
          apiVersion: cloudcredential.openshift.io/v1
          kind: IBMCloudProviderSpec
          policies:
          - attributes:
            - name: serviceName
              value: cloud-object-storage
            roles:
            - crn:v1:bluemix:public:iam::::role:Viewer
            - crn:v1:bluemix:public:iam::::role:Operator
            - crn:v1:bluemix:public:iam::::role:Editor
            - crn:v1:bluemix:public:iam::::serviceRole:Reader
            - crn:v1:bluemix:public:iam::::serviceRole:Writer
          - attributes:
            - name: resourceType
              value: resource-group
            roles:
            - crn:v1:bluemix:public:iam::::role:Viewer
  5. 为每个凭据请求创建服务 ID,分配定义的策略,创建一个 API 密钥并生成密钥。

    $ ccoctl ibmcloud create-service-id \
      --credentials-requests-dir=<path_to_credential_requests_directory> \(1)
      --name=<cluster_name> \(2)
      --output-dir=<installation_directory> \(3)
      --resource-group-name=<resource_group_name> (4)
    1 指定包含组件CredentialsRequest对象文件的目录。
    2 指定 OpenShift Container Platform 集群的名称。
    3 可选:指定您希望ccoctl实用程序创建对象的目录。默认情况下,该实用程序在运行命令的目录中创建对象。
    4 可选:指定用于限定访问策略的资源组的名称。

    如果您的集群使用由TechPreviewNoUpgrade功能集启用的技术预览功能,则必须包含--enable-tech-preview参数。

    如果提供了不正确的资源组名称,则安装将在引导阶段失败。要查找正确的资源组名称,请运行以下命令:

    $ grep resourceGroupName <installation_directory>/manifests/cluster-infrastructure-02-config.yml
验证
  • 确保在集群的manifests目录中生成了相应的密钥。

网络配置阶段

在安装 OpenShift Container Platform 之前,有两个阶段可以自定义网络配置。

阶段 1

在创建清单文件之前,您可以自定义install-config.yaml文件中的以下网络相关字段:

  • networking.networkType

  • networking.clusterNetwork

  • networking.serviceNetwork

  • networking.machineNetwork

    有关更多信息,请参见“安装配置参数”。

    networking.machineNetwork设置为与首选子网所在的无类域间路由 (CIDR) 匹配。

    CIDR 范围172.17.0.0/16libVirt保留。您不能对集群中的网络使用任何与172.17.0.0/16 CIDR 范围重叠的其他 CIDR 范围。

阶段 2

运行openshift-install create manifests创建清单文件后,您可以仅使用要修改的字段定义自定义的集群网络操作员清单。您可以使用清单来指定高级网络配置。

在阶段 2 中,您不能覆盖在阶段 1 中在install-config.yaml文件中指定的数值。但是,您可以在阶段 2 中自定义网络插件。

指定高级网络配置

您可以使用高级网络配置为您的网络插件将您的集群集成到您现有的网络环境中。

您只能在安装集群之前指定高级网络配置。

不支持通过修改安装程序创建的 OpenShift Container Platform 清单文件来自定义网络配置。支持应用您创建的清单文件,如下所示。

先决条件
  • 您已创建install-config.yaml文件并完成了对其的任何修改。

步骤
  1. 更改到包含安装程序的目录并创建清单:

    $ ./openshift-install create manifests --dir <installation_directory> (1)
    1 <installation_directory>指定包含集群install-config.yaml文件的目录的名称。
  2. <installation_directory>/manifests/目录中创建一个名为cluster-network-03-config.yml的高级网络配置存根清单文件。

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
  3. cluster-network-03-config.yml文件中指定集群的高级网络配置,例如以下示例:

    为 OVN-Kubernetes 网络提供程序启用 IPsec。
    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      defaultNetwork:
        ovnKubernetesConfig:
          ipsecConfig:
            mode: Full
  4. 可选:备份manifests/cluster-network-03-config.yml文件。当您创建 Ignition 配置文件时,安装程序会使用manifests/目录。

集群网络操作员配置

集群网络的配置指定为集群网络操作员 (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) 的字段描述如下表所示

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

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对象的取值定义如下表所示

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

类型

字符串

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

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

ovnKubernetesConfig

对象

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

OVN-Kubernetes 网络插件的配置

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

表 4. 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) 成功推出更改之前,您可能会遇到工作负载和服务流量的一些中断。

表 5. 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/14并且clusterNetwork.hostPrefix值为/23,则节点的最大数量为2^(23-14)=512

默认值为100.64.0.0/16

表 6. 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

表 7. 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 设施,例如kern,如 RFC5424 中所定义。默认值为local0

表 8. 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伪装地址。

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

internalMasqueradeSubnet

字符串

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

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

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

internalMasqueradeSubnet

字符串

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

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

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

mode

字符串

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

  • Disabled:在集群节点上未启用IPsec。

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

  • Full:对于Pod流量和与外部主机的网络流量,启用IPsec。

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

部署集群

您可以在兼容的云平台上安装OpenShift Container Platform。

您只能在初始安装期间运行安装程序的create cluster命令一次。

先决条件
  • 您已配置了一个帐户,该帐户与托管集群的云平台相关联。

  • 您拥有 OpenShift Container Platform 安装程序和集群的 pull secret。

  • 您已验证主机上的云提供商帐户是否具有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示一条显示缺少权限的错误消息。

步骤
  • 更改到包含安装程序的目录并初始化集群部署

    $ ./openshift-install create cluster --dir <installation_directory> \ (1)
        --log-level=info (2)
    
    1 对于<installation_directory>,请指定自定义./install-config.yaml文件的路径。
    2 要查看不同的安装详细信息,请指定warndebugerror代替info
验证

集群部署成功完成后

  • 终端将显示访问集群的说明,包括指向Web控制台的链接以及kubeadmin用户的凭据。

  • 凭据信息也会输出到<installation_directory>/.openshift_install.log

请勿删除安装程序或安装程序创建的文件。两者都是删除集群所必需的。

示例输出
...
INFO Install complete!
INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig'
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com
INFO Login to the console with user: "kubeadmin", and password: "password"
INFO Time elapsed: 36m22s
  • 安装程序生成的Ignition配置文件包含在24小时后过期的证书,届时会续订这些证书。如果在续订证书之前关闭集群,并且在24小时后重新启动集群,则集群会自动恢复过期的证书。例外情况是,您必须手动批准挂起的node-bootstrapper证书签名请求 (CSR) 以恢复kubelet证书。有关更多信息,请参阅有关“从过期的控制平面证书中恢复”的文档。

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

安装OpenShift CLI

您可以安装OpenShift CLI (oc) 以通过命令行界面与OpenShift Container Platform进行交互。您可以在Linux、Windows或macOS上安装oc

如果您安装了早期版本的oc,则无法使用它来完成OpenShift Container Platform 4.17中的所有命令。下载并安装新版本的oc

在Linux上安装OpenShift CLI

您可以使用以下步骤在Linux上安装OpenShift CLI (oc) 二进制文件。

步骤
  1. 导航到Red Hat客户门户网站上的OpenShift Container Platform下载页面

  2. 从“产品变体”下拉列表中选择体系结构。

  3. 从“版本”下拉列表中选择相应的版本。

  4. 单击OpenShift v4.17 Linux Clients条目旁边的立即下载,然后保存文件。

  5. 解压缩存档

    $ tar xvf <file>
  6. oc二进制文件放置在PATH上的目录中。

    要检查您的PATH,请执行以下命令

    $ echo $PATH
验证
  • 安装OpenShift CLI后,可以使用oc命令。

    $ oc <command>

在Windows上安装OpenShift CLI

您可以使用以下步骤在Windows上安装OpenShift CLI (oc) 二进制文件。

步骤
  1. 导航到Red Hat客户门户网站上的OpenShift Container Platform下载页面

  2. 从“版本”下拉列表中选择相应的版本。

  3. 单击OpenShift v4.17 Windows Client条目旁边的立即下载,然后保存文件。

  4. 使用ZIP程序解压缩存档。

  5. oc二进制文件移动到PATH上的目录。

    要检查您的PATH,请打开命令提示符并执行以下命令

    C:\> path
验证
  • 安装OpenShift CLI后,可以使用oc命令。

    C:\> oc <command>

在macOS上安装OpenShift CLI

您可以使用以下步骤在macOS上安装OpenShift CLI (oc) 二进制文件。

步骤
  1. 导航到Red Hat客户门户网站上的OpenShift Container Platform下载页面

  2. 从“版本”下拉列表中选择相应的版本。

  3. 单击OpenShift v4.17 macOS Clients条目旁边的立即下载,然后保存文件。

    对于macOS arm64,请选择OpenShift v4.17 macOS arm64 Client条目。

  4. 解压缩存档。

  5. oc二进制文件移动到PATH上的目录。

    要检查您的PATH,请打开终端并执行以下命令

    $ echo $PATH
验证
  • 使用oc命令验证您的安装

    $ oc <command>

使用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
其他资源

OpenShift Container Platform 的遥测访问

在 OpenShift Container Platform 4.17 中,默认运行的遥测服务用于提供集群健康状况和更新成功情况的指标,需要访问互联网。如果您的集群已连接到互联网,则遥测服务会自动运行,并且您的集群将注册到OpenShift 集群管理器

确认您的OpenShift 集群管理器清单正确无误后(无论是由遥测服务自动维护还是手动使用 OpenShift 集群管理器维护),请使用订阅监控来跟踪您在帐户或多集群级别上的 OpenShift Container Platform 订阅。

后续步骤