×

在 OpenShift Container Platform 4.17 中,您可以使用基于代理的安装程序在 Oracle® Cloud Infrastructure (OCI) 上安装集群,以便您可以在支持专用、混合、公共和多个云环境的基础设施上运行集群工作负载。

在 OCI 上安装集群支持虚拟机 (VM) 和裸机。

基于代理的安装程序和 OCI 概述

您可以使用基于代理的安装程序在 Oracle® Cloud Infrastructure (OCI) 上安装 OpenShift Container Platform 集群。Red Hat 和 Oracle 对在 OpenShift Container Platform 集群中运行 OCI 工作负载进行了测试、验证和支持。

基于代理的安装程序提供了 Assisted Installation 服务的易用性,但能够在连接或断开连接的环境中安装集群。

下图显示了连接和断开连接环境的工作流程

Image of a high-level workflow for using the Agent-based installer in a connected environment to install a cluster on OCI
图 1. 在连接的环境中使用基于代理的安装程序在 OCI 上安装集群的工作流程
Image of a high-level workflow for using the Agent-based installer in a disconnected environment to install a cluster on OCI
图 2. 在断开连接的环境中使用基于代理的安装程序在 OCI 上安装集群的工作流程

OCI 提供可以满足您的法规遵从性、性能和成本效益需求的服务。OCI 支持 64 位x86 实例和 64 位ARM 实例。此外,OCI 还提供 OCVS 服务,您可以使用它将 VMware 工作负载迁移到 OCI,而无需对应用程序进行大量的重新架构。

建议为引导磁盘选择非易失性内存(NVMe)驱动器或固态硬盘(SSD),因为这些驱动器为引导磁盘提供了低延迟和高吞吐量。

通过在 OCI 上运行您的 OpenShift Container Platform 集群,您可以访问以下功能:

  • 计算灵活的形状,您可以在其中自定义虚拟机的 Oracle® CPU (OCPU) 和内存资源数量。通过访问此功能,集群的工作负载可以在资源平衡的环境中执行操作。您可以通过访问 Red Hat 生态系统目录门户上的 Oracle 页面查找所有 RHEL 认证的 OCI 形状。

  • 块卷存储,您可以在其中为存储卷配置缩放和自动调整设置,以便块卷服务自动调整性能级别以优化性能。

  • Oracle® Cloud VMware Solution (OCVS),您可以在运行在 VMware® vSphere 软件定义数据中心 (SDDC) 的公有云环境中部署集群。您仍然可以完全控制您的 VMware vSphere 环境,但是您可以使用 OCI 服务来改进您在灵活、可扩展和安全的基础设施上的应用程序。

为了确保在 OCI 和 OCVS 服务上运行的集群工作负载获得最佳性能,请确保块卷的卷性能单元 (VPU) 能够满足您的工作负载需求。以下列表提供了一些关于选择特定性能需求所需的 VPU 的指导:

  • 测试或概念验证环境:100 GB 和 20 到 30 个 VPU。

  • 基本环境:500 GB 和 60 个 VPU。

  • 大型生产环境:超过 500 GB 和 100 个或更多 VPU。

建议预留额外的 VPU 以提供足够的更新和扩展活动容量。有关 VPU 的更多信息,请参阅卷性能单元(Oracle 文档)。

安装流程工作流

以下工作流程描述了使用基于代理的安装程序在 OCI 上安装 OpenShift Container Platform 集群过程的高级概述

  1. 创建 OCI 资源和服务(Oracle)。

  2. 断开连接的环境:准备一个 OCI 实例可以访问的 Web 服务器(Red Hat)。

  3. 为基于代理的安装程序准备配置文件(Red Hat)。

  4. 生成代理 ISO 映像(Red Hat)。

  5. 断开连接的环境:将 rootfs 映像上传到 Web 服务器(Red Hat)。

  6. 为 OpenShift Container Platform 配置防火墙(Red Hat)。

  7. 将代理 ISO 映像上传到存储桶(Oracle)。

  8. 从上传的代理 ISO 映像创建自定义映像(Oracle)。

  9. 在 OCI 上创建计算实例(Oracle)。

  10. 验证您的集群是否在 OCI 上运行(Oracle)。

