20.2. 使用基于代理的安装程序在 Oracle Cloud Infrastructure (OCI) 上安装集群
在 OpenShift Container Platform 4.16 中,您可以使用基于代理的安装程序在 Oracle® Cloud Infrastructure (OCI) 上安装集群,以便您可以在支持专用、混合、公共和多个云环境的基础架构上运行集群工作负载。
20.2.1. 基于代理的安装程序和 OCI 概述
您可以使用基于代理的安装程序在 Oracle® Cloud Infrastructure (OCI) 上安装 OpenShift Container Platform 集群。红帽和 Oracle 测试、验证和支持在 OCI 上的 OpenShift Container Platform 集群中运行 OCI 和 Oracle® Cloud VMware Solution (OCVS) 工作负载。
基于代理的安装程序提供了辅助安装服务的易用性,但可以在连接或断开连接的环境中安装集群。
下图显示了连接的和断开连接的环境的工作流:
图 20.3. 在连接的环境中使用基于代理的安装程序在 OCI 上安装集群的工作流
图 20.4. 在断开连接的环境中使用基于代理的安装程序在 OCI 上安装集群的工作流
OCI 提供可满足您的法规合规性、性能和符合成本效益的服务。OCI 支持 64 位 x86
实例和 64 位 ARM
实例。另外,OCI 提供了一个 OCVS 服务,您可以在其中使用最小应用程序重新架构将 VMware 工作负载移到 OCI 中。
考虑为您的引导磁盘选择一个非易失性内存表达(NVMe)驱动器或固态驱动器(SSD),因为这些驱动器为您的引导磁盘提供低延迟和高吞吐量功能。
通过在 OCI 上运行 OpenShift Container Platform 集群,您可以访问以下功能:
- 计算灵活性形成,您可以在其中自定义虚拟机的 Oracle® CPU (OCPU)和内存资源的数量。通过访问这个功能,集群的工作负载可以在资源平衡的环境中执行操作。您可以通过进入红帽生态系统目录门户上的 Oracle 页面来找到所有 RHEL 认证的 OCI 结构。
- 块卷存储,您可以在其中为存储卷配置扩展和自动调整设置,以便块卷服务自动调整性能级别以优化性能。
- 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 文档)。
20.2.2. 创建 OCI 基础架构资源和服务
您必须在虚拟机(VM)上创建一个 OCI 环境。通过创建此环境,您可以安装 OpenShift Container Platform,并在支持广泛的云选项和强大的安全策略的基础架构上部署集群。预先了解 OCI 组件的相关知识可帮助您了解 OCI 资源的概念以及如何配置它们来满足您的机构需求。
在 OCI 上安装 OpenShift Container Platform 集群的基于 Agent 的安装程序方法需要您手动创建 OCI 资源和服务。
为确保与 OpenShift Container Platform 兼容,您必须将 A
设置为每个 DNS 记录和名称记录的记录类型,如下所示:
-
api.<cluster_name>.<base_domain>
,它以 API 负载均衡器的apiVIP
参数为目标。 -
api-int.<cluster_name>.<base_domain>
,它以 API 负载均衡器的apiVIP
参数为目标。 -
*.apps.<cluster_name>.<base_domain>
,它以 Ingress 负载均衡器的ingressVIP
参数为目标。
api.*
和 api-int.*
DNS 记录与 control plane 机器相关,因此您必须确保安装的 OpenShift Container Platform 集群中的所有节点都可以访问这些 DNS 记录。
先决条件
- 已将 OCI 帐户配置为托管 OpenShift Container Platform 集群。请参阅 先决条件(Oracle 文档)。
流程
- 创建所需的 OCI 资源和服务。请参阅使用基于代理的安装程序(Oracle 文档)所需的 OCI 资源。
20.2.3. 创建用于在 OCI 上安装集群的配置文件
您需要创建 install-config.yaml
和 agent-config.yaml
配置文件,以便您可以使用基于 Agent 的安装程序来生成可引导 ISO 镜像。基于代理的安装包含一个可引导 ISO,它带有辅助发现代理和辅助服务。这两个组件都需要执行集群安装,但后者的组件仅在其中一个主机上运行。
在以后的阶段,您必须按照 Oracle 文档中的步骤将生成的代理 ISO 镜像上传到 Oracle 的默认对象存储存储桶,这是在 Oracle® Cloud Infrastructure (OCI)上集成 OpenShift Container Platform 集群的初始步骤。
您还可以使用基于代理的安装程序来生成或接受 Zero Touch Provisioning (ZTP)自定义资源。
先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新流程的详细信息。
- 您可以阅读有关选择集群安装方法的文档,并为用户准备相关的环境。
- 您已阅读了"准备基于代理的安装程序"文档。
- 您已从 Red Hat Hybrid Cloud Console 下载了基于代理的安装程序和命令行界面 (CLI)。
- 已使用管理员权限登录到 OpenShift Container Platform。
流程
对于断开连接的环境,将 Red Hat OpenShift 的镜像 registry 镜像到本地容器镜像 registry。
重要检查您的
openshift-install
二进制版本是否与本地镜像容器 registry 相关,而不是共享的 registry,如 Red Hat Quay。$ ./openshift-install version
共享 registry 二进制文件的输出示例
./openshift-install 4.16.0 built from commit ae7977b7d1ca908674a0d45c5c243c766fa4b2ca release image registry.ci.openshift.org/origin/release:4.16ocp-release@sha256:0da6316466d60a3a4535d5fed3589feb0391989982fba59d47d4c729912d6363 release architecture amd64
配置
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 4 hyperthreading: Enabled name: master replicas: 3 platform: external: platformName: oci 5 cloudControllerManager: External sshKey: <public_ssh_key> 6 pullSecret: '<pull_secret>' 7 # ...
- 1
- 云供应商的基域。
- 2
- CIDR 分配给网络上操作的资源和组件的虚拟网络 (VCN) 的 IP 地址。
- 3 4
- 根据您的基础架构,您可以选择
x86_64
或amd64
。 - 5
- 将
OCI
设置为外部平台,以便 OpenShift Container Platform 能够与 OCI 集成。 - 6
- 指定 SSH 公钥。
- 7
- 为 OpenShift Container Platform 组件和服务(如 Quay.io)下载容器镜像时,您需要验证目的的 pull secret。请参阅 通过 Red Hat Hybrid Cloud Console 安装 OpenShift Container Platform 4。
在本地系统上创建一个名为
openshift
的目录。重要不要将
install-config.yaml
和agent-config.yaml
配置文件移到openshift
目录中。-
完成 Oracle 文档的 "配置文件" 部分中的步骤,以下载 Oracle Cloud Controller Manager (CCM)和 Oracle Container Storage Interface (CSI)清单作为归档文件,并将存档文件保存到
openshift
目录中。您需要 Oracle CCM 清单以在集群安装过程中部署 Oracle CCM,以便 OpenShift Container Platform 可以连接到外部 OCI 平台。在集群安装过程中部署 Oracle CSI 驱动程序需要 Oracle CSI 自定义清单,以便 OpenShift Container Platform 可以从 OCI 声明所需的对象。 访问 Oracle 文档的" 配置文件" 部分中提供的自定义清单文件。
-
更改
oci-cloud-controller-manager
secret,该 secret 在oci-ccm.yml
配置文件中定义,以匹配您的机构的区域、比较 OCID、VCN OCID 和子网 OCID。
-
更改
在 OpenShift Container Platform CLI 中输入以下命令来,使用基于 Agent 的安装程序来生成最小 ISO 镜像(不包括 rootfs 镜像)。您可以在稍后使用此镜像引导所有集群节点。
$ ./openshift-install agent create image --log-level debug
该命令还会完成以下操作:
-
创建子目录
./<installation_directory>/auth directory:
:将kubeadmin-password
和kubeconfig
文件放在 子目录中。 -
根据您在
agent-config.yaml
配置文件中指定的 IP 地址,创建一个rendezvousIP
文件。 可选:您对
agent-config.yaml
和install-config.yaml
配置文件所做的任何修改都会导入到 Zero Touch Provisioning (ZTP)自定义资源。重要基于代理的安装程序使用 Red Hat Enterprise Linux CoreOS (RHCOS)。启动、恢复和修复您的操作系统需要在后续列出的项中提到的 rootfs 镜像。
-
创建子目录
配置
agent-config.yaml
配置文件,以满足您的机构要求。为 IPv4 格式的网络设置值的
agent-config.yaml
配置文件示例。apiVersion: v1alpha1 metadata: name: <cluster_name> 1 namespace: <cluster_namespace> 2 rendezvousIP: <ip_address_from_CIDR> 3 bootArtifactsBaseURL: <server_URL> 4 # ...
对
agent-config.yaml
配置文件应用以下两个更新之一:对于断开连接的网络: 运行该命令以生成最小 ISO 镜像后,基于代理的安装程序会将 rootfs 镜像保存到本地系统的
./<installation_directory>/boot-artifacts
目录中。使用您首选的 Web 服务器,如任何 Hypertext 传输协议守护进程(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 镜像下载到系统内存中。对于连接的网络: 您不需要在
agent-config.yaml
配置文件中指定bootArtifactsBaseURL
参数。基于代理的安装程序的默认行为从https://rhcos.mirror.openshift.com
读取 rootfs URL 位置。在基于代理的安装程序为外部平台引导最小 ISO 后,基于代理的安装程序,然后从默认的 RHCOS URL 将 rootfs 文件下载到您的系统内存中。重要考虑超过
1
GB 的完整 ISO 镜像包括 rootfs 镜像。镜像大于最小 ISO 镜像,该镜像通常小于150
MB。
20.2.4. 为 OpenShift Container Platform 配置防火墙
在安装 OpenShift Container Platform 前,您必须配置防火墙,以授予 OpenShift Container Platform 所需站点的访问权限。在使用防火墙时,为防火墙提供额外的配置,以便 OpenShift Container Platform 可以访问正常工作所需的站点。
对于断开连接的环境,您必须从 Red Hat 和 Oracle 镜像内容。此环境要求您创建防火墙规则,将防火墙公开给特定端口和 registry。
如果您的环境在 OpenShift Container Platform 集群前面有一个专用的负载均衡器,请查看防火墙和负载均衡器之间的允许列表,以防止对集群造成不必要的网络限制。
流程
为您的防火墙的允许列表设置以下 registry URL:
URL port 功能 registry.redhat.io
443
提供核心容器镜像
access.redhat.com
443
托管签名存储,容器客户端需要验证从
registry.access.redhat.com
中拉取的镜像。在防火墙环境中,确保此资源位于允许列表中。registry.access.redhat.com
443
托管存储在 Red Hat Ecosytem Catalog 中的所有容器镜像,包括核心容器镜像。
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
的身份验证-
您可以在 allowlist 中使用通配符
Ifquay.io
和Ifopenshiftapps.com
而不是cdn.quay.io
和cdn0[1-6].quay.io
。 -
您可以使用通配符
*.access.redhat.com
来简化配置,并确保所有子域(包括registry.access.redhat.com
)都被允许。 -
在 allowlist 中添加站点(如
quay.io
)时,不要向 denylist 添加通配符条目,如*.quay.io
。在大多数情况下,镜像 registry 使用内容交付网络(CDN)来提供镜像。如果防火墙阻止访问,则初始下载请求重定向到一个主机名(如cdn01.quay.io
)时,镜像下载将被拒绝。
-
您可以在 allowlist 中使用通配符
- 将防火墙的允许列表设置为包含为构建所需的语言或框架提供资源的任何站点。
如果不禁用 Telemetry,您必须授予对以下 URL 的访问权限,以访问 Red Hat Insights:
URL port 功能 cert-api.access.redhat.com
443
Telemetry 所需
api.access.redhat.com
443
Telemetry 所需
infogw.api.openshift.com
443
Telemetry 所需
console.redhat.com
443
Telemetry 和
insights-operator
需要将防火墙的允许列表设置为包含以下 registry URL:
URL port 功能 api.openshift.com
443
集群令牌需要,并检查集群是否有可用的更新。
rhcos.mirror.openshift.com
443
需要此项以下载 Red Hat Enterprise Linux CoreOS(RHCOS)镜像。
将防火墙的允许列表设置为包含以下外部 URL:每个存储库 URL 都托管 OCI 容器。考虑将镜像镜像到几个存储库,以减少任何性能问题。
URL port 功能 k8s.gcr.io
port
为基于社区的镜像 registry 托管容器镜像的 Kubernetes registry。此镜像 registry 托管在自定义 Google Container Registry (GCR)域中。
ghcr.io
port
一个 GitHub 镜像 registry,您可以在其中存储和管理开放容器项目镜像。需要访问令牌发布、安装和删除私有、内部和公共软件包。
storage.googleapis.com
443
发行版本镜像签名源,但 Cluster Version Operator 只需要一个可正常工作的源。
registry.k8s.io
port
替换
k8s.gcr.io
镜像 registry,因为k8s.gcr.io
镜像 registry 不支持其他平台和供应商。
20.2.5. 在 OCI 上运行集群
要在 Oracle® Cloud Infrastructure (OCI) 上运行集群,您必须将生成的代理 ISO 镜像上传到 OCI 上的默认 Object Storage 存储桶。另外,您必须从提供的基础镜像创建一个计算实例,以便 OpenShift Container Platform 和 OCI 能够相互通信,以便在 OCI 上运行集群。
OCI 支持以下 OpenShift Container Platform 集群拓扑:
- 在单一节点上安装 OpenShift Container Platform 集群。
- 高可用性集群至少有三个 control plane 实例和两个计算实例。
- 紧凑的三节点集群,至少有三个 control plane 实例。
先决条件
- 您生成了一个代理 ISO 镜像。请参阅"创建配置文件以在 OCI 上安装集群"部分。
流程
- 将代理 ISO 镜像上传到 Oracle 的默认 Object Storage 存储桶,并将代理 ISO 镜像作为自定义镜像导入到此存储桶。确保将自定义镜像配置为以统一可扩展固件接口(UEFI)模式引导。如需更多信息,请参阅创建 OpenShift Container Platform ISO 镜像(Oracle 文档)。
从集群拓扑提供的基础镜像创建计算实例。请参阅在 OCI (Oracle 文档)上创建 OpenShift Container Platform 集群。
重要在创建计算实例前,请检查您有足够的内存和磁盘资源。另外,请确保至少有一个计算实例与
agent-config.yaml
文件中rendezvousIP
下声明的地址相同的 IP 地址。
20.2.6. 验证您的基于代理的集群安装是否在 OCI 上运行
验证集群是否已安装并在 Oracle® Cloud Infrastructure (OCI) 上有效运行。
先决条件
- 您创建了所有必需的 OCI 资源和服务。请参阅"创建 OCI 基础架构资源和服务"部分。
-
已创建
install-config.yaml
和agent-config.yaml
配置文件。请参阅"创建配置文件以在 OCI 上安装集群"部分。 - 您已将代理 ISO 镜像上传到 Oracle 的默认 Object Storage 存储桶,并在 OCI 上创建计算实例。如需更多信息,请参阅"在 OCI 上运行集群"。
流程
在 OpenShift Container Platform 集群的自管理节点上部署计算实例后,您可以选择以下选项之一来监控集群的状态:
在 OpenShift Container Platform CLI 中输入以下命令:
$ ./openshift-install agent wait-for install-complete --log-level debug
检查运行 bootstrap 节点的
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.16.0-0 True False False 6m18s baremetal 4.16.0-0 True False False 2m42s network 4.16.0-0 True True False 5m58s Progressing: … …
其他资源