创建 OCI 基础设施资源和服务

您必须在虚拟机 (VM) 或裸机形状上创建 OCI 环境。通过创建此环境,您可以安装 OpenShift Container Platform 并在一个支持各种云选项和强大安全策略的基础设施上部署集群。事先了解 OCI 组件可以帮助您理解 OCI 资源的概念以及如何配置它们以满足您的组织需求。

在 OCI 上安装 OpenShift Container Platform 集群的基于代理的安装程序方法要求您手动创建 OCI 资源和服务。

为了确保与 OpenShift Container Platform 的兼容性,您必须将A设置为每个 DNS 记录的记录类型,并将名称记录设置为如下所示:

  • api.<集群名称>.<基础域名>,指向 API 负载均衡器的 apiVIP 参数。

  • api-int.<集群名称>.<基础域名>,指向 API 负载均衡器的 apiVIP 参数。

  • *.apps.<集群名称>.<基础域名>,指向 Ingress 负载均衡器的 ingressVIP 参数。

api.*api-int.* DNS 记录与控制平面机器相关,因此您必须确保已安装的 OpenShift Container Platform 集群中的所有节点都可以访问这些 DNS 记录。

先决条件
步骤

创建在 OCI 上安装集群的配置文件

您必须创建 install-config.yamlagent-config.yaml 配置文件,以便可以使用基于代理的安装程序生成可引导的 ISO 映像。基于代理的安装包含一个可引导的 ISO,其中包含 Assisted discovery 代理和 Assisted Service。这两个组件都是执行集群安装所必需的,但后者仅在一个主机上运行。

稍后,您必须按照 Oracle 文档中的步骤,将生成的代理 ISO 映像上传到 Oracle 的默认对象存储桶,这是在 Oracle® Cloud Infrastructure (OCI) 上集成 OpenShift Container Platform 集群的初始步骤。

您还可以使用基于代理的安装程序生成或接受零接触配置 (ZTP) 自定义资源。

先决条件
  • 您已查看有关 OpenShift Container Platform 安装和更新过程的详细信息。

  • 您已阅读有关选择集群安装方法和为用户准备方法的文档。

  • 您已阅读“准备使用基于代理的安装程序进行安装”文档。

  • 您已从 Red Hat Hybrid Cloud Console 下载了基于代理的安装程序和命令行界面 (CLI)。

  • 如果您在脱机环境中安装,则已在您的环境中准备了一个镜像注册表,并将发行版镜像镜像到该注册表。

    通过运行以下命令,检查您的 openshift-install 二进制版本是否与您的本地镜像容器注册表相关,而不是与共享注册表(例如 Red Hat Quay)相关

    $ ./openshift-install version
    共享注册表二进制文件的示例输出
    ./openshift-install 4.17.0
    built from commit ae7977b7d1ca908674a0d45c5c243c766fa4b2ca
    release image registry.ci.openshift.org/origin/release:4.17ocp-release@sha256:0da6316466d60a3a4535d5fed3589feb0391989982fba59d47d4c729912d6363
    release architecture amd64
  • 您已以管理员权限登录到 OpenShift Container Platform。

步骤
  1. 通过运行以下命令创建一个安装目录来存储配置文件

    $ mkdir ~/<directory_name>
  2. 配置 install-config.yaml 配置文件以满足您组织的需求,并将文件保存到您创建的目录中。

    设置外部平台的 install-config.yaml 文件
    # install-config.yaml
    apiVersion: v1
    baseDomain: <base_domain> (1)
    networking:
      clusterNetwork:
      - cidr: 10.128.0.0/14
        hostPrefix: 23
      network type: OVNKubernetes
      machineNetwork:
      - cidr: <ip_address_from_cidr> (2)
      serviceNetwork:
      - 172.30.0.0/16
    compute:
      - architecture: amd64 (3)
      hyperthreading: Enabled
      name: worker
      replicas: 0
    controlPlane:
      architecture: amd64 (3)
      hyperthreading: Enabled
      name: master
      replicas: 3
    platform:
       external:
        platformName: oci (4)
        cloudControllerManager: External
    sshKey: <public_ssh_key> (5)
    pullSecret: '<pull_secret>' (6)
    # ...
    1 您的云提供商的基础域名。
    2 虚拟云网络 (VCN) 中的 IP 地址,CIDR 将其分配给在您的网络上运行的资源和组件。
    3 根据您的基础设施,您可以选择 arm64amd64
    4 OCI 设置为外部平台,以便 OpenShift Container Platform 可以与 OCI 集成。
    5 指定您的 SSH 公钥。
    6 下载 OpenShift Container Platform 组件和服务(如 Quay.io)的容器镜像时,您需要进行身份验证的拉取密钥。请参阅 Red Hat Hybrid Cloud Console 中的 安装 OpenShift Container Platform 4
  3. 在您的本地系统上创建一个名为 openshift 的目录。这必须是安装目录的子目录。

    不要将 install-config.yamlagent-config.yaml 配置文件移动到 openshift 目录。

  4. 如果您使用堆栈来配置 OCI 基础设施资源:将 OCI 堆栈的 dynamic_custom_manifest 输出复制并粘贴到名为 manifest.yaml 的文件中,并将文件保存在 openshift 目录中。

  5. 如果您没有使用堆栈来配置 OCI 基础设施资源:下载并准备自定义清单以创建代理 ISO 映像

    1. 访问 配置文件(Oracle 文档),然后点击链接访问 GitHub 上的自定义清单目录。

    2. 复制 condensed-manifest.yml 文件的内容,并将其本地保存到 openshift 目录中的文件中。

    3. condensed-manifest.yml 文件中,更新标有 TODO 的部分,以指定区隔 Oracle® Cloud 标识符 (OCID)、VCN OCID、负载均衡器的子网 OCID 和安全列表 OCID。

  6. 配置 agent-config.yaml 配置文件以满足您组织的需求。

    IPv4 网络的示例 agent-config.yaml 文件。
    apiVersion: v1beta1
    metadata:
      name: <cluster_name> (1)
      namespace: <cluster_namespace> (2)
    rendezvousIP: <ip_address_from_CIDR> (3)
    bootArtifactsBaseURL: <server_URL> (4)
    # ...
    1 您在 DNS 记录中指定的集群名称。
    2 您在 OpenShift Container Platform 上的集群命名空间。
    3 如果您使用 IPv4 作为网络 IP 地址格式,请确保将 rendezvousIP 参数设置为 VCN 的无类别域间路由 (CIDR) 方法在您的网络上分配的 IPv4 地址。还要确保使用 ISO 启动的实例池中的至少一个实例与您为 rendezvousIP 参数设置的 IP 地址值匹配。
    4 您要将 rootfs 映像上传到的服务器的 URL。此参数仅在脱机环境中需要。
  7. 通过在安装目录中输入以下命令生成最小 ISO 映像,该映像不包括 rootfs 映像

    $ ./openshift-install agent create image --log-level debug

    该命令还完成以下操作

    • 创建一个子目录 ./<安装目录>/auth 目录:,并将 kubeadmin-passwordkubeconfig 文件放在子目录中。

    • 根据您在 agent-config.yaml 配置文件中指定的 IP 地址创建 rendezvousIP 文件。

    • 可选:您对 agent-config.yamlinstall-config.yaml 配置文件所做的任何修改都将导入到零接触配置 (ZTP) 自定义资源中。

      基于代理的安装程序使用 Red Hat Enterprise Linux CoreOS (RHCOS)。稍后步骤中提到的 rootfs 映像是引导、恢复和修复操作系统的必需项。

  8. 仅限脱机环境:将 rootfs 映像上传到 Web 服务器。

    1. 转到创建最小 ISO 映像时生成的 ./<安装目录>/boot-artifacts 目录。

    2. 使用您首选的 Web 服务器(例如任何超文本传输协议守护程序 (httpd))将 rootfs 映像上传到 agent-config.yaml 文件的 bootArtifactsBaseURL 参数中指定的位置。

      例如,如果 bootArtifactsBaseURL 参数显示 http://192.168.122.20,您将把生成的 rootfs 映像上传到此位置,以便基于代理的安装程序可以从 http://192.168.122.20/agent.x86_64-rootfs.img 访问该映像。基于代理的安装程序引导外部平台的最小 ISO 后,基于代理的安装程序会将 rootfs 映像从 http://192.168.122.20/agent.x86_64-rootfs.img 位置下载到系统内存中。

      基于代理的安装程序还会将 bootArtifactsBaseURL 的值添加到最小 ISO 映像的配置中,以便在 Operator 引导集群节点时,基于代理的安装程序将 rootfs 映像下载到系统内存中。

      请注意,完整的 ISO 映像(超过 1 GB)包含 rootfs 映像。该映像大于最小 ISO 映像,最小 ISO 映像通常小于 150 MB。

配置 OpenShift Container Platform 的防火墙

在安装 OpenShift Container Platform 之前,必须配置防火墙以允许访问 OpenShift Container Platform 所需的站点。使用防火墙时,请对防火墙进行额外配置,以便 OpenShift Container Platform 可以访问其正常运行所需的站点。

对于断开连接的环境,必须镜像来自 Red Hat 和 Oracle 的内容。此环境要求您创建防火墙规则,以将防火墙暴露给特定端口和注册表。

如果您的环境在 OpenShift Container Platform 集群前面有一个专用的负载均衡器,请检查防火墙和负载均衡器之间的允许列表,以防止对集群产生不需要的网络限制。

步骤
  1. 为防火墙的允许列表设置以下注册表 URL

    URL 端口 功能

    registry.redhat.io

    443

    提供核心容器镜像

    access.redhat.com

    443

    托管容器客户端验证从registry.access.redhat.com拉取的镜像所需的签名存储。在防火墙环境中,确保此资源在允许列表中。

    registry.access.redhat.com

    443

    托管 Red Hat 生态系统目录中存储的所有容器镜像,包括核心容器镜像。

    quay.io

    443

    提供核心容器镜像

    cdn.quay.io

    443

    提供核心容器镜像

    cdn01.quay.io

    443

    提供核心容器镜像

    cdn02.quay.io

    443

    提供核心容器镜像

    cdn03.quay.io

    443

    提供核心容器镜像

    cdn04.quay.io

    443

    提供核心容器镜像

    cdn05.quay.io

    443

    提供核心容器镜像

    cdn06.quay.io

    443

    提供核心容器镜像

    sso.redhat.com

    443

    https://console.redhat.com站点使用来自sso.redhat.com的身份验证

    • 您可以使用通配符*.quay.io*.openshiftapps.com代替cdn.quay.iocdn0[1-6].quay.io添加到您的允许列表。

    • 您可以使用通配符*.access.redhat.com简化配置并确保允许所有子域,包括registry.access.redhat.com

    • 将站点(例如quay.io)添加到允许列表时,请不要将通配符条目(例如*.quay.io)添加到拒绝列表。在大多数情况下,镜像注册表使用内容分发网络 (CDN) 来提供镜像。如果防火墙阻止访问,则初始下载请求重定向到主机名(例如cdn01.quay.io)时,将拒绝镜像下载。

  2. 将防火墙的允许列表设置为包含任何为您的构建所需的语言或框架提供资源的站点。

  3. 如果未禁用遥测,则必须授予对以下 URL 的访问权限才能访问 Red Hat Insights

    URL 端口 功能

    cert-api.access.redhat.com

    443

    遥测所需

    api.access.redhat.com

    443

    遥测所需

    infogw.api.openshift.com

    443

    遥测所需

    console.redhat.com

    443

    遥测和insights-operator所需

  4. 将防火墙的允许列表设置为包含以下注册表 URL

    URL 端口 功能

    api.openshift.com

    443

    集群令牌和检查集群是否有可用更新都必需。

    rhcos.mirror.openshift.com

    443

    下载 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像所需。

  5. 将防火墙的允许列表设置为包含以下外部 URL。每个仓库 URL 都托管 OCI 容器。请尽量将镜像镜像到尽可能少的仓库,以减少任何性能问题。

    URL 端口 功能

    k8s.gcr.io

    端口

    一个 Kubernetes 注册表,它为基于社区的镜像注册表托管容器镜像。此镜像注册表托管在自定义 Google Container Registry (GCR) 域上。

    ghcr.io

    端口

    一个 GitHub 镜像注册表,您可以在其中存储和管理开放容器倡议镜像。需要访问令牌才能发布、安装和删除私有、内部和公共包。

    storage.googleapis.com

    443

    发行版镜像签名的来源,尽管集群版本操作符只需要一个可用的来源。

    registry.k8s.io

    端口

    替换k8s.gcr.io镜像注册表,因为k8s.gcr.io镜像注册表不支持其他平台和供应商。

在 OCI 上运行集群

要在 Oracle® Cloud Infrastructure (OCI) 上运行集群,必须将生成的 agent ISO 镜像上传到 OCI 上的默认对象存储桶。此外,必须从提供的基本镜像创建计算实例,以便您的 OpenShift Container Platform 和 OCI 可以相互通信,以便在 OCI 上运行集群。

OCI 支持以下 OpenShift Container Platform 集群拓扑

  • 在单个节点上安装 OpenShift Container Platform 集群。

  • 一个高可用性集群,至少具有三个控制平面实例和两个计算实例。

  • 一个紧凑的三节点集群,至少具有三个控制平面实例。

先决条件
  • 您生成了一个 agent ISO 镜像。请参见“为在 OCI 上安装集群创建配置文件”部分。

步骤
  1. 将 agent ISO 镜像上传到 Oracle 的默认对象存储桶,并将 agent ISO 镜像作为自定义镜像导入到此存储桶。确保将自定义镜像配置为在统一可扩展固件接口 (UEFI) 模式下启动。更多信息,请参见创建 OpenShift Container Platform ISO 镜像(Oracle 文档)

  2. 为您的集群拓扑从提供的基本镜像创建一个计算实例。请参见在 OCI 上创建 OpenShift Container Platform 集群(Oracle 文档)

    在创建计算实例之前,请检查您是否有足够的内存和磁盘资源用于您的集群。此外,请确保至少一个计算实例具有与agent-config.yaml文件中rendezvousIP下声明的地址相同的 IP 地址。

验证基于 Agent 的集群安装在 OCI 上运行

验证您的集群是否已安装并在 Oracle® Cloud Infrastructure (OCI) 上有效运行。

先决条件
  • 您创建了所有必需的 OCI 资源和服务。请参见“创建 OCI 基础架构资源和服务”部分。

  • 您创建了install-config.yamlagent-config.yaml配置文件。请参见“为在 OCI 上安装集群创建配置文件”部分。

  • 您已将 agent ISO 镜像上传到 Oracle 的默认对象存储桶,并在 OCI 上创建了一个计算实例。更多信息,请参见“在 OCI 上运行集群”。

步骤

在 OpenShift Container Platform 集群中自托管节点上部署计算实例后,您可以通过选择以下选项之一来监控集群状态

  • 从 OpenShift Container Platform 命令行界面 (CLI) 输入以下命令:

    $ ./openshift-install agent wait-for install-complete --log-level debug

    检查运行引导节点的 rendezvous 主机节点的状态。主机重新启动后,该主机将成为集群的一部分。

  • 使用 kubeconfig API 检查各种 OpenShift Container Platform 组件的状态。对于 KUBECONFIG 环境变量,请设置集群 kubeconfig 配置文件的相对路径。

    $  export KUBECONFIG=~/auth/kubeconfig

    检查集群中每个自管理节点的状态。CCM 为每个节点应用标签,以将其指定为在 OCI 上集群中运行的节点。

    $ oc get nodes -A
    输出示例
    NAME                                   STATUS ROLES                 AGE VERSION
    main-0.private.agenttest.oraclevcn.com Ready  control-plane, master 7m  v1.27.4+6eeca63
    main-1.private.agenttest.oraclevcn.com Ready  control-plane, master 15m v1.27.4+d7fa83f
    main-2.private.agenttest.oraclevcn.com Ready  control-plane, master 15m v1.27.4+d7fa83f

    检查集群中每个 Operator 的状态,其中 CCM Operator 的状态是集群正在运行的一个良好指标。

    $ oc get co
    输出示例(已截断)
    NAME           VERSION     AVAILABLE  PROGRESSING    DEGRADED   SINCE   MESSAGE
    authentication 4.17.0-0    True       False          False      6m18s
    baremetal      4.17.0-0    True       False          False      2m42s
    network        4.17.0-0    True       True           False      5m58s  Progressing: …
        …