在 RHV 上安装
在 Red Hat Virtualization 上安装 OpenShift Container Platform
摘要
第 1 章 准备在 {rh-virtualization-first} 上安装
1.1. 先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 在 Red Hat Virtualization(RHV)上的 OpenShift Container Platform Support Matrix 中支持的版本组合。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
1.2. 选择在 RHV 上安装 OpenShift Container Platform 的方法
您可以在安装程序置备或用户置备的基础架构上安装 OpenShift Container Platform。默认安装类型使用安装程序置备的基础架构,安装程序会在其中为集群置备底层基础架构。您还可以在您置备的基础架构上安装 OpenShift Container Platform。如果不使用安装程序置备的基础架构,您必须自己管理和维护集群资源。
如需有关安装程序置备和用户置备的安装过程的更多信息,请参阅 安装过程。
1.2.1. 在安装程序置备的基础架构上安装集群
您可以使用以下方法之一在 OpenShift Container Platform 安装程序置备的 Red Hat Virtualization(RHV)虚拟机上安装集群:
- 在 RHV 上快速安装集群 :您可以在 OpenShift Container Platform 安装程序置备的 RHV 虚拟机上快速安装 OpenShift Container Platform。
- 使用自定义在 RHV 上安装集群:您可以在 RHV 上的 安装程序置备的客户机上安装自定义的 OpenShift Container Platform 集群。安装程序允许在安装阶段应用一些自定义。其它自定义选项可 在安装后使用。
1.2.2. 在用户置备的基础架构上安装集群
您可以使用以下方法之一在您置备的 RHV 虚拟机上安装集群:
- 使用用户置备的基础架构在 RHV 上安装集群 :您可以在您置备的 RHV 虚拟机上安装 OpenShift Container Platform。您可以使用提供的 Ansible playbook 来协助安装。
- 在受限网络中的 RHV 上安装集群: 您可以通过创建安装发行内容的内部镜像在受限或断开连接的网络中在 RHV 上安装 OpenShift Container Platform。您可以使用此方法安装不需要活跃互联网连接的用户置备集群来获取软件组件。您还可以使用此安装方法来确保集群只使用满足您组织对外部内容控制的容器镜像。
第 2 章 在 RHV 上快速安装集群
您可以快速在 Red Hat Virtualization(RHV)集群中安装默认、非自定义的 OpenShift Container Platform 集群,如下图所示。

安装程序使用安装程序置备的基础架构自动创建和部署集群。
要安装默认集群,请准备环境,运行安装程序并根据提示回答其提示。然后,安装程序会创建 OpenShift Container Platform 集群。
有关安装默认集群的其他方法,请参阅使用自定义安装集群。
这个安装程序只适用于 Linux 和 macOS。
2.1. 先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 在 Red Hat Virtualization(RHV)上的 OpenShift Container Platform Support Matrix 中支持的版本组合。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
- 如果使用防火墙,则会 将其配置为允许集群需要访问的站点。
2.2. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.12 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
2.3. RHV 环境的要求
要安装并运行 OpenShift Container Platform 版本 4.12 集群,RHV 环境必须满足以下要求。
不满足这些要求可能会导致安装或进程失败。另外,无法满足这些要求可能会导致 OpenShift Container Platform 集群在安装后几天或几星期后失败。
对 CPU、内存和存储资源的以下要求是基于 默认值 乘以安装程序创建的默认虚拟机数。除了 RHV 环境用于非 OpenShift Container Platform 操作的资源外,这些资源还必须可用。
默认情况下,安装程序会在安装过程中创建七台虚拟机。首先,它会创建一个 bootstrap 虚拟机来提供临时服务和 control plane,同时创建 OpenShift Container Platform 集群的其余部分。当安装程序完成集群创建后,删除 bootstrap 机器会释放其资源。
如果在 RHV 环境中增加虚拟机数量,则必须相应地增加资源。
要求
- RHV 版本为 4.4。
- RHV 环境有一个数据中心,其状态为 Up。
- RHV 数据中心包含一个 RHV 集群。
RHV 集群具有专门用于 OpenShift Container Platform 集群的以下资源:
- 最小 28 个 vCPU:在安装过程中创建的七台虚拟机中每个都需要 4 个.
112 GiB RAM 或更多,包括:
- 16 GiB 或更多用于提供临时 control plane 的 bootstrap 机器。
- 每个提供 control plane 机器的 control plane 机器都需要 16 GiB 或以上。
- 每个运行应用程序工作负载的三台计算机器都需要 16 GiB 或以上。
- RHV 存储域必须满足 etcd 后端性能要求。
- 对于关联性组支持:RHV 集群中的三个或更多主机。如果需要,您可以禁用关联性组。详情请查看 Installing a cluster on RHV with customizations 中的 Example: Removing all affinity groups for a non-production lab setup
- 在生产环境中,每个虚拟机必须具有 120 GiB 或更多存储。因此,存储域必须为默认的 OpenShift Container Platform 集群提供 840 GiB 或更多存储。在资源受限或非生产环境中,每个虚拟机必须具有 32 GiB 或更多存储,因此对于默认的 OpenShift Container Platform 集群,存储域必须具有 230 GiB 或更多存储。
- 要在安装和更新过程中从红帽生态系统目录下载镜像,RHV 集群必须可以访问互联网。Telemetry 服务还需要互联网连接来简化订阅和权利流程。
- RHV 集群必须具有一个虚拟网络,可访问 RHV Manager 上的 REST API。确保在这个网络中启用了 DHCP,因为安装程序创建的虚拟机会使用 DHCP 获取其 IP 地址。
具有以下最低权限的用户帐户和组,用于在目标 RHV 集群上安装和管理 OpenShift Container Platform 集群:
-
DiskOperator
-
DiskCreator
-
UserTemplateBasedVm
-
TemplateOwner
-
TemplateCreator
-
目标集群中的
ClusterAdmin
-
应用最小权限原则:避免在安装过程中使用带有 RHV SuperUser
权限的管理员帐户。安装程序会将您提供的凭证保存到一个临时的 ovirt-config.yaml
文件中,该文件可能会被破坏。
其他资源
2.4. 验证 RHV 环境的要求
验证 RHV 环境是否满足安装和运行 OpenShift Container Platform 集群的要求。不满足这些要求可能会导致失败。
这些要求基于安装程序用来创建 control plane 和计算机器的默认资源。这些资源包括 vCPU、内存和存储。如果更改这些资源或增加 OpenShift Container Platform 机器的数量,请相应地调整这些要求。
流程
检查 RHV 版本是否支持安装 OpenShift Container Platform 版本 4.12。
- 在 RHV 管理门户中,单击右上角的 ? 帮助图标,然后选择 About。
- 在打开的窗口中,记下 RHV 软件版本。
- 确认 RHV 版本为 4.4。如需有关支持的版本组合的更多信息,请参阅 RHV 上的 OpenShift Container Platform 支持列表。
检查数据中心、集群和存储。
- 在 RHV 管理门户中,点击 Compute → Data Centers。
- 确认可以访问您要安装 OpenShift Container Platform 的数据中心。
- 单击该数据中心的名称。
- 在数据中心详情中,Storage 选项卡中确认您要安装 OpenShift Container Platform 的存储域是 Active。
- 记录下 域名 以供稍后使用。
- 确认 Free Space 至少为 230 GiB。
- 确认存储域满足 etcd 后端性能要求,您可以使用 fio 性能基准工具进行测量。
- 在数据中心详情中点击 Clusters 选项卡。
- 找到您要安装 OpenShift Container Platform 的 RHV 集群。记录集群名称以供稍后使用。
检查 RHV 主机资源。
- 在 RHV 管理门户中,点击 Compute > Clusters。
- 点击您要安装 OpenShift Container Platform 的集群。
- 在集群详情中点击 Hosts 选项卡。
- 检查主机,并确认它们有至少 28 个 逻辑 CPU 内核, 专门用于 OpenShift Container Platform 集群。
- 记录 逻辑 CPU 内核数 以便稍后使用。
- 确认这些 CPU 内核被分配,在安装过程中创建的七台虚拟机中的每一台都可以有四个内核。
确认主机总共有 112 GiB 的 Max free Memory for scheduling new virtual machines,以满足以下每个 OpenShift Container Platform 机器的要求:
- bootstrap 机器需要 16 GiB
- 三个 control plane 机器都需要 16 GiB
- 三个计算机器各自都需要 16 GiB
- 记录下 Max free Memory for scheduling new virtual machine 的数量, 以便稍后使用。
验证安装 OpenShift Container Platform 的虚拟网络是否可以访问 RHV Manager 的 REST API。在这个网络上的虚拟机中,使用 curl 访问 RHV Manager 的 REST API:
$ curl -k -u <username>@<profile>:<password> \ 1 https://<engine-fqdn>/ovirt-engine/api 2
例如:
$ curl -k -u ocpadmin@internal:pw123 \ https://rhv-env.virtlab.example.com/ovirt-engine/api
2.5. 在 RHV 上准备网络环境
为 OpenShift Container Platform 集群配置两个静态 IP 地址,并使用这些地址创建 DNS 条目。
流程
保留两个静态 IP 地址
- 在您要安装 OpenShift Container Platform 的网络上,标识 DHCP 租期池之外的两个静态 IP 地址。
连接到此网络上的主机,并验证每个 IP 地址都没有被使用。例如,使用地址解析协议(ARP)检查 IP 地址是否有条目:
$ arp 10.35.1.19
输出示例
10.35.1.19 (10.35.1.19) -- no entry
- 为您的网络环境保留两个静态 IP 地址。
- 记录这些 IP 地址以备将来参考。
为 OpenShift Container Platform REST API 创建 DNS 条目,并使用以下格式应用域名:
api.<cluster-name>.<base-domain> <ip-address> 1 *.apps.<cluster-name>.<base-domain> <ip-address> 2
例如:
api.my-cluster.virtlab.example.com 10.35.1.19 *.apps.my-cluster.virtlab.example.com 10.35.1.20
2.6. 以不安全的模式在 RHV 上安装 OpenShift Container Platform
默认情况下,安装程序会创建一个 CA 证书,提示您确认并保存在安装过程中要使用的证书。您不需要手动创建或安装。
虽然不建议您这样做,但您可以覆盖此功能并在不验证证书的情况下安装 OpenShift Container Platform,方法是以 不安全的 模式在 RHV 上安装 OpenShift Container Platform。
不 建议使用不安全 模式安装,因为它可让潜在的攻击者执行 Man-in-the-Middle 攻击并在网络中捕获敏感凭证。
流程
-
创建名为
~/.ovirt/ovirt-config.yaml
的文件。 在
ovirt-config.yaml
中添加以下内容:ovirt_url: https://ovirt.example.com/ovirt-engine/api 1 ovirt_fqdn: ovirt.example.com 2 ovirt_pem_url: "" ovirt_username: ocpadmin@internal ovirt_password: super-secret-password 3 ovirt_insecure: true
- 运行安装程序。
2.7. 为集群节点 SSH 访问生成密钥对
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core
用户的 ~/.ssh/authorized_keys
列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心
通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather
命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 1
- 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519
。如果您已有密钥对,请确保您的公钥位于~/.ssh
目录中。
注意如果您计划在
x86_64
、ppc64le
和s390x
架构上安装使用 FIPS 验证或 Modules In Process 加密库的 OpenShift Container Platform 集群。请不要创建使用ed25519
算法的密钥。相反,创建一个使用rsa
或ecdsa
算法的密钥。查看公共 SSH 密钥:
$ cat <path>/<file_name>.pub
例如,运行以下命令来查看
~/.ssh/id_ed25519.pub
公钥:$ cat ~/.ssh/id_ed25519.pub
将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather
命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa
和~/.ssh/id_dsa
。如果
ssh-agent
进程尚未为您的本地用户运行,请将其作为后台任务启动:$ eval "$(ssh-agent -s)"
输出示例
Agent pid 31874
注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent
:$ ssh-add <path>/<file_name> 1
- 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
2.8. 获取安装程序
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。
重要安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ tar -xvf openshift-install-linux.tar.gz
- 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
2.9. 部署集群
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster
命令一次。
先决条件
-
从运行安装程序的机器中打开
ovirt-imageio
端口到 Manager。默认情况下,端口为54322
。 - 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 验证主机上的云供应商帐户是否有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
流程
进入包含安装程序的目录并初始化集群部署:
$ ./openshift-install create cluster --dir <installation_directory> \ 1 --log-level=info 2
在指定目录时:
-
验证该目录是否具有
执行
权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 - 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
-
验证该目录是否具有
根据安装程序提示。
可选:对于
SSH 公钥
,请选择无密码公钥,如~/.ssh/id_rsa.pub
。此密钥验证与新 OpenShift Container Platform 集群的连接。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请选择
ssh-agent
进程使用的 SSH 密钥。-
对于
Platform
,选择ovirt
。 对于
Engine FQDN[:PORT]
,请输入 RHV 环境的完全限定域名(FQDN)。例如:
rhv-env.virtlab.example.com:443
-
安装程序自动生成 CA 证书。对于
您想要使用上述证书连接到管理器吗?
,回答y 或
N
。如果回答N
,则必须以不安全的模式安装 OpenShift Container Platform。 对于
Engine username
,请使用以下格式输入 RHV 管理员的用户名和配置文件:<username>@<profile> 1
- 1
- 对于
<username>
,请指定 RHV 管理员的用户名。对于<profile>,
请指定登录配置集,您可以进入 RHV 管理门户登录页面并查看 Profile 下拉列表。例如:admin@internal
。
-
对于
Engine 密码
,请输入 RHV admin 密码。 -
对于
Cluster
,请选择用于安装 OpenShift Container Platform 的 RHV 集群。 -
对于
Storage domain
,请选择安装 OpenShift Container Platform 的存储域。 -
对于
Network
,请选择可访问 RHV Manager REST API 的虚拟网络。 -
对于
Internal API Virtual IP
,请为集群的 REST API 输入您设置的静态 IP 地址。 -
对于
Ingress 虚拟 IP
,请为通配符应用程序域输入您保留的静态 IP 地址。 -
对于
Base Domain
,请输入 OpenShift Container Platform 集群的基域。如果这个集群暴露于外部世界,这必须是 DNS 基础架构识别的有效域。例如: 输入virtlab.example.com
-
对于
Cluster Name
,请输入集群名称。例如:my-cluster
。使用您为 OpenShift Container Platform REST API 创建的外部注册/可解析 DNS 条目的集群名称,并应用域名。安装程序也将此名称提供给 RHV 环境中的集群。 -
对于
Pull Secret
,请从之前下载并粘贴的 pull-secret.txt
文件中复制 pull secret。您还可以从 Red Hat OpenShift Cluster Manager 获取同一 pull secret 的副本。
注意如果您在主机上配置的云供应商帐户没有足够的权限来部署集群,安装过程将停止,并显示缺少的权限。
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 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 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
您已完成了安装集群所需的步骤。剩余的步骤演示了如何验证集群并对安装进行故障排除。
2.10. 通过下载二进制文件安装 OpenShift CLI
您可以安装 OpenShift CLI(oc
)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则无法使用 OpenShift Container Platform 4.12 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Linux Client 条目旁的 Download Now 来保存文件。
解包存档:
$ tar xvf <file>
将
oc
二进制文件放到PATH 中的目录中
。要查看您的
PATH
,请执行以下命令:$ echo $PATH
验证
安装 OpenShift CLI 后,可以使用
oc
命令:$ oc <command>
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc
二进制文件移到PATH 中的目录中
。要查看您的
PATH
,请打开命令提示并执行以下命令:C:\> path
验证
安装 OpenShift CLI 后,可以使用
oc
命令:C:\> oc <command>
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.12 macOS Client 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.12 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,请打开终端并执行以下命令:$ echo $PATH
验证
安装 OpenShift CLI 后,可以使用
oc
命令:$ oc <command>
如需更多信息,请参阅 OpenShift CLI 入门。
2.11. 使用 CLI 登录集群
您可以通过导出集群 kubeconfig
文件,以默认系统用户身份登录集群。kubeconfig
文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。
先决条件
- 已部署 OpenShift Container Platform 集群。
-
已安装
oc
CLI。
流程
导出
kubeadmin
凭证:$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
验证您可以使用导出的配置成功运行
oc
命令:$ oc whoami
输出示例
system:admin
其他资源
- 如需有关 访问和了解 OpenShift Container Platform Web 控制台的更多详情,请参阅 访问 Web 控制台。
2.12. 验证集群状态
您可以在安装过程中或安装后验证 OpenShift Container Platform 集群的状态。
流程
在集群环境中,导出管理员的 kubeconfig 文件:
$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
kubeconfig
文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。查看部署后创建的 control plane 和计算机器:
$ oc get nodes
查看集群的版本:
$ oc get clusterversion
查看 Operator 的状态:
$ oc get clusteroperator
查看集群中的所有正在运行的 pod:
$ oc get pods -A
故障排除
如果安装失败,安装程序会超时并显示错误消息。如需更多信息,请参阅 故障排除安装问题。
2.13. 访问 RHV 上的 OpenShift Container Platform Web 控制台
OpenShift Container Platform 集群初始化后,您可以登录到 OpenShift Container Platform Web 控制台。
流程
- 可选: 在 Red Hat Virtualization(RHV)管理门户中,打开 Compute → Cluster。
- 验证安装程序是否创建了虚拟机。
- 返回到安装程序正在运行的命令行。安装程序完成后,它会显示登录 OpenShift Container Platform Web 控制台的用户名和临时密码。
在一个浏览器中,打开 OpenShift Container Platform Web 控制台的 URL。URL 使用以下格式:
console-openshift-console.apps.<clustername>.<basedomain> 1
- 1
- 对于
<clustername>.<basedomain>
,请指定集群名称和基域。
例如:
console-openshift-console.apps.my-cluster.virtlab.example.com
2.14. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.12 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console。
确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
2.15. 在 Red Hat Virtualization(RHV)上安装时的常见问题
以下是您可能遇到的一些常见问题,以及推荐的原因和解决方案。
2.15.1. CPU 负载增加和节点进入非 就绪
状态
-
症状:CPU 负载显著增加,节点开始处于非
Ready 状态
。 - 原因 :存储域延迟可能太大,特别是 control plane 节点。
解决方案 :
通过重启 kubelet 服务使节点再次就绪:
$ systemctl restart kubelet
检查 OpenShift Container Platform 指标服务,该服务会自动收集并报告一些有价值的数据,如 etcd 磁盘同步持续时间。如果集群是可操作的,请使用这些数据来帮助确定存储延迟或吞吐量是否为根本问题。如果是这样,请考虑使用一个较低延迟和更高吞吐量的存储资源。
要获取原始指标,请以 kubeadmin 或具有 cluster-admin 权限的用户身份输入以下命令:
$ oc get --insecure-skip-tls-verify --server=https://localhost:<port> --raw=/metrics
如需更多信息,请参阅 使用 OpenShift 4.x 调试应用程序端点。
2.15.2. 连接 OpenShift Container Platform 集群 API 存在问题
症状 :安装程序完成,但无法使用 OpenShift Container Platform 集群 API。bootstrap 虚拟机在 bootstrap 过程完成后仍然会保留。当您输入以下命令时,响应会超时。
$ oc login -u kubeadmin -p *** <apiurl>
- 原因 : 安装程序没有删除 bootstrap 虚拟机,且没有释放集群的 API IP 地址。
解决方案 :
使用 wait-for
子命令在 bootstrap 过程完成后获得通知:$ ./openshift-install wait-for bootstrap-complete
bootstrap 过程完成后,删除 bootstrap 虚拟机:
$ ./openshift-install destroy bootstrap
2.16. 安装后的任务
OpenShift Container Platform 集群初始化后,您可以执行以下任务。
- 可选:部署后,使用 OpenShift Container Platform 中的 Machine Config Operator(MCO)添加或替换 SSH 密钥。
-
可选:删除
kubeadmin
用户。取而代之,使用身份验证提供程序来创建具有 cluster-admin 特权的用户。
第 3 章 使用自定义在 RHV 上安装集群
您可以在 Red Hat Virtualization(RHV)上自定义并安装 OpenShift Container Platform 集群,如下图所示类似。

安装程序使用安装程序置备的基础架构自动创建和部署集群。
要安装自定义集群,请准备环境并执行以下步骤:
-
通过运行安装程序并根据提示,创建安装配置文件
install-config.yaml
。 -
检查和修改
install-config.yaml
文件中的参数。 -
生成
install-config.yaml
文件的一个工作副本。 -
使用
install-config.yaml
文件的副本来运行安装程序。
然后,安装程序会创建 OpenShift Container Platform 集群。
有关安装自定义集群的其他方法,请参阅 安装默认集群。
这个安装程序只适用于 Linux 和 macOS。
3.1. 先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 在 Red Hat Virtualization(RHV)上的 OpenShift Container Platform Support Matrix 中支持的版本组合。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
- 如果使用防火墙,则会 将其配置为允许集群需要访问的站点。
3.2. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.12 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
3.3. RHV 环境的要求
要安装并运行 OpenShift Container Platform 版本 4.12 集群,RHV 环境必须满足以下要求。
不满足这些要求可能会导致安装或进程失败。另外,无法满足这些要求可能会导致 OpenShift Container Platform 集群在安装后几天或几星期后失败。
对 CPU、内存和存储资源的以下要求是基于 默认值 乘以安装程序创建的默认虚拟机数。除了 RHV 环境用于非 OpenShift Container Platform 操作的资源外,这些资源还必须可用。
默认情况下,安装程序会在安装过程中创建七台虚拟机。首先,它会创建一个 bootstrap 虚拟机来提供临时服务和 control plane,同时创建 OpenShift Container Platform 集群的其余部分。当安装程序完成集群创建后,删除 bootstrap 机器会释放其资源。
如果在 RHV 环境中增加虚拟机数量,则必须相应地增加资源。
要求
- RHV 版本为 4.4。
- RHV 环境有一个数据中心,其状态为 Up。
- RHV 数据中心包含一个 RHV 集群。
RHV 集群具有专门用于 OpenShift Container Platform 集群的以下资源:
- 最小 28 个 vCPU:在安装过程中创建的七台虚拟机中每个都需要 4 个.
112 GiB RAM 或更多,包括:
- 16 GiB 或更多用于提供临时 control plane 的 bootstrap 机器。
- 每个提供 control plane 机器的 control plane 机器都需要 16 GiB 或以上。
- 每个运行应用程序工作负载的三台计算机器都需要 16 GiB 或以上。
- RHV 存储域必须满足 etcd 后端性能要求。
对于关联性组支持:
每个 worker 或 control plane 一台物理机器。worker 和 control plane 可以位于同一台物理机上。例如,如果您有三个 worker 和三个 control plane,则需要三台物理机器。如果您有四个 worker 和三个 control plane,则需要四台物理机器。
- 对于硬反关联性(默认):至少三台物理计算机.对于多个 worker 节点,每个 worker 或 control plane 一台物理机器。worker 和 control plane 可以位于同一台物理机上。
- 对于自定义关联性组:确保资源适合您定义的关联性组规则。
- 在生产环境中,每个虚拟机必须具有 120 GiB 或更多存储。因此,存储域必须为默认的 OpenShift Container Platform 集群提供 840 GiB 或更多存储。在资源受限或非生产环境中,每个虚拟机必须具有 32 GiB 或更多存储,因此对于默认的 OpenShift Container Platform 集群,存储域必须具有 230 GiB 或更多存储。
- 要在安装和更新过程中从红帽生态系统目录下载镜像,RHV 集群必须可以访问互联网。Telemetry 服务还需要互联网连接来简化订阅和权利流程。
- RHV 集群必须具有一个虚拟网络,可访问 RHV Manager 上的 REST API。确保在这个网络中启用了 DHCP,因为安装程序创建的虚拟机会使用 DHCP 获取其 IP 地址。
具有以下最低权限的用户帐户和组,用于在目标 RHV 集群上安装和管理 OpenShift Container Platform 集群:
-
DiskOperator
-
DiskCreator
-
UserTemplateBasedVm
-
TemplateOwner
-
TemplateCreator
-
目标集群中的
ClusterAdmin
-
应用最小权限原则:避免在安装过程中使用带有 RHV SuperUser
权限的管理员帐户。安装程序会将您提供的凭证保存到一个临时的 ovirt-config.yaml
文件中,该文件可能会被破坏。
3.4. 验证 RHV 环境的要求
验证 RHV 环境是否满足安装和运行 OpenShift Container Platform 集群的要求。不满足这些要求可能会导致失败。
这些要求基于安装程序用来创建 control plane 和计算机器的默认资源。这些资源包括 vCPU、内存和存储。如果更改这些资源或增加 OpenShift Container Platform 机器的数量,请相应地调整这些要求。
流程
检查 RHV 版本是否支持安装 OpenShift Container Platform 版本 4.12。
- 在 RHV 管理门户中,单击右上角的 ? 帮助图标,然后选择 About。
- 在打开的窗口中,记下 RHV 软件版本。
- 确认 RHV 版本为 4.4。如需有关支持的版本组合的更多信息,请参阅 RHV 上的 OpenShift Container Platform 支持列表。
检查数据中心、集群和存储。
- 在 RHV 管理门户中,点击 Compute → Data Centers。
- 确认可以访问您要安装 OpenShift Container Platform 的数据中心。
- 单击该数据中心的名称。
- 在数据中心详情中,Storage 选项卡中确认您要安装 OpenShift Container Platform 的存储域是 Active。
- 记录下 域名 以供稍后使用。
- 确认 Free Space 至少为 230 GiB。
- 确认存储域满足 etcd 后端性能要求,您可以使用 fio 性能基准工具进行测量。
- 在数据中心详情中点击 Clusters 选项卡。
- 找到您要安装 OpenShift Container Platform 的 RHV 集群。记录集群名称以供稍后使用。
检查 RHV 主机资源。
- 在 RHV 管理门户中,点击 Compute > Clusters。
- 点击您要安装 OpenShift Container Platform 的集群。
- 在集群详情中点击 Hosts 选项卡。
- 检查主机,并确认它们有至少 28 个 逻辑 CPU 内核, 专门用于 OpenShift Container Platform 集群。
- 记录 逻辑 CPU 内核数 以便稍后使用。
- 确认这些 CPU 内核被分配,在安装过程中创建的七台虚拟机中的每一台都可以有四个内核。
确认主机总共有 112 GiB 的 Max free Memory for scheduling new virtual machines,以满足以下每个 OpenShift Container Platform 机器的要求:
- bootstrap 机器需要 16 GiB
- 三个 control plane 机器都需要 16 GiB
- 三个计算机器各自都需要 16 GiB
- 记录下 Max free Memory for scheduling new virtual machine 的数量, 以便稍后使用。
验证安装 OpenShift Container Platform 的虚拟网络是否可以访问 RHV Manager 的 REST API。在这个网络上的虚拟机中,使用 curl 访问 RHV Manager 的 REST API:
$ curl -k -u <username>@<profile>:<password> \ 1 https://<engine-fqdn>/ovirt-engine/api 2
例如:
$ curl -k -u ocpadmin@internal:pw123 \ https://rhv-env.virtlab.example.com/ovirt-engine/api
3.5. 在 RHV 上准备网络环境
为 OpenShift Container Platform 集群配置两个静态 IP 地址,并使用这些地址创建 DNS 条目。
流程
保留两个静态 IP 地址
- 在您要安装 OpenShift Container Platform 的网络上,标识 DHCP 租期池之外的两个静态 IP 地址。
连接到此网络上的主机,并验证每个 IP 地址都没有被使用。例如,使用地址解析协议(ARP)检查 IP 地址是否有条目:
$ arp 10.35.1.19
输出示例
10.35.1.19 (10.35.1.19) -- no entry
- 为您的网络环境保留两个静态 IP 地址。
- 记录这些 IP 地址以备将来参考。
为 OpenShift Container Platform REST API 创建 DNS 条目,并使用以下格式应用域名:
api.<cluster-name>.<base-domain> <ip-address> 1 *.apps.<cluster-name>.<base-domain> <ip-address> 2
例如:
api.my-cluster.virtlab.example.com 10.35.1.19 *.apps.my-cluster.virtlab.example.com 10.35.1.20
3.6. 以不安全的模式在 RHV 上安装 OpenShift Container Platform
默认情况下,安装程序会创建一个 CA 证书,提示您确认并保存在安装过程中要使用的证书。您不需要手动创建或安装。
虽然不建议您这样做,但您可以覆盖此功能并在不验证证书的情况下安装 OpenShift Container Platform,方法是以 不安全的 模式在 RHV 上安装 OpenShift Container Platform。
不 建议使用不安全 模式安装,因为它可让潜在的攻击者执行 Man-in-the-Middle 攻击并在网络中捕获敏感凭证。
流程
-
创建名为
~/.ovirt/ovirt-config.yaml
的文件。 在
ovirt-config.yaml
中添加以下内容:ovirt_url: https://ovirt.example.com/ovirt-engine/api 1 ovirt_fqdn: ovirt.example.com 2 ovirt_pem_url: "" ovirt_username: ocpadmin@internal ovirt_password: super-secret-password 3 ovirt_insecure: true
- 运行安装程序。
3.7. 为集群节点 SSH 访问生成密钥对
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core
用户的 ~/.ssh/authorized_keys
列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心
通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather
命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 1
- 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519
。如果您已有密钥对,请确保您的公钥位于~/.ssh
目录中。
注意如果您计划在
x86_64
、ppc64le
和s390x
架构上安装使用 FIPS 验证或 Modules In Process 加密库的 OpenShift Container Platform 集群。请不要创建使用ed25519
算法的密钥。相反,创建一个使用rsa
或ecdsa
算法的密钥。查看公共 SSH 密钥:
$ cat <path>/<file_name>.pub
例如,运行以下命令来查看
~/.ssh/id_ed25519.pub
公钥:$ cat ~/.ssh/id_ed25519.pub
将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather
命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa
和~/.ssh/id_dsa
。如果
ssh-agent
进程尚未为您的本地用户运行,请将其作为后台任务启动:$ eval "$(ssh-agent -s)"
输出示例
Agent pid 31874
注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent
:$ ssh-add <path>/<file_name> 1
- 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
3.8. 获取安装程序
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。
重要安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ tar -xvf openshift-install-linux.tar.gz
- 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
3.9. 创建安装配置文件
您可以自定义在 Red Hat Virtualization(RHV)上安装的 OpenShift Container Platform 集群。
先决条件
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 在订阅级别获取服务主体权限。
流程
创建
install-config.yaml
文件。进入包含安装程序的目录并运行以下命令:
$ ./openshift-install create install-config --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定要存储安装程序创建的文件的目录名称。
在指定目录时:
-
验证该目录是否具有
执行
权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 - 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
根据安装程序提示。
对于
SSH 公钥
,请选择免密码公钥,如~/.ssh/id_rsa.pub
。此密钥验证与新 OpenShift Container Platform 集群的连接。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请选择
ssh-agent
进程使用的 SSH 密钥。-
对于
Platform
,选择ovirt
。 对于
Enter oVirt's API 端点 URL
,请使用以下格式输入 RHV API 的 URL:https://<engine-fqdn>/ovirt-engine/api 1
- 1
- 对于
<engine-fqdn>
,请指定 RHV 环境的完全限定域名。
例如:
$ curl -k -u ocpadmin@internal:pw123 \ https://rhv-env.virtlab.example.com/ovirt-engine/api
-
对于
Is the oVirt CA local?
,请输入Yes
,因为您已经设置了 CA 证书。否则,请输入No
。 -
对于
oVirt 的 CA 捆绑包
,如果您为之前的问题输入的是Yes
,请从/etc/pki/ca-trust/source/anchors/ca.pem
中复制证书内容并将其粘贴到此处。然后,按Enter 键
两次。如果您对前一个问题输入No
,则不会出现这个问题。 对于
oVirt engine username
,请使用以下格式输入 RHV 管理员的用户名和配置文件:<username>@<profile> 1
- 1
- 对于
<username>
,请指定 RHV 管理员的用户名。对于<profile>,
请指定登录配置集,您可以进入 RHV 管理门户登录页面并查看 Profile 下拉列表。用户名和配置集应类似以下示例:
ocpadmin@internal
-
对于
oVirt engine password
,请输入 RHV admin 密码。 -
对于
oVirt cluster
,请选择用于安装 OpenShift Container Platform 的集群。 -
对于
oVirt 存储域
,请选择安装 OpenShift Container Platform 的存储域。 -
对于
oVirt network
,请选择可访问 RHV Manager REST API 的虚拟网络。 -
对于
Internal API Virtual IP
,请为集群的 REST API 输入您设置的静态 IP 地址。 -
对于
Ingress 虚拟 IP
,请为通配符应用程序域输入您保留的静态 IP 地址。 -
对于
Base Domain
,请输入 OpenShift Container Platform 集群的基域。如果这个集群暴露于外部世界,这必须是 DNS 基础架构识别的有效域。例如: 输入virtlab.example.com
-
对于
Cluster Name
,请输入集群名称。例如:my-cluster
。使用您为 OpenShift Container Platform REST API 创建的外部注册/可解析 DNS 条目的集群名称,并应用域名。安装程序也将此名称提供给 RHV 环境中的集群。 -
对于
Pull Secret
,请从之前下载并粘贴的 pull-secret.txt
文件中复制 pull secret。您还可以从 Red Hat OpenShift Cluster Manager 获取同一 pull secret 的副本。
修改
install-config.yaml
文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。注意如果您在 Manager 上有任何中间 CA 证书,请验证证书是否出现在
ovirt-config.yaml
文件中以及install-config.yaml
文件中。如果没有显示它们,请按如下所示添加:在
~/.ovirt/ovirt-config.yaml
文件中:[ovirt_ca_bundle]: | -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <INTERMEDIATE_CA> -----END CERTIFICATE-----
在
install-config.yaml
文件中:[additionalTrustBundle]: | -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <INTERMEDIATE_CA> -----END CERTIFICATE-----
备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程中消耗掉。如果要重复使用该文件,您必须立即备份该文件。
3.9.1. Red Hat Virtualization(RHV)的 install-config.yaml
文件示例
您可以通过更改 install-config.yaml
文件中的参数和参数值来自定义安装程序创建的 OpenShift Container Platform 集群。
以下示例专用于在 RHV 上安装 OpenShift Container Platform。
install-config.yaml
位于 <installation_directory>
中,您在运行以下命令时指定的。
$ ./openshift-install create install-config --dir <installation_directory>
-
这些示例文件仅供参考。您必须使用安装程序来获取
install-config.yaml
文件。 -
更改
install-config.yaml
文件可以增加集群所需的资源。验证您的 RHV 环境是否具有这些其他资源。否则,安装或集群将失败。
默认 install-config.yaml
文件示例
apiVersion: v1 baseDomain: example.com compute: - architecture: amd64 hyperthreading: Enabled name: worker platform: ovirt: sparse: false 1 format: raw 2 replicas: 3 controlPlane: architecture: amd64 hyperthreading: Enabled name: master platform: ovirt: sparse: false 3 format: raw 4 replicas: 3 metadata: creationTimestamp: null name: my-cluster networking: 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: ovirt: api_vips: - 10.0.0.10 ingress_vips: - 10.0.0.11 ovirt_cluster_id: 68833f9f-e89c-4891-b768-e2ba0815b76b ovirt_storage_domain_id: ed7b0f4e-0e96-492a-8fff-279213ee1468 ovirt_network_name: ovirtmgmt vnicProfileID: 3fa86930-0be5-4052-b667-b79f0a729692 publish: External pullSecret: '{"auths": ...}' sshKey: ssh-ed12345 AAAA...
在 OpenShift Container Platform 4.12 及更新的版本中,api_vip
和 ingress_vip
配置设置已弃用。反之,使用列表格式在 api_vips
和 ingress_vips
配置设置中输入值。
最小 install-config.yaml
文件示例
apiVersion: v1 baseDomain: example.com metadata: name: test-cluster platform: ovirt: api_vips: - 10.46.8.230 ingress_vips: - 10.46.8.232 ovirt_cluster_id: 68833f9f-e89c-4891-b768-e2ba0815b76b ovirt_storage_domain_id: ed7b0f4e-0e96-492a-8fff-279213ee1468 ovirt_network_name: ovirtmgmt vnicProfileID: 3fa86930-0be5-4052-b667-b79f0a729692 pullSecret: '{"auths": ...}' sshKey: ssh-ed12345 AAAA...
在 OpenShift Container Platform 4.12 及更新的版本中,api_vip
和 ingress_vip
配置设置已弃用。反之,使用列表格式在 api_vips
和 ingress_vips
配置设置中输入值。
install-config.yaml
文件中的自定义机器池示例
apiVersion: v1 baseDomain: example.com controlPlane: name: master platform: ovirt: cpu: cores: 4 sockets: 2 memoryMB: 65536 osDisk: sizeGB: 100 vmType: server replicas: 3 compute: - name: worker platform: ovirt: cpu: cores: 4 sockets: 4 memoryMB: 65536 osDisk: sizeGB: 200 vmType: server replicas: 5 metadata: name: test-cluster platform: ovirt: api_vips: - 10.46.8.230 ingress_vips: - 10.46.8.232 ovirt_cluster_id: 68833f9f-e89c-4891-b768-e2ba0815b76b ovirt_storage_domain_id: ed7b0f4e-0e96-492a-8fff-279213ee1468 ovirt_network_name: ovirtmgmt vnicProfileID: 3fa86930-0be5-4052-b667-b79f0a729692 pullSecret: '{"auths": ...}' sshKey: ssh-ed25519 AAAA...
在 OpenShift Container Platform 4.12 及更新的版本中,api_vip
和 ingress_vip
配置设置已弃用。反之,使用列表格式在 api_vips
和 ingress_vips
配置设置中输入值。
非强制关联性组示例
建议添加一个非强制关联性组来分发 control plane 和 worker(如果可能),以便尽可能多地使用集群。
platform: ovirt: affinityGroups: - description: AffinityGroup to place each compute machine on a separate host enforcing: true name: compute priority: 3 - description: AffinityGroup to place each control plane machine on a separate host enforcing: true name: controlplane priority: 5 - description: AffinityGroup to place worker nodes and control plane nodes on separate hosts enforcing: false name: openshift priority: 5 compute: - architecture: amd64 hyperthreading: Enabled name: worker platform: ovirt: affinityGroupsNames: - compute - openshift replicas: 3 controlPlane: architecture: amd64 hyperthreading: Enabled name: master platform: ovirt: affinityGroupsNames: - controlplane - openshift replicas: 3
为非生产实验设置删除所有关联性组示例
对于非生产实验设置,您必须删除所有关联性组,才能将 OpenShift 容器平台集群集中到您拥有的几个主机上。
platform: ovirt: affinityGroups: [] compute: - architecture: amd64 hyperthreading: Enabled name: worker platform: ovirt: affinityGroupsNames: [] replicas: 3 controlPlane: architecture: amd64 hyperthreading: Enabled name: master platform: ovirt: affinityGroupsNames: [] replicas: 3
3.9.2. 安装配置参数
在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml
安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml
文件以提供有关平台的更多详情。
安装后,您无法在 install-config.yaml
文件中修改这些参数。
3.9.2.1. 所需的配置参数
下表描述了所需的安装配置参数:
参数 | 描述 | 值 |
---|---|---|
|
| 字符串 |
|
云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 |
完全限定域名或子域名,如 |
|
Kubernetes 资源 | 对象 |
|
集群的名称。集群的 DNS 记录是 |
小写字母、连字符( |
|
要执行安装的具体平台配置: | 对象 |
| 从 Red Hat OpenShift Cluster Manager 获取 pull secret,验证从 Quay.io 等服务中下载 OpenShift Container Platform 组件的容器镜像。 |
{ "auths":{ "cloud.openshift.com":{ "auth":"b3Blb=", "email":"you@example.com" }, "quay.io":{ "auth":"b3Blb=", "email":"you@example.com" } } } |
3.9.2.2. 网络配置参数
您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。
仅支持 IPv4 地址。
Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。
参数 | 描述 | 值 |
---|---|---|
| 集群网络的配置。 | 对象 注意
您无法在安装后修改 |
| 要安装的 Red Hat OpenShift Networking 网络插件。 |
|
| pod 的 IP 地址块。
默认值为 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 |
|
使用 IPv4 网络。 |
无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 |
|
分配给每个节点的子网前缀长度。例如,如果 | 子网前缀。
默认值为 |
|
服务的 IP 地址块。默认值为 OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。 | CIDR 格式具有 IP 地址块的数组。例如: networking: serviceNetwork: - 172.30.0.0/16 |
| 机器的 IP 地址块。 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16 |
|
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
3.9.2.3. 可选的配置参数
下表描述了可选的安装配置参数:
参数 | 描述 | 值 |
---|---|---|
| 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用此信任捆绑包。 | 字符串 |
| 控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。 | 字符串数组 |
|
选择要启用的一组初始可选功能。有效值为 | 字符串 |
|
将可选功能集合扩展到您在 | 字符串数组 |
| 组成计算节点的机器的配置。 |
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
是否在计算机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
使用 |
|
|
使用 |
|
| 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
| 为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。 |
字符串.要启用的功能集的名称,如 |
| 组成 control plane 的机器的配置。 |
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
是否在 control plane 机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
使用 |
|
|
使用 |
|
| 要置备的 control plane 机器数量。 |
唯一支持的值是 |
| Cloud Credential Operator(CCO)模式。如果没有指定模式,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。 注意 不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。 注意
如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 |
|
|
启用或禁用 FIPS 模式。默认值为 重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在 注意 如果使用 Azure File 存储,则无法启用 FIPS 模式。 |
|
| release-image 内容的源和存储库。 |
对象数组。包括一个 |
|
使用 | 字符串 |
| 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
| 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
在非云平台上不支持将此字段设置为 重要
如果将字段的值设为 |
| 用于验证对集群机器的访问的 SSH 密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 |
例如, |
3.9.2.4. 其他 Red Hat Virtualization(RHV)配置参数
下表中描述了其他 RHV 配置参数:
参数 | 描述 | 值 |
---|---|---|
| 必需。创建虚拟机的群集。 |
字符串.例如: |
| 必需。创建虚拟机磁盘的存储域 ID。 |
字符串.例如: |
| 必需。创建 VM nics 的网络名称。 |
字符串.例如: |
| 必需。VM 网络接口的 vNIC 配置集 ID。如果集群网络只有一个配置集,则可以推断出这个值。 |
字符串.例如: |
| 必需。分配给 API 虚拟 IP(VIP)的机器网络上的 IP 地址。您可以在此端点访问 OpenShift API。对于双栈网络,最多分配两个 IP 地址。主 IP 地址必须来自 IPv4 网络。 注意
在 OpenShift Container Platform 4.12 及更新的版本中, |
字符串.示例: |
| 必需。分配给 Ingress 虚拟 IP(VIP)的机器网络上的 IP 地址。对于双栈网络,最多分配两个 IP 地址。主 IP 地址必须来自 IPv4 网络。 注意
在 OpenShift Container Platform 4.12 及更新的版本中, |
字符串.示例: |
| 可选。要在安装过程中创建的关联性组列表。 | 对象列表. |
|
如果您包含 |
字符串.示例: |
|
如果您包含 |
字符串.示例: |
|
如果您包含 |
字符串.示例: |
|
如果您包含 |
整数.示例: |
3.9.2.5. 机器池的其他 RHV 参数
下表描述了机器池的其他 RHV 配置参数:
参数 | 描述 | 值 |
---|---|---|
| 可选。定义虚拟机的 CPU。 | 对象 |
|
如果使用 | 整数 |
|
如果使用 | 整数 |
| 可选。MiB 中虚拟机的内存. | 整数 |
| 可选。定义虚拟机的第一个可引导磁盘。 | 字符串 |
|
如果使用 | 数字 |
|
可选。虚拟机工作负载类型,如 注意
| 字符串 |
| 可选。应应用于虚拟机的关联性组名称列表。关联性组必须存在于 RHV 中,或者在安装过程中创建,如本主题中 集群的额外 RHV 参数 中所述。此条目可以为空。
本例定义了两个关联性组,名为 <machine-pool>: platform: ovirt: affinityGroupNames: - compute - clusterWideNonEnforcing 这个示例定义了 no affinity 组: <machine-pool>: platform: ovirt: affinityGroupNames: [] | 字符串 |
|
可选。AutoPinningPolicy 定义自动设置 CPU 和 NUMA 设置的策略,包括固定到实例的主机。当省略该字段时,默认值为 | 字符串 |
|
可选。hugepages 是用于在虚拟机中定义大页的 KiB 大小。支持的值: | 整数 |
您可以将 <machine-pool>
替换为 controlPlane
或 compute
。
3.10. 部署集群
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster
命令一次。
先决条件
-
从运行安装程序的机器中打开
ovirt-imageio
端口到 Manager。默认情况下,端口为54322
。 - 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 验证主机上的云供应商帐户是否有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
流程
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 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 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
您已完成了安装集群所需的步骤。剩余的步骤演示了如何验证集群并对安装进行故障排除。
3.11. 通过下载二进制文件安装 OpenShift CLI
您可以安装 OpenShift CLI(oc
)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则无法使用 OpenShift Container Platform 4.12 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Linux Client 条目旁的 Download Now 来保存文件。
解包存档:
$ tar xvf <file>
将
oc
二进制文件放到PATH 中的目录中
。要查看您的
PATH
,请执行以下命令:$ echo $PATH
验证
安装 OpenShift CLI 后,可以使用
oc
命令:$ oc <command>
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc
二进制文件移到PATH 中的目录中
。要查看您的
PATH
,请打开命令提示并执行以下命令:C:\> path
验证
安装 OpenShift CLI 后,可以使用
oc
命令:C:\> oc <command>
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.12 macOS Client 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.12 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,请打开终端并执行以下命令:$ echo $PATH
验证
安装 OpenShift CLI 后,可以使用
oc
命令:$ oc <command>
3.12. 使用 CLI 登录集群
您可以通过导出集群 kubeconfig
文件,以默认系统用户身份登录集群。kubeconfig
文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。
先决条件
- 已部署 OpenShift Container Platform 集群。
-
已安装
oc
CLI。
流程
导出
kubeadmin
凭证:$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
验证您可以使用导出的配置成功运行
oc
命令:$ oc whoami
输出示例
system:admin
如需更多信息,请参阅 OpenShift CLI 入门。
3.13. 验证集群状态
您可以在安装过程中或安装后验证 OpenShift Container Platform 集群的状态。
流程
在集群环境中,导出管理员的 kubeconfig 文件:
$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
kubeconfig
文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。查看部署后创建的 control plane 和计算机器:
$ oc get nodes
查看集群的版本:
$ oc get clusterversion
查看 Operator 的状态:
$ oc get clusteroperator
查看集群中的所有正在运行的 pod:
$ oc get pods -A
故障排除
如果安装失败,安装程序会超时并显示错误消息。如需更多信息,请参阅 故障排除安装问题。
3.14. 访问 RHV 上的 OpenShift Container Platform Web 控制台
OpenShift Container Platform 集群初始化后,您可以登录到 OpenShift Container Platform Web 控制台。
流程
- 可选: 在 Red Hat Virtualization(RHV)管理门户中,打开 Compute → Cluster。
- 验证安装程序是否创建了虚拟机。
- 返回到安装程序正在运行的命令行。安装程序完成后,它会显示登录 OpenShift Container Platform Web 控制台的用户名和临时密码。
在一个浏览器中,打开 OpenShift Container Platform Web 控制台的 URL。URL 使用以下格式:
console-openshift-console.apps.<clustername>.<basedomain> 1
- 1
- 对于
<clustername>.<basedomain>
,请指定集群名称和基域。
例如:
console-openshift-console.apps.my-cluster.virtlab.example.com
3.15. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.12 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console。
确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
3.16. 在 Red Hat Virtualization(RHV)上安装时的常见问题
以下是您可能遇到的一些常见问题,以及推荐的原因和解决方案。
3.16.1. CPU 负载增加和节点进入非 就绪
状态
-
症状:CPU 负载显著增加,节点开始处于非
Ready 状态
。 - 原因 :存储域延迟可能太大,特别是 control plane 节点。
解决方案 :
通过重启 kubelet 服务使节点再次就绪:
$ systemctl restart kubelet
检查 OpenShift Container Platform 指标服务,该服务会自动收集并报告一些有价值的数据,如 etcd 磁盘同步持续时间。如果集群是可操作的,请使用这些数据来帮助确定存储延迟或吞吐量是否为根本问题。如果是这样,请考虑使用一个较低延迟和更高吞吐量的存储资源。
要获取原始指标,请以 kubeadmin 或具有 cluster-admin 权限的用户身份输入以下命令:
$ oc get --insecure-skip-tls-verify --server=https://localhost:<port> --raw=/metrics
如需更多信息,请参阅 使用 OpenShift 4.x 调试应用程序端点。
3.16.2. 连接 OpenShift Container Platform 集群 API 存在问题
症状 :安装程序完成,但无法使用 OpenShift Container Platform 集群 API。bootstrap 虚拟机在 bootstrap 过程完成后仍然会保留。当您输入以下命令时,响应会超时。
$ oc login -u kubeadmin -p *** <apiurl>
- 原因 : 安装程序没有删除 bootstrap 虚拟机,且没有释放集群的 API IP 地址。
解决方案 :
使用 wait-for
子命令在 bootstrap 过程完成后获得通知:$ ./openshift-install wait-for bootstrap-complete
bootstrap 过程完成后,删除 bootstrap 虚拟机:
$ ./openshift-install destroy bootstrap
3.17. 安装后的任务
OpenShift Container Platform 集群初始化后,您可以执行以下任务。
- 可选:部署后,使用 OpenShift Container Platform 中的 Machine Config Operator(MCO)添加或替换 SSH 密钥。
-
可选:删除
kubeadmin
用户。取而代之,使用身份验证提供程序来创建具有 cluster-admin 特权的用户。
3.18. 后续步骤
第 4 章 使用用户置备的基础架构在 RHV 上安装集群
在 OpenShift Container Platform 版本 4.12 中,您可以在 Red Hat Virtualization(RHV)和其他您提供的基础架构上安装自定义的 OpenShift Container Platform 集群。OpenShift Container Platform 文档使用 用户置备的基础架构来 引用此基础架构类型。
下图显示了在 RHV 集群上运行的潜在 OpenShift Container Platform 集群示例。

RHV 主机运行包含 control plane 和计算 pod 的虚拟机。其中一个主机还运行 Manager 虚拟机和一个包含临时 control plane pod 的 bootstrap 虚拟机。]
4.1. 先决条件
在 RHV 环境上安装 OpenShift Container Platform 集群需要满足以下条件。
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
- 在 Red Hat Virtualization(RHV)上的 OpenShift Container Platform Support Matrix 中支持的版本组合。
4.2. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.12 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
4.3. RHV 环境的要求
要安装并运行 OpenShift Container Platform 版本 4.12 集群,RHV 环境必须满足以下要求。
不满足这些要求可能会导致安装或进程失败。另外,无法满足这些要求可能会导致 OpenShift Container Platform 集群在安装后几天或几星期后失败。
对 CPU、内存和存储资源的以下要求是基于 默认值 乘以安装程序创建的默认虚拟机数。除了 RHV 环境用于非 OpenShift Container Platform 操作的资源外,这些资源还必须可用。
默认情况下,安装程序会在安装过程中创建七台虚拟机。首先,它会创建一个 bootstrap 虚拟机来提供临时服务和 control plane,同时创建 OpenShift Container Platform 集群的其余部分。当安装程序完成集群创建后,删除 bootstrap 机器会释放其资源。
如果在 RHV 环境中增加虚拟机数量,则必须相应地增加资源。
要求
- RHV 版本为 4.4。
- RHV 环境有一个数据中心,其状态为 Up。
- RHV 数据中心包含一个 RHV 集群。
RHV 集群具有专门用于 OpenShift Container Platform 集群的以下资源:
- 最小 28 个 vCPU:在安装过程中创建的七台虚拟机中每个都需要 4 个.
112 GiB RAM 或更多,包括:
- 16 GiB 或更多用于提供临时 control plane 的 bootstrap 机器。
- 每个提供 control plane 机器的 control plane 机器都需要 16 GiB 或以上。
- 每个运行应用程序工作负载的三台计算机器都需要 16 GiB 或以上。
- RHV 存储域必须满足 etcd 后端性能要求。
- 在生产环境中,每个虚拟机必须具有 120 GiB 或更多存储。因此,存储域必须为默认的 OpenShift Container Platform 集群提供 840 GiB 或更多存储。在资源受限或非生产环境中,每个虚拟机必须具有 32 GiB 或更多存储,因此对于默认的 OpenShift Container Platform 集群,存储域必须具有 230 GiB 或更多存储。
- 要在安装和更新过程中从红帽生态系统目录下载镜像,RHV 集群必须可以访问互联网。Telemetry 服务还需要互联网连接来简化订阅和权利流程。
- RHV 集群必须具有一个虚拟网络,可访问 RHV Manager 上的 REST API。确保在这个网络中启用了 DHCP,因为安装程序创建的虚拟机会使用 DHCP 获取其 IP 地址。
具有以下最低权限的用户帐户和组,用于在目标 RHV 集群上安装和管理 OpenShift Container Platform 集群:
-
DiskOperator
-
DiskCreator
-
UserTemplateBasedVm
-
TemplateOwner
-
TemplateCreator
-
目标集群中的
ClusterAdmin
-
应用最小权限原则:避免在安装过程中使用带有 RHV SuperUser
权限的管理员帐户。安装程序会将您提供的凭证保存到一个临时的 ovirt-config.yaml
文件中,该文件可能会被破坏。
4.4. 验证 RHV 环境的要求
验证 RHV 环境是否满足安装和运行 OpenShift Container Platform 集群的要求。不满足这些要求可能会导致失败。
这些要求基于安装程序用来创建 control plane 和计算机器的默认资源。这些资源包括 vCPU、内存和存储。如果更改这些资源或增加 OpenShift Container Platform 机器的数量,请相应地调整这些要求。
流程
检查 RHV 版本是否支持安装 OpenShift Container Platform 版本 4.12。
- 在 RHV 管理门户中,单击右上角的 ? 帮助图标,然后选择 About。
- 在打开的窗口中,记下 RHV 软件版本。
- 确认 RHV 版本为 4.4。如需有关支持的版本组合的更多信息,请参阅 RHV 上的 OpenShift Container Platform 支持列表。
检查数据中心、集群和存储。
- 在 RHV 管理门户中,点击 Compute → Data Centers。
- 确认可以访问您要安装 OpenShift Container Platform 的数据中心。
- 单击该数据中心的名称。
- 在数据中心详情中,Storage 选项卡中确认您要安装 OpenShift Container Platform 的存储域是 Active。
- 记录下 域名 以供稍后使用。
- 确认 Free Space 至少为 230 GiB。
- 确认存储域满足 etcd 后端性能要求,您可以使用 fio 性能基准工具进行测量。
- 在数据中心详情中点击 Clusters 选项卡。
- 找到您要安装 OpenShift Container Platform 的 RHV 集群。记录集群名称以供稍后使用。
检查 RHV 主机资源。
- 在 RHV 管理门户中,点击 Compute > Clusters。
- 点击您要安装 OpenShift Container Platform 的集群。
- 在集群详情中点击 Hosts 选项卡。
- 检查主机,并确认它们有至少 28 个 逻辑 CPU 内核, 专门用于 OpenShift Container Platform 集群。
- 记录 逻辑 CPU 内核数 以便稍后使用。
- 确认这些 CPU 内核被分配,在安装过程中创建的七台虚拟机中的每一台都可以有四个内核。
确认主机总共有 112 GiB 的 Max free Memory for scheduling new virtual machines,以满足以下每个 OpenShift Container Platform 机器的要求:
- bootstrap 机器需要 16 GiB
- 三个 control plane 机器都需要 16 GiB
- 三个计算机器各自都需要 16 GiB
- 记录下 Max free Memory for scheduling new virtual machine 的数量, 以便稍后使用。
验证安装 OpenShift Container Platform 的虚拟网络是否可以访问 RHV Manager 的 REST API。在这个网络上的虚拟机中,使用 curl 访问 RHV Manager 的 REST API:
$ curl -k -u <username>@<profile>:<password> \ 1 https://<engine-fqdn>/ovirt-engine/api 2
例如:
$ curl -k -u ocpadmin@internal:pw123 \ https://rhv-env.virtlab.example.com/ovirt-engine/api
4.5. 用户置备的基础架构对网络的要求
所有 Red Hat Enterprise Linux CoreOS(RHCOS)机器都需要在启动时在 initramfs
中配置联网,以获取它们的 Ignition 配置文件。
在初次启动过程中,机器需要 IP 地址配置,该配置通过 DHCP 服务器或静态设置,提供所需的引导选项。建立网络连接后,机器会从 HTTP 或 HTTPS 服务器下载 Ignition 配置文件。然后,Ignition 配置文件用于设置每台机器的确切状态。Machine Config Operator 在安装后完成对机器的更多更改,如应用新证书或密钥。
建议使用 DHCP 服务器对集群机器进行长期管理。确保 DHCP 服务器已配置为向集群机器提供持久的 IP 地址、DNS 服务器信息和主机名。
如果用户置备的基础架构没有 DHCP 服务,您可以在 RHCOS 安装时向节点提供 IP 网络配置和 DNS 服务器地址。如果要从 ISO 镜像安装,这些参数可作为引导参数传递。如需有关静态 IP 置备和高级网络选项的更多信息,请参阅 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程 部分。
Kubernetes API 服务器必须能够解析集群机器的节点名称。如果 API 服务器和 worker 节点位于不同的区域中,您可以配置默认 DNS 搜索区域,以允许 API 服务器解析节点名称。另一种支持的方法是始终通过节点对象和所有 DNS 请求中的完全限定域名引用主机。
firewall
配置防火墙,以便集群可以访问所需的站点。
另请参阅:
负载均衡器
配置一个或最好是两个 L4 负载均衡器:
-
为 control plane 和 bootstrap 机器上的端口
6443
和22623
提供负载均衡。端口6443
提供对 Kubernetes API 服务器的访问,且必须在内部和外部访问。集群内的节点必须能够访问端口22623
。 -
为运行 Ingress 路由器的机器(通常是默认配置中的计算节点)提供端口
443
和80
的负载均衡。这两个端口都必须从集群内部和外部访问。
DNS
配置基础架构提供的 DNS,以便正确解析主要组件和服务。如果您只使用一个负载均衡器,这些 DNS 记录可以指向相同的 IP 地址。
-
为
api.<cluster_name>.<base_domain>
(内部和外部解析)和api-int.<cluster_name>.<base_domain>
(内部解析)创建 DNS 记录,指向 control plane 机器的负载均衡器。 -
为
*.apps.<cluster_name>.<base_domain>
创建一个 DNS 记录,指向入口路由器的负载均衡器。例如,计算机器的端口443
和80
。
4.5.1. 通过 DHCP 设置集群节点主机名
在 Red Hat Enterprise Linux CoreOS(RHCOS)机器上,主机名是通过 NetworkManager 设置的。默认情况下,机器通过 DHCP 获取其主机名。如果主机名不是由 DHCP 提供,请通过内核参数或者其它方法进行静态设置,请通过反向 DNS 查找获取。反向 DNS 查找在网络初始化后进行,可能需要一些时间来解决。其他系统服务可以在此之前启动,并将主机名检测为 localhost
或类似的内容。您可以使用 DHCP 为每个集群节点提供主机名来避免这种情况。
另外,通过 DHCP 设置主机名可以绕过实施 DNS split-horizon 的环境中的手动 DNS 记录名称配置错误。
4.5.2. 网络连接要求
您必须配置机器之间的网络连接,以允许 OpenShift Container Platform 集群组件进行通信。每台机器都必须能够解析集群中所有其他机器的主机名。
本节详细介绍了所需的端口。
在连接的 OpenShift Container Platform 环境中,所有节点都需要访问互联网才能为平台容器拉取镜像,并向红帽提供遥测数据。
协议 | port | 描述 |
---|---|---|
ICMP | N/A | 网络可访问性测试 |
TCP |
| 指标 |
|
主机级别的服务,包括端口 9 | |
| Kubernetes 保留的默认端口 | |
| openshift-sdn | |
UDP |
| VXLAN |
| Geneve | |
|
主机级别的服务,包括端口 | |
| IPsec IKE 数据包 | |
| IPsec NAT-T 数据包 | |
|
UDP 端口
如果配置了外部 NTP 时间服务器,需要打开 UDP 端口 | |
TCP/UDP |
| Kubernetes 节点端口 |
ESP | N/A | IPsec Encapsulating Security Payload(ESP) |
协议 | port | 描述 |
---|---|---|
TCP |
| Kubernetes API |
协议 | port | 描述 |
---|---|---|
TCP |
| etcd 服务器和对等端口 |
用户置备的基础架构的 NTP 配置
OpenShift Container Platform 集群被配置为默认使用公共网络时间协议(NTP)服务器。如果要使用本地企业 NTP 服务器,或者集群部署在断开连接的网络中,您可以将集群配置为使用特定的时间服务器。如需更多信息,请参阅配置 chrony 时间服务 的文档。
如果 DHCP 服务器提供 NTP 服务器信息,Red Hat Enterprise Linux CoreOS(RHCOS)机器上的 chrony 时间服务会读取信息,并可以把时钟与 NTP 服务器同步。
4.6. 设置安装机器
要运行二进制 openshift-install
安装程序和 Ansible 脚本,请设置 RHV Manager 或具有网络访问 RHV 环境的 Red Hat Enterprise Linux(RHEL)计算机以及 Manager 上的 REST API。
流程
更新或安装 Python3 和 Ansible。例如:
# dnf update python3 ansible
-
安装
python3-ovirt-engine-sdk4
软件包,以获取 Python 软件开发套件。 安装
ovirt.image-template
Ansible 角色。在 RHV Manager 和其他 Red Hat Enterprise Linux(RHEL)机器上,这个角色作为ovirt-ansible-image-template
软件包发布。例如,输入:# dnf install ovirt-ansible-image-template
安装
ovirt.vm-infra
Ansible 角色。在 RHV Manager 和其他 RHEL 机器上,此角色作为ovirt-ansible-vm-infra
软件包发布。# dnf install ovirt-ansible-vm-infra
创建环境变量并为其分配绝对或相对路径。例如,输入:
$ export ASSETS_DIR=./wrk
注意安装程序使用此变量创建保存重要安装相关文件的目录。之后,安装过程会重复使用此变量来定位这些资产文件。避免删除此资产目录 ; 卸载集群时需要该目录。
4.7. 以不安全的模式在 RHV 上安装 OpenShift Container Platform
默认情况下,安装程序会创建一个 CA 证书,提示您确认并保存在安装过程中要使用的证书。您不需要手动创建或安装。
虽然不建议您这样做,但您可以覆盖此功能并在不验证证书的情况下安装 OpenShift Container Platform,方法是以 不安全的 模式在 RHV 上安装 OpenShift Container Platform。
不 建议使用不安全 模式安装,因为它可让潜在的攻击者执行 Man-in-the-Middle 攻击并在网络中捕获敏感凭证。
流程
-
创建名为
~/.ovirt/ovirt-config.yaml
的文件。 在
ovirt-config.yaml
中添加以下内容:ovirt_url: https://ovirt.example.com/ovirt-engine/api 1 ovirt_fqdn: ovirt.example.com 2 ovirt_pem_url: "" ovirt_username: ocpadmin@internal ovirt_password: super-secret-password 3 ovirt_insecure: true
- 运行安装程序。
4.8. 为集群节点 SSH 访问生成密钥对
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core
用户的 ~/.ssh/authorized_keys
列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心
通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather
命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 1
- 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519
。如果您已有密钥对,请确保您的公钥位于~/.ssh
目录中。
注意如果您计划在
x86_64
、ppc64le
和s390x
架构上安装使用 FIPS 验证或 Modules In Process 加密库的 OpenShift Container Platform 集群。请不要创建使用ed25519
算法的密钥。相反,创建一个使用rsa
或ecdsa
算法的密钥。查看公共 SSH 密钥:
$ cat <path>/<file_name>.pub
例如,运行以下命令来查看
~/.ssh/id_ed25519.pub
公钥:$ cat ~/.ssh/id_ed25519.pub
将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather
命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa
和~/.ssh/id_dsa
。如果
ssh-agent
进程尚未为您的本地用户运行,请将其作为后台任务启动:$ eval "$(ssh-agent -s)"
输出示例
Agent pid 31874
注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent
:$ ssh-add <path>/<file_name> 1
- 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
4.9. 获取安装程序
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。
重要安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ tar -xvf openshift-install-linux.tar.gz
- 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
4.10. 下载 Ansible playbook
下载 Ansible playbook 以在 RHV 上安装 OpenShift Container Platform 版本 4.12。
流程
在您的安装机器中运行以下命令:
$ mkdir playbooks
$ cd playbooks
$ xargs -n 1 curl -O <<< ' https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/bootstrap.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/common-auth.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/create-templates-and-vms.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/inventory.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/masters.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/retire-bootstrap.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/retire-masters.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/retire-workers.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/workers.yml'
后续步骤
-
下载这些 Ansible playbook 后,还必须为资产目录创建环境变量,并在运行安装程序创建安装配置文件前自定义
inventory.yml
文件。
4.11. inventory.yml 文件
您可以使用 inventory.yml
文件来定义并创建您要安装的 OpenShift Container Platform 集群的元素。这包括 Red Hat Enterprise Linux CoreOS(RHCOS)镜像、虚拟机模板、bootstrap 机器、control plane 节点和 worker 节点等元素。您还可以使用 inventory.yml
来销毁集群。
以下 inventory.yml
示例显示参数及其默认值。这些默认值中的数量和数量满足在 RHV 环境中运行生产 OpenShift Container Platform 集群的要求。
inventory.yml
文件示例
--- all: vars: ovirt_cluster: "Default" ocp: assets_dir: "{{ lookup('env', 'ASSETS_DIR') }}" ovirt_config_path: "{{ lookup('env', 'HOME') }}/.ovirt/ovirt-config.yaml" # --- # {op-system} section # --- rhcos: image_url: "https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.12/latest/rhcos-openstack.x86_64.qcow2.gz" local_cmp_image_path: "/tmp/rhcos.qcow2.gz" local_image_path: "/tmp/rhcos.qcow2" # --- # Profiles section # --- control_plane: cluster: "{{ ovirt_cluster }}" memory: 16GiB sockets: 4 cores: 1 template: rhcos_tpl operating_system: "rhcos_x64" type: high_performance graphical_console: headless_mode: false protocol: - spice - vnc disks: - size: 120GiB name: os interface: virtio_scsi storage_domain: depot_nvme nics: - name: nic1 network: lab profile: lab compute: cluster: "{{ ovirt_cluster }}" memory: 16GiB sockets: 4 cores: 1 template: worker_rhcos_tpl operating_system: "rhcos_x64" type: high_performance graphical_console: headless_mode: false protocol: - spice - vnc disks: - size: 120GiB name: os interface: virtio_scsi storage_domain: depot_nvme nics: - name: nic1 network: lab profile: lab # --- # Virtual machines section # --- vms: - name: "{{ metadata.infraID }}-bootstrap" ocp_type: bootstrap profile: "{{ control_plane }}" type: server - name: "{{ metadata.infraID }}-master0" ocp_type: master profile: "{{ control_plane }}" - name: "{{ metadata.infraID }}-master1" ocp_type: master profile: "{{ control_plane }}" - name: "{{ metadata.infraID }}-master2" ocp_type: master profile: "{{ control_plane }}" - name: "{{ metadata.infraID }}-worker0" ocp_type: worker profile: "{{ compute }}" - name: "{{ metadata.infraID }}-worker1" ocp_type: worker profile: "{{ compute }}" - name: "{{ metadata.infraID }}-worker2" ocp_type: worker profile: "{{ compute }}"
为描述以"Enter"开头的参数输入值。否则,您可以使用默认值或将其替换为新值。
常规部分
-
ovirt_cluster
:输入现有 RHV 集群的名称,在其中安装 OpenShift Container Platform 集群。 -
OCP.assets_dir
:openshift-install
安装程序创建的目录的路径,以存储它生成的文件。 -
OCP.ovirt_config_path
:安装程序生成的ovirt-config.yaml
文件的路径,如./wrk/install-config.yaml
。此文件包含与管理器的 REST API 交互所需的凭据。
Red Hat Enterprise Linux CoreOS(RHCOS)部分
-
image_url
:输入您为下载指定的 RHCOS 镜像的 URL。 -
local_cmp_image_path
:压缩 RHCOS 镜像的本地下载目录的路径。 -
local_image_path
:提取的 RHCOS 镜像的本地目录路径。
配置集部分
本节由两个配置集组成:
-
control_plane
:bootstrap 和 control plane 节点的配置集。 -
compute:compute
plane 中 worker 节点的配置集。
这些配置集有以下参数:参数的默认值满足运行生产集群的最低要求。您可以增加或自定义这些值来满足工作负载要求。
-
Cluster
:该值从 General Section 中的ovirt_cluster
获取集群名称。 -
memory
:虚拟机的内存量(以 GB 为单位)。 -
socket
:虚拟机的插槽数量。 -
cores
:虚拟机的内核数。 -
template
:虚拟机模板的名称。如果计划安装多个集群,且这些集群使用包含不同规格的模板,请使用集群的 ID 预先填充模板名称。 -
operating_system
:虚拟机中的客户机操作系统类型。对于 oVirt/RHV 版本 4.4,这个值必须是rhcos_x64
,以便Ignition 脚本
的值可以传递给虚拟机。 type
:输入server
作为虚拟机的类型。重要您必须将
type
参数的值从high_performance
更改为server
。-
Disk
:磁盘规格。control_plane
和compute
节点可以有不同的存储域。 -
size
:最小磁盘大小。 -
Name
:
输入连接到 RHV 中目标集群的磁盘名称。 -
Interface
:输入您指定的磁盘的接口类型。 -
storage_domain
:输入您指定的磁盘的存储域。 -
NIC
:输入虚拟机使用的名称和
网络
。您还可以指定虚拟网络接口配置集。默认情况下,NIC 从 oVirt/RHV MAC 池获取其 MAC 地址。
虚拟机部分
最后部分 vms
定义您要在集群中创建和部署的虚拟机。默认情况下,它为生产环境提供最少的 control plane 和 worker 节点数量。
虚拟机包含
三个所需元素:
-
name
:虚拟机的名称。在本例中,metadata.infraID 使用 metadata
.yml
文件中的基础架构 ID 预先填充虚拟机名称。 -
ocp_type
:OpenShift Container Platform 集群中虚拟机的角色。可能的值有bootstrap
、master 和
worker
。 profile
:每个虚拟机从中继承规格的配置集名称。本例中可能的值为control_plane 或
compute
。您可以覆盖虚拟机从其配置集中继承的值。为此,您要将 profile 属性的名称添加到
inventory.yml
中的虚拟机,并为它分配一个覆盖值。要查看以下示例,请检查前面的inventory.yml
示例中的name: "{{ metadata.infraID }}-bootstrap"
虚拟机:它有一个type
属性,其值为server
,将覆盖此虚拟机将从control_plane
配置集继承的type
属性的值。
元数据变量
对于虚拟机,metadata.infraID
会使用构建 Ignition 文件时创建的 metadata.json
文件中的基础架构 ID 来附加虚拟机的名称。
playbook 使用以下代码从 ocp.assets_dir
中的特定文件中读取 infraID
。
--- - name: include metadata.json vars include_vars: file: "{{ ocp.assets_dir }}/metadata.json" name: metadata ...
4.12. 指定 RHCOS 镜像设置
更新 inventory.yml
文件的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像设置。之后,当您运行此文件之一时,它会将压缩的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像从 image_url
URL 下载到 local_cmp_image_path
目录。然后,playbook 将镜像解压缩到 local_image_path
目录,并使用它来创建 oVirt/RHV 模板。
流程
- 找到您要安装的 OpenShift Container Platform 版本的 RHCOS 镜像下载页面,如 /pub/openshift-v4/dependencies/rhcos/latest/latest/latest/latest/latest。
-
在该下载页面中复制 OpenStack
qcow2
镜像的 URL,如https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.12/latest/rhcos-openstack.x86_64.qcow2.gz
。 编辑之前下载的
inventory.yml
playbook。在其中包含,将 URL 粘贴为image_url
的值。例如:rhcos: "https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.12/latest/rhcos-openstack.x86_64.qcow2.gz"
4.13. 创建安装配置文件
您可以通过运行安装程序 openshift-install
并使用之前指定或收集的信息响应其提示来创建安装配置文件。
当完成对提示的响应时,安装程序会在您之前指定的 asset 目录中创建 install-config.yaml
文件的初始版本,如 ./wrk/install-config.yaml
安装程序还会创建一个文件 $HOME/.ovirt/ovirt-config.yaml
,其中包含访问 Manager 并使用其 REST API 所需的所有连接参数。
注: 安装过程不使用您为一些参数提供的值,如 内部 API 虚拟 IP
和 Ingress 虚拟 IP
,因为您已在基础架构 DNS 中配置了它们。
它还使用您为 inventory.yml
中的参数提供的值,如 oVirt cluster
、oVirt storage
和 oVirt network
。使用脚本删除或替换 install-config.yaml
中的这些相同的值,使用前面提到的 虚拟 IP
。
流程
运行安装程序:
$ openshift-install create install-config --dir $ASSETS_DIR
根据安装程序的提示输入您的系统信息。
输出示例
? SSH Public Key /home/user/.ssh/id_dsa.pub ? Platform <ovirt> ? Engine FQDN[:PORT] [? for help] <engine.fqdn> ? Enter ovirt-engine username <ocpadmin@internal> ? Enter password <******> ? oVirt cluster <cluster> ? oVirt storage <storage> ? oVirt network <net> ? Internal API virtual IP <172.16.0.252> ? Ingress virtual IP <172.16.0.251> ? Base Domain <example.org> ? Cluster Name <ocp4> ? Pull Secret [? for help] <********>
? SSH Public Key /home/user/.ssh/id_dsa.pub ? Platform <ovirt> ? Engine FQDN[:PORT] [? for help] <engine.fqdn> ? Enter ovirt-engine username <ocpadmin@internal> ? Enter password <******> ? oVirt cluster <cluster> ? oVirt storage <storage> ? oVirt network <net> ? Internal API virtual IP <172.16.0.252> ? Ingress virtual IP <172.16.0.251> ? Base Domain <example.org> ? Cluster Name <ocp4> ? Pull Secret [? for help] <********>
对于 Internal API 虚拟 IP
和 Ingress 虚拟 IP
,请提供您在配置 DNS 服务时指定的 IP 地址。
您输入 oVirt 集群
和 Base Domain
的值一起形成 REST API 的 URL 的 FQDN 部分以及您创建的所有应用程序,如 https://api.ocp4.example.org:6443/
和 https://console-openshift-console.apps.ocp4.example.org。
4.14. 自定义 install-config.yaml
在这里,您使用三个 Python 脚本覆盖一些安装程序的默认行为:
- 默认情况下,安装程序使用机器 API 创建节点。要覆盖此默认行为,请将计算节点数量设置为零个副本。稍后,您将使用 Ansible playbook 创建计算节点。
- 默认情况下,安装程序为节点设置机器网络的 IP 范围。要覆盖此默认行为,您可以将 IP 范围设置为与您的基础架构匹配。
-
默认情况下,安装程序将平台设置为
ovirt
。但是,在用户置备的基础架构上安装集群与在裸机上安装集群更为相似。因此,您可以从install-config.yaml
中删除 ovirt platform 部分,并将平台改为none
。您可以使用inventory.yml
指定所有所需的设置。
这些片断可用于 Python 3 和 Python 2。
流程
将计算节点数量设置为零副本:
$ python3 -c 'import os, yaml path = "%s/install-config.yaml" % os.environ["ASSETS_DIR"] conf = yaml.safe_load(open(path)) conf["compute"][0]["replicas"] = 0 open(path, "w").write(yaml.dump(conf, default_flow_style=False))'
设置机器网络的 IP 范围。例如,要将范围设置为
172.16.0.0/16
,请输入:$ python3 -c 'import os, yaml path = "%s/install-config.yaml" % os.environ["ASSETS_DIR"] conf = yaml.safe_load(open(path)) conf["networking"]["machineNetwork"][0]["cidr"] = "172.16.0.0/16" open(path, "w").write(yaml.dump(conf, default_flow_style=False))'
删除
ovirt
部分,并将平台改为none
:$ python3 -c 'import os, yaml path = "%s/install-config.yaml" % os.environ["ASSETS_DIR"] conf = yaml.safe_load(open(path)) platform = conf["platform"] del platform["ovirt"] platform["none"] = {} open(path, "w").write(yaml.dump(conf, default_flow_style=False))'
警告Red Hat Virtualization 目前不支持使用 oVirt 平台的用户置备的基础架构进行安装。因此,您必须将平台设置为
none
,允许 OpenShift Container Platform 将每个节点识别为裸机节点,并将集群识别为裸机集群。这与 在任何平台上安装集群 相同,并有以下限制:- 没有集群供应商,因此您必须手动添加每台机器,且没有节点扩展功能。
- 不会安装 oVirt CSI 驱动程序,且没有 CSI 功能。
4.15. 生成清单文件
使用安装程序在 asset 目录中生成一组清单文件。
生成清单文件的命令在消耗 install-config.yaml
文件前会显示警告消息。
如果您计划重复使用 install-config.yaml
文件,请在生成清单文件前在备份前创建备份副本。
流程
可选:创建
install-config.yaml
文件的备份副本:$ cp install-config.yaml install-config.yaml.backup
在资产目录中生成一组清单:
$ openshift-install create manifests --dir $ASSETS_DIR
此命令显示以下消息:
输出示例
INFO Consuming Install Config from target directory WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings
该命令生成以下清单文件:
输出示例
$ tree . └── wrk ├── manifests │ ├── 04-openshift-machine-config-operator.yaml │ ├── cluster-config.yaml │ ├── cluster-dns-02-config.yml │ ├── cluster-infrastructure-02-config.yml │ ├── cluster-ingress-02-config.yml │ ├── cluster-network-01-crd.yml │ ├── cluster-network-02-config.yml │ ├── cluster-proxy-01-config.yaml │ ├── cluster-scheduler-02-config.yml │ ├── cvo-overrides.yaml │ ├── etcd-ca-bundle-configmap.yaml │ ├── etcd-client-secret.yaml │ ├── etcd-host-service-endpoints.yaml │ ├── etcd-host-service.yaml │ ├── etcd-metric-client-secret.yaml │ ├── etcd-metric-serving-ca-configmap.yaml │ ├── etcd-metric-signer-secret.yaml │ ├── etcd-namespace.yaml │ ├── etcd-service.yaml │ ├── etcd-serving-ca-configmap.yaml │ ├── etcd-signer-secret.yaml │ ├── kube-cloud-config.yaml │ ├── kube-system-configmap-root-ca.yaml │ ├── machine-config-server-tls-secret.yaml │ └── openshift-config-secret-pull-secret.yaml └── openshift ├── 99_kubeadmin-password-secret.yaml ├── 99_openshift-cluster-api_master-user-data-secret.yaml ├── 99_openshift-cluster-api_worker-user-data-secret.yaml ├── 99_openshift-machineconfig_99-master-ssh.yaml ├── 99_openshift-machineconfig_99-worker-ssh.yaml └── openshift-install-manifests.yaml
后续步骤
- 使 control plane 节点不可调度。
4.16. 使 control-plane 节点不可调度
由于要手动创建和部署 control plane 机器,因此您必须配置清单文件,使 control plane 节点不可调度。
流程
要使 control plane 节点不可调度,请输入:
$ python3 -c 'import os, yaml path = "%s/manifests/cluster-scheduler-02-config.yml" % os.environ["ASSETS_DIR"] data = yaml.safe_load(open(path)) data["spec"]["mastersSchedulable"] = False open(path, "w").write(yaml.dump(data, default_flow_style=False))'
4.17. 构建 Ignition 文件
要从您刚才生成和修改的清单文件构建 Ignition 文件,请运行安装程序。此操作会创建一个 Red Hat Enterprise Linux CoreOS(RHCOS)机器 initramfs
,它将获取 Ignition 文件并执行创建节点所需的配置。
除了 Ignition 文件外,安装程序还会生成以下内容:
-
包含使用
oc
和kubectl
工具连接到集群的 admin 凭证的auth
目录。 -
包含当前安装的 OpenShift Container Platform 集群名称、集群 ID 和基础架构 ID 的
metadata.json
文件。
此安装过程的 Ansible playbook 使用 infraID
值作为它们所创建虚拟机的前缀。这可防止在同一 oVirt/RHV 集群中有多个安装时命名冲突。
Ignition 配置文件中的证书会在 24 小时后过期。完成集群安装,并使集群以非降级状态运行 24 小时,以便完成第一次证书轮转。
流程
要构建 Ignition 文件,请输入:
$ openshift-install create ignition-configs --dir $ASSETS_DIR
输出示例
$ tree . └── wrk ├── auth │ ├── kubeadmin-password │ └── kubeconfig ├── bootstrap.ign ├── master.ign ├── metadata.json └── worker.ign
4.18. 创建模板和虚拟机
确认 inventory.yml
中的变量后,您将运行第一个 Ansible 调配 playbook create-templates-and-vms.yml
。
此 playbook 使用 $HOME/.ovirt/ovirt-config.yaml
中的 RHV Manager 的连接参数,并在 asset 目录中读取 metadata.json
。
如果本地 Red Hat Enterprise Linux CoreOS(RHCOS)镜像不存在,则 playbook 会从您为 inventory.yml
中 image_url
指定的 URL 下载一个。它将提取映像并将其上传到 RHV 以创建模板。
playbook 根据 inventory.yml
文件中的 control_plane
和 compute
配置集创建一个模板。如果这些配置集有不同的名称,它会创建两个模板。
playbook 完成后,它创建的虚拟机将停止。您可以从中获取信息,以帮助配置其他基础架构元素。例如,您可以获取虚拟机的 MAC 地址来配置 DHCP,为虚拟机分配永久 IP 地址。
流程
-
在
inventory.yml
中,在control_plane
和compute
变量下,将type: high_performance
的两个实例更改为type: server
。 可选: 如果您计划在同一集群中执行多个安装,请为每个 OpenShift Container Platform 安装创建不同的模板。在
inventory.yml
文件中,使用infraID
预先填充 模板
的值。例如:control_plane: cluster: "{{ ovirt_cluster }}" memory: 16GiB sockets: 4 cores: 1 template: "{{ metadata.infraID }}-rhcos_tpl" operating_system: "rhcos_x64" ...
创建模板和虚拟机:
$ ansible-playbook -i inventory.yml create-templates-and-vms.yml
4.19. 创建 bootstrap 机器
您可以通过运行 bootstrap .yml playbook 创建 bootstrap 机器
。此 playbook 启动 bootstrap 虚拟机,并从 asset 目录中传递 bootstrap.ign
Ignition 文件。bootstrap 节点配置自己,以便它可以向 control plane 节点提供 Ignition 文件。
要监控 bootstrap 过程,您可以使用 RHV 管理门户中的控制台或使用 SSH 连接到虚拟机。
流程
创建 bootstrap 机器:
$ ansible-playbook -i inventory.yml bootstrap.yml
使用管理门户或 SSH 中的控制台连接到 bootstrap 机器。将
<bootstrap_ip>
替换为 bootstrap 节点 IP 地址。要使用 SSH,请输入:$ ssh core@<boostrap.ip>
从 bootstrap 节点收集发行镜像服务的
bootkube.service
journald 单元日志:[core@ocp4-lk6b4-bootstrap ~]$ journalctl -b -f -u release-image.service -u bootkube.service
注意bootstrap 节点上的
bootkube.service
日志输出 etcd连接被拒绝
的错误,这表示 bootstrap 服务器无法在 control plane 节点上连接到 etcd。在每个 control plane 节点上启动 etcd 且节点已加入集群后,错误应该会停止。
4.20. 创建 control plane 节点
您可以通过运行 masters.yml
playbook 创建 control plane 节点。此 playbook 将 master.ign
Ignition 文件传递给每个虚拟机。Ignition 文件包含 control plane 节点的指令,可从 URL(如 https://api-int.ocp4.example.org:22623/config/master
)获取 Ignition。这个 URL 中的端口号由负载均衡器管理,且只能在集群中访问。
流程
创建 control plane 节点:
$ ansible-playbook -i inventory.yml masters.yml
在 playbook 创建 control plane 时,监控 bootstrap 过程:
$ openshift-install wait-for bootstrap-complete --dir $ASSETS_DIR
输出示例
INFO API v1.25.0 up INFO Waiting up to 40m0s for bootstrapping to complete...
当 control plane 节点上的所有 pod 都启动并运行 etcd 时,安装程序会显示以下输出。
输出示例
INFO It is now safe to remove the bootstrap resources
4.21. 验证集群状态
您可以在安装过程中或安装后验证 OpenShift Container Platform 集群的状态。
流程
在集群环境中,导出管理员的 kubeconfig 文件:
$ export KUBECONFIG=$ASSETS_DIR/auth/kubeconfig
kubeconfig
文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。查看部署后创建的 control plane 和计算机器:
$ oc get nodes
查看集群的版本:
$ oc get clusterversion
查看 Operator 的状态:
$ oc get clusteroperator
查看集群中的所有正在运行的 pod:
$ oc get pods -A
4.22. 删除 bootstrap 机器
在 wait-for
命令显示 bootstrap 过程完成后,您必须删除 bootstrap 虚拟机来释放计算、内存和存储资源。另外,从负载均衡器指令中删除 bootstrap 机器的设置。
流程
要从集群中删除 bootstrap 机器,请输入:
$ ansible-playbook -i inventory.yml retire-bootstrap.yml
- 从负载均衡器指令中删除 bootstrap 机器的设置。
4.23. 创建 worker 节点并完成安装
创建 worker 节点与创建 control plane 节点类似。但是,worker 节点 worker 不会自动加入集群。要将它们添加到集群中,您需要检查并批准 worker 的待处理的 CSR(Certificate Signing Requests)。
批准第一个请求后,您可以继续批准 CSR,直到所有 worker 节点都被批准为止。完成此过程后,worker 节点将变为 Ready
,并可调度在其上运行的 pod。
最后,监控命令行以查看安装过程何时完成。
流程
创建 worker 节点:
$ ansible-playbook -i inventory.yml workers.yml
要列出所有 CSR,请输入:
$ oc get csr -A
最后,这个命令会显示每个节点的一个 CSR。例如:
输出示例
NAME AGE SIGNERNAME REQUESTOR CONDITION csr-2lnxd 63m kubernetes.io/kubelet-serving system:node:ocp4-lk6b4-master0.ocp4.example.org Approved,Issued csr-hff4q 64m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Approved,Issued csr-hsn96 60m kubernetes.io/kubelet-serving system:node:ocp4-lk6b4-master2.ocp4.example.org Approved,Issued csr-m724n 6m2s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending csr-p4dz2 60m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Approved,Issued csr-t9vfj 60m kubernetes.io/kubelet-serving system:node:ocp4-lk6b4-master1.ocp4.example.org Approved,Issued csr-tggtr 61m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Approved,Issued csr-wcbrf 7m6s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending
要过滤列表并只查看待处理的 CSR,请输入:
$ watch "oc get csr -A | grep pending -i"
此命令每两秒钟刷新输出一次,仅显示待处理的 CSR。例如:
输出示例
Every 2.0s: oc get csr -A | grep pending -i csr-m724n 10m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending csr-wcbrf 11m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending
检查每个待处理的请求。例如:
输出示例
$ oc describe csr csr-m724n
输出示例
Name: csr-m724n Labels: <none> Annotations: <none> CreationTimestamp: Sun, 19 Jul 2020 15:59:37 +0200 Requesting User: system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Signer: kubernetes.io/kube-apiserver-client-kubelet Status: Pending Subject: Common Name: system:node:ocp4-lk6b4-worker1.ocp4.example.org Serial Number: Organization: system:nodes Events: <none>
如果 CSR 信息正确,则批准请求:
$ oc adm certificate approve csr-m724n
等待安装过程完成:
$ openshift-install wait-for install-complete --dir $ASSETS_DIR --log-level debug
安装完成后,命令行会显示 OpenShift Container Platform Web 控制台的 URL,以及管理员用户名和密码。
4.24. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.12 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console。
确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
第 5 章 在受限网络中的 RHV 上安装集群
在 OpenShift Container Platform 版本 4.12 中,您可以通过创建安装发行内容的内部镜像在受限网络中的 Red Hat Virtualization(RHV)上安装自定义的 OpenShift Container Platform 集群。
5.1. 先决条件
在 RHV 环境上安装 OpenShift Container Platform 集群需要满足以下条件。
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
- 在 RHV 上的 OpenShift Container Platform Support Matrix 中支持的版本组合。
您在镜像主机上创建 registry,并获取您的 OpenShift Container Platform 版本的
imageContentSources
数据。重要由于安装介质位于镜像主机上,因此您可以使用该计算机完成所有安装步骤。
- 已为集群置备了 持久性存储。要部署私有镜像 registry,您的存储必须提供 ReadWriteMany 访问模式。
如果您使用防火墙并计划使用 Telemetry 服务,则将防火墙配置为允许集群需要访问的站点。
注意如果要配置代理,请务必查看此站点列表。
5.2. 关于在受限网络中安装
在 OpenShift Container Platform 4.12 中,可以执行不需要有效的互联网连接来获取软件组件的安装。受限网络安装可以使用安装程序置备的基础架构或用户置备的基础架构完成,具体取决于您要安装集群的云平台。
如果您选择在云平台中执行受限网络安装,您仍需要访问其云 API。有些云功能,比如 Amazon Web Service 的 Route 53 DNS 和 IAM 服务,需要访问互联网。根据您的网络,在裸机硬件、Nutanix 或 VMware vSphere 上安装可能需要较少的互联网访问。
要完成受限网络安装,您必须创建一个 registry,以镜像 OpenShift 镜像 registry 的内容并包含安装介质。您可以在镜像主机上创建此 registry,该主机可同时访问互联网和您的封闭网络,也可以使用满足您的限制条件的其他方法。
5.2.1. 其他限制
受限网络中的集群有以下额外限制和限制:
-
ClusterVersion
状态包含一个Unable to retrieve available updates
错误。 - 默认情况下,您无法使用 Developer Catalog 的内容,因为您无法访问所需的镜像流标签。
5.3. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.12 中,您需要访问互联网来获得用来安装集群的镜像。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
5.4. RHV 环境的要求
要安装并运行 OpenShift Container Platform 版本 4.12 集群,RHV 环境必须满足以下要求。
不满足这些要求可能会导致安装或进程失败。另外,无法满足这些要求可能会导致 OpenShift Container Platform 集群在安装后几天或几星期后失败。
对 CPU、内存和存储资源的以下要求是基于 默认值 乘以安装程序创建的默认虚拟机数。除了 RHV 环境用于非 OpenShift Container Platform 操作的资源外,这些资源还必须可用。
默认情况下,安装程序会在安装过程中创建七台虚拟机。首先,它会创建一个 bootstrap 虚拟机来提供临时服务和 control plane,同时创建 OpenShift Container Platform 集群的其余部分。当安装程序完成集群创建后,删除 bootstrap 机器会释放其资源。
如果在 RHV 环境中增加虚拟机数量,则必须相应地增加资源。
要求
- RHV 版本为 4.4。
- RHV 环境有一个数据中心,其状态为 Up。
- RHV 数据中心包含一个 RHV 集群。
RHV 集群具有专门用于 OpenShift Container Platform 集群的以下资源:
- 最小 28 个 vCPU:在安装过程中创建的七台虚拟机中每个都需要 4 个.
112 GiB RAM 或更多,包括:
- 16 GiB 或更多用于提供临时 control plane 的 bootstrap 机器。
- 每个提供 control plane 机器的 control plane 机器都需要 16 GiB 或以上。
- 每个运行应用程序工作负载的三台计算机器都需要 16 GiB 或以上。
- RHV 存储域必须满足 etcd 后端性能要求。
- 在生产环境中,每个虚拟机必须具有 120 GiB 或更多存储。因此,存储域必须为默认的 OpenShift Container Platform 集群提供 840 GiB 或更多存储。在资源受限或非生产环境中,每个虚拟机必须具有 32 GiB 或更多存储,因此对于默认的 OpenShift Container Platform 集群,存储域必须具有 230 GiB 或更多存储。
- 要在安装和更新过程中从红帽生态系统目录下载镜像,RHV 集群必须可以访问互联网。Telemetry 服务还需要互联网连接来简化订阅和权利流程。
- RHV 集群必须具有一个虚拟网络,可访问 RHV Manager 上的 REST API。确保在这个网络中启用了 DHCP,因为安装程序创建的虚拟机会使用 DHCP 获取其 IP 地址。
具有以下最低权限的用户帐户和组,用于在目标 RHV 集群上安装和管理 OpenShift Container Platform 集群:
-
DiskOperator
-
DiskCreator
-
UserTemplateBasedVm
-
TemplateOwner
-
TemplateCreator
-
目标集群中的
ClusterAdmin
-
应用最小权限原则:避免在安装过程中使用带有 RHV SuperUser
权限的管理员帐户。安装程序会将您提供的凭证保存到一个临时的 ovirt-config.yaml
文件中,该文件可能会被破坏。
5.5. 验证 RHV 环境的要求
验证 RHV 环境是否满足安装和运行 OpenShift Container Platform 集群的要求。不满足这些要求可能会导致失败。
这些要求基于安装程序用来创建 control plane 和计算机器的默认资源。这些资源包括 vCPU、内存和存储。如果更改这些资源或增加 OpenShift Container Platform 机器的数量,请相应地调整这些要求。
流程
检查 RHV 版本是否支持安装 OpenShift Container Platform 版本 4.12。
- 在 RHV 管理门户中,单击右上角的 ? 帮助图标,然后选择 About。
- 在打开的窗口中,记下 RHV 软件版本。
- 确认 RHV 版本为 4.4。如需有关支持的版本组合的更多信息,请参阅 RHV 上的 OpenShift Container Platform 支持列表。
检查数据中心、集群和存储。
- 在 RHV 管理门户中,点击 Compute → Data Centers。
- 确认可以访问您要安装 OpenShift Container Platform 的数据中心。
- 单击该数据中心的名称。
- 在数据中心详情中,Storage 选项卡中确认您要安装 OpenShift Container Platform 的存储域是 Active。
- 记录下 域名 以供稍后使用。
- 确认 Free Space 至少为 230 GiB。
- 确认存储域满足 etcd 后端性能要求,您可以使用 fio 性能基准工具进行测量。
- 在数据中心详情中点击 Clusters 选项卡。
- 找到您要安装 OpenShift Container Platform 的 RHV 集群。记录集群名称以供稍后使用。
检查 RHV 主机资源。
- 在 RHV 管理门户中,点击 Compute > Clusters。
- 点击您要安装 OpenShift Container Platform 的集群。
- 在集群详情中点击 Hosts 选项卡。
- 检查主机,并确认它们有至少 28 个 逻辑 CPU 内核, 专门用于 OpenShift Container Platform 集群。
- 记录 逻辑 CPU 内核数 以便稍后使用。
- 确认这些 CPU 内核被分配,在安装过程中创建的七台虚拟机中的每一台都可以有四个内核。
确认主机总共有 112 GiB 的 Max free Memory for scheduling new virtual machines,以满足以下每个 OpenShift Container Platform 机器的要求:
- bootstrap 机器需要 16 GiB
- 三个 control plane 机器都需要 16 GiB
- 三个计算机器各自都需要 16 GiB
- 记录下 Max free Memory for scheduling new virtual machine 的数量, 以便稍后使用。
验证安装 OpenShift Container Platform 的虚拟网络是否可以访问 RHV Manager 的 REST API。在这个网络上的虚拟机中,使用 curl 访问 RHV Manager 的 REST API:
$ curl -k -u <username>@<profile>:<password> \ 1 https://<engine-fqdn>/ovirt-engine/api 2
例如:
$ curl -k -u ocpadmin@internal:pw123 \ https://rhv-env.virtlab.example.com/ovirt-engine/api
5.6. 用户置备的基础架构对网络的要求
所有 Red Hat Enterprise Linux CoreOS(RHCOS)机器都需要在启动时在 initramfs
中配置联网,以获取它们的 Ignition 配置文件。
在初次启动过程中,机器需要 IP 地址配置,该配置通过 DHCP 服务器或静态设置,提供所需的引导选项。建立网络连接后,机器会从 HTTP 或 HTTPS 服务器下载 Ignition 配置文件。然后,Ignition 配置文件用于设置每台机器的确切状态。Machine Config Operator 在安装后完成对机器的更多更改,如应用新证书或密钥。
建议使用 DHCP 服务器对集群机器进行长期管理。确保 DHCP 服务器已配置为向集群机器提供持久的 IP 地址、DNS 服务器信息和主机名。
如果用户置备的基础架构没有 DHCP 服务,您可以在 RHCOS 安装时向节点提供 IP 网络配置和 DNS 服务器地址。如果要从 ISO 镜像安装,这些参数可作为引导参数传递。如需有关静态 IP 置备和高级网络选项的更多信息,请参阅 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程 部分。
Kubernetes API 服务器必须能够解析集群机器的节点名称。如果 API 服务器和 worker 节点位于不同的区域中,您可以配置默认 DNS 搜索区域,以允许 API 服务器解析节点名称。另一种支持的方法是始终通过节点对象和所有 DNS 请求中的完全限定域名引用主机。
firewall
配置防火墙,以便集群可以访问所需的站点。
另请参阅:
DNS
配置基础架构提供的 DNS,以便正确解析主要组件和服务。如果您只使用一个负载均衡器,这些 DNS 记录可以指向相同的 IP 地址。
-
为
api.<cluster_name>.<base_domain>
(内部和外部解析)和api-int.<cluster_name>.<base_domain>
(内部解析)创建 DNS 记录,指向 control plane 机器的负载均衡器。 -
为
*.apps.<cluster_name>.<base_domain>
创建一个 DNS 记录,指向入口路由器的负载均衡器。例如,计算机器的端口443
和80
。
5.6.1. 通过 DHCP 设置集群节点主机名
在 Red Hat Enterprise Linux CoreOS(RHCOS)机器上,主机名是通过 NetworkManager 设置的。默认情况下,机器通过 DHCP 获取其主机名。如果主机名不是由 DHCP 提供,请通过内核参数或者其它方法进行静态设置,请通过反向 DNS 查找获取。反向 DNS 查找在网络初始化后进行,可能需要一些时间来解决。其他系统服务可以在此之前启动,并将主机名检测为 localhost
或类似的内容。您可以使用 DHCP 为每个集群节点提供主机名来避免这种情况。
另外,通过 DHCP 设置主机名可以绕过实施 DNS split-horizon 的环境中的手动 DNS 记录名称配置错误。
5.6.2. 网络连接要求
您必须配置机器之间的网络连接,以允许 OpenShift Container Platform 集群组件进行通信。每台机器都必须能够解析集群中所有其他机器的主机名。
本节详细介绍了所需的端口。
在连接的 OpenShift Container Platform 环境中,所有节点都需要访问互联网才能为平台容器拉取镜像,并向红帽提供遥测数据。
协议 | port | 描述 |
---|---|---|
ICMP | N/A | 网络可访问性测试 |
TCP |
| 指标 |
|
主机级别的服务,包括端口 9 | |
| Kubernetes 保留的默认端口 | |
| openshift-sdn | |
UDP |
| VXLAN |
| Geneve | |
|
主机级别的服务,包括端口 | |
| IPsec IKE 数据包 | |
| IPsec NAT-T 数据包 | |
|
UDP 端口
如果配置了外部 NTP 时间服务器,需要打开 UDP 端口 | |
TCP/UDP |
| Kubernetes 节点端口 |
ESP | N/A | IPsec Encapsulating Security Payload(ESP) |
协议 | port | 描述 |
---|---|---|
TCP |
| Kubernetes API |
协议 | port | 描述 |
---|---|---|
TCP |
| etcd 服务器和对等端口 |
用户置备的基础架构的 NTP 配置
OpenShift Container Platform 集群被配置为默认使用公共网络时间协议(NTP)服务器。如果要使用本地企业 NTP 服务器,或者集群部署在断开连接的网络中,您可以将集群配置为使用特定的时间服务器。如需更多信息,请参阅配置 chrony 时间服务 的文档。
如果 DHCP 服务器提供 NTP 服务器信息,Red Hat Enterprise Linux CoreOS(RHCOS)机器上的 chrony 时间服务会读取信息,并可以把时钟与 NTP 服务器同步。
5.7. 用户置备的 DNS 要求
在 OpenShift Container Platform 部署中,以下组件需要 DNS 名称解析:
- The Kubernetes API
- OpenShift Container Platform 应用程序通配符
- bootstrap、control plane 和计算机器
Kubernetes API、bootstrap 机器、control plane 机器和计算机器也需要反向 DNS 解析。
DNS A/AAAA 或 CNAME 记录用于名称解析,PTR 记录用于反向名称解析。反向记录很重要,因为 Red Hat Enterprise Linux CoreOS(RHCOS)使用反向记录为所有节点设置主机名,除非 DHCP 提供主机名。另外,反向记录用于生成 OpenShift Container Platform 需要操作的证书签名请求(CSR)。
建议使用 DHCP 服务器为每个群集节点提供主机名。如需更多信息,请参阅用户置备的基础架构部分的 DHCP 建议。
用户置备的 OpenShift Container Platform 集群需要以下 DNS 记录,这些记录必须在安装前就位。在每个记录中,<cluster_name>
是集群名称,<base_domain>
是您在 install-config.yaml
文件中指定的基域。完整的 DNS 记录采用以下形式: <component>.<cluster_name>.<base_domain>.
。
组件 | 记录 | 描述 |
---|---|---|
Kubernetes API |
| DNS A/AAAA 或 CNAME 记录,以及用于标识 API 负载均衡器的 DNS PTR 记录。这些记录必须由集群外的客户端和集群中的所有节点解析。 |
| DNS A/AAAA 或 CNAME 记录,以及用于内部标识 API 负载均衡器的 DNS PTR 记录。这些记录必须可以从集群中的所有节点解析。 重要 API 服务器必须能够根据 Kubernetes 中记录的主机名解析 worker 节点。如果 API 服务器无法解析节点名称,则代理的 API 调用会失败,且您无法从 pod 检索日志。 | |
Routes |
| 通配符 DNS A/AAAA 或 CNAME 记录,指向应用程序入口负载均衡器。应用程序入口负载均衡器以运行 Ingress Controller Pod 的机器为目标。默认情况下,Ingress Controller Pod 在计算机器上运行。这些记录必须由集群外的客户端和集群中的所有节点解析。
例如,console |
bootstrap 机器 |
| DNS A/AAAA 或 CNAME 记录,以及用于标识 bootstrap 机器的 DNS PTR 记录。这些记录必须由集群中的节点解析。 |
control plane 机器 |
| DNS A/AAAA 或 CNAME 记录,以识别 control plane 节点的每台机器。这些记录必须由集群中的节点解析。 |
计算机器 |
| DNS A/AAAA 或 CNAME 记录,用于识别 worker 节点的每台机器。这些记录必须由集群中的节点解析。 |
在 OpenShift Container Platform 4.4 及更新的版本中,您不需要在 DNS 配置中指定 etcd 主机和 SRV 记录。
您可以使用 dig
命令验证名称和反向名称解析。如需了解详细的 验证步骤,请参阅为用户置备的基础架构验证 DNS 解析 一节。
5.7.1. 用户置备的集群的 DNS 配置示例
本节提供 A 和 PTR 记录配置示例,它们满足了在用户置备的基础架构上部署 OpenShift Container Platform 的 DNS 要求。样本不是为选择一个 DNS 解决方案提供建议。
在这个示例中,集群名称为 ocp4
,基域是 example.com
。
用户置备的集群的 DNS A 记录配置示例
以下示例是 BIND 区域文件,其中显示了用户置备的集群中名称解析的 A 记录示例。
例 5.1. DNS 区数据库示例
$TTL 1W @ IN SOA ns1.example.com. root ( 2019070700 ; serial 3H ; refresh (3 hours) 30M ; retry (30 minutes) 2W ; expiry (2 weeks) 1W ) ; minimum (1 week) IN NS ns1.example.com. IN MX 10 smtp.example.com. ; ; ns1.example.com. IN A 192.168.1.5 smtp.example.com. IN A 192.168.1.5 ; helper.example.com. IN A 192.168.1.5 helper.ocp4.example.com. IN A 192.168.1.5 ; api.ocp4.example.com. IN A 192.168.1.5 1 api-int.ocp4.example.com. IN A 192.168.1.5 2 ; *.apps.ocp4.example.com. IN A 192.168.1.5 3 ; bootstrap.ocp4.example.com. IN A 192.168.1.96 4 ; control-plane0.ocp4.example.com. IN A 192.168.1.97 5 control-plane1.ocp4.example.com. IN A 192.168.1.98 6 control-plane2.ocp4.example.com. IN A 192.168.1.99 7 ; compute0.ocp4.example.com. IN A 192.168.1.11 8 compute1.ocp4.example.com. IN A 192.168.1.7 9 ; ;EOF
- 1
- 为 Kubernetes API 提供名称解析。记录引用 API 负载均衡器的 IP 地址。
- 2
- 为 Kubernetes API 提供名称解析。记录引用 API 负载均衡器的 IP 地址,用于内部集群通信。
- 3
- 为通配符路由提供名称解析。记录引用应用程序入口负载均衡器的 IP 地址。应用程序入口负载均衡器以运行 Ingress Controller Pod 的机器为目标。默认情况下,Ingress Controller Pod 在计算机器上运行。注意
在这个示例中,将相同的负载均衡器用于 Kubernetes API 和应用入口流量。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。
- 4
- 为 bootstrap 机器提供名称解析。
- 5 6 7
- 为 control plane 机器提供名称解析。
- 8 9
- 为计算机器提供名称解析。
用户置备的集群的 DNS PTR 记录配置示例
以下示例 BIND 区域文件显示了用户置备的集群中反向名称解析的 PTR 记录示例。
例 5.2. 反向记录的 DNS 区数据库示例
$TTL 1W @ IN SOA ns1.example.com. root ( 2019070700 ; serial 3H ; refresh (3 hours) 30M ; retry (30 minutes) 2W ; expiry (2 weeks) 1W ) ; minimum (1 week) IN NS ns1.example.com. ; 5.1.168.192.in-addr.arpa. IN PTR api.ocp4.example.com. 1 5.1.168.192.in-addr.arpa. IN PTR api-int.ocp4.example.com. 2 ; 96.1.168.192.in-addr.arpa. IN PTR bootstrap.ocp4.example.com. 3 ; 97.1.168.192.in-addr.arpa. IN PTR control-plane0.ocp4.example.com. 4 98.1.168.192.in-addr.arpa. IN PTR control-plane1.ocp4.example.com. 5 99.1.168.192.in-addr.arpa. IN PTR control-plane2.ocp4.example.com. 6 ; 11.1.168.192.in-addr.arpa. IN PTR compute0.ocp4.example.com. 7 7.1.168.192.in-addr.arpa. IN PTR compute1.ocp4.example.com. 8 ; ;EOF
OpenShift Container Platform 应用程序通配符不需要 PTR 记录。
5.7.2. 用户置备的基础架构的负载均衡要求
在安装 OpenShift Container Platform 前,您必须置备 API 和应用程序入口负载均衡基础架构。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。
如果要使用 Red Hat Enterprise Linux (RHEL) 实例部署 API 和应用程序入口负载均衡器,您必须单独购买 RHEL 订阅。
负载平衡基础架构必须满足以下要求:
API 负载均衡器 :提供一个通用端点,供用户(包括人工和机器)与平台交互和配置。配置以下条件:
- 仅第 4 层负载均衡.这可被称为 Raw TCP 或 SSL Passthrough 模式。
- 无状态负载平衡算法。这些选项根据负载均衡器的实施而有所不同。
重要不要为 API 负载均衡器配置会话持久性。为 Kubernetes API 服务器配置会话持久性可能会导致出现过量 OpenShift Container Platform 集群应用程序流量,以及过量的在集群中运行的 Kubernetes API。
在负载均衡器的前端和后端配置以下端口:
表 5.5. API 负载均衡器 port 后端机器(池成员) internal 外部 描述 6443
Bootstrap 和 control plane.bootstrap 机器初始化集群 control plane 后,您要从负载均衡器中删除 bootstrap 机器。您必须为 API 服务器健康检查探测配置
/readyz
端点。X
X
Kubernetes API 服务器
22623
Bootstrap 和 control plane.bootstrap 机器初始化集群 control plane 后,您要从负载均衡器中删除 bootstrap 机器。
X
机器配置服务器
注意负载均衡器必须配置为,从 API 服务器关闭
/readyz
端点到从池中移除 API 服务器实例时最多需要 30 秒。在/readyz
返回错误或健康后的时间范围内,端点必须被删除或添加。每 5 秒或 10 秒探测一次,有两个成功请求处于健康状态,三个成为不健康的请求是经过良好测试的值。应用程序入口负载均衡器 :为应用程序流量从集群外部流提供入口点。OpenShift Container Platform 集群需要正确配置入口路由器。
配置以下条件:
- 仅第 4 层负载均衡.这可被称为 Raw TCP 或 SSL Passthrough 模式。
- 建议根据可用选项以及平台上托管的应用程序类型,使用基于连接的或基于会话的持久性。
提示如果应用程序入口负载均衡器可以看到客户端的真实 IP 地址,启用基于 IP 的会话持久性可以提高使用端到端 TLS 加密的应用程序的性能。
在负载均衡器的前端和后端配置以下端口:
表 5.6. 应用程序入口负载均衡器 port 后端机器(池成员) internal 外部 描述 443
默认情况下,运行 Ingress Controller Pod、计算或 worker 的机器。
X
X
HTTPS 流量
80
默认情况下,运行 Ingress Controller Pod、计算或 worker 的机器。
X
X
HTTP 流量
注意如果要部署一个带有零计算节点的三节点集群,Ingress Controller Pod 在 control plane 节点上运行。在三节点集群部署中,您必须配置应用程序入口负载均衡器,将 HTTP 和 HTTPS 流量路由到 control plane 节点。
5.7.2.1. 用户置备的集群的负载均衡器配置示例
本节提供了一个满足用户置备集群的负载均衡要求的 API 和应用程序入口负载均衡器配置示例。示例是 HAProxy 负载均衡器的 /etc/haproxy/haproxy.cfg
配置。这个示例不是为选择一个负载平衡解决方案提供建议。
在这个示例中,将相同的负载均衡器用于 Kubernetes API 和应用入口流量。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。
如果您使用 HAProxy 作为负载均衡器,并且 SELinux 设置为 enforcing
,您必须通过运行 setsebool -P haproxy_connect_any=1
来确保 HAProxy 服务可以绑定到配置的 TCP 端口。
例 5.3. API 和应用程序入口负载均衡器配置示例
global log 127.0.0.1 local2 pidfile /var/run/haproxy.pid maxconn 4000 daemon defaults mode http log global option dontlognull option http-server-close option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 listen api-server-6443 1 bind *:6443 mode tcp option httpchk GET /readyz HTTP/1.0 option log-health-checks balance roundrobin server bootstrap bootstrap.ocp4.example.com:6443 verify none check check-ssl inter 10s fall 2 rise 3 backup 2 server master0 master0.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3 server master1 master1.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3 server master2 master2.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3 listen machine-config-server-22623 3 bind *:22623 mode tcp server bootstrap bootstrap.ocp4.example.com:22623 check inter 1s backup 4 server master0 master0.ocp4.example.com:22623 check inter 1s server master1 master1.ocp4.example.com:22623 check inter 1s server master2 master2.ocp4.example.com:22623 check inter 1s listen ingress-router-443 5 bind *:443 mode tcp balance source server worker0 worker0.ocp4.example.com:443 check inter 1s server worker1 worker1.ocp4.example.com:443 check inter 1s listen ingress-router-80 6 bind *:80 mode tcp balance source server worker0 worker0.ocp4.example.com:80 check inter 1s server worker1 worker1.ocp4.example.com:80 check inter 1s
- 1
- 端口
6443
处理 Kubernetes API 流量并指向 control plane 机器。 - 2 4
- bootstrap 条目必须在 OpenShift Container Platform 集群安装前就位,且必须在 bootstrap 过程完成后删除它们。
- 3
- 端口
22623
处理机器配置服务器流量并指向 control plane 机器。 - 5
- 端口
443
处理 HTTPS 流量,并指向运行 Ingress Controller pod 的机器。默认情况下,Ingress Controller Pod 在计算机器上运行。 - 6
- 端口
80
处理 HTTP 流量,并指向运行 Ingress Controller pod 的机器。默认情况下,Ingress Controller Pod 在计算机器上运行。注意如果要部署一个带有零计算节点的三节点集群,Ingress Controller Pod 在 control plane 节点上运行。在三节点集群部署中,您必须配置应用程序入口负载均衡器,将 HTTP 和 HTTPS 流量路由到 control plane 节点。
如果您使用 HAProxy 作为负载均衡器,您可以通过在 HAProxy 节点上运行 netstat -nltupe
来检查 haproxy
进程是否在侦听端口 6443
、22623
、443
和 80
。
5.8. 设置安装机器
要运行二进制 openshift-install
安装程序和 Ansible 脚本,请设置 RHV Manager 或具有网络访问 RHV 环境的 Red Hat Enterprise Linux(RHEL)计算机以及 Manager 上的 REST API。
流程
更新或安装 Python3 和 Ansible。例如:
# dnf update python3 ansible
-
安装
python3-ovirt-engine-sdk4
软件包,以获取 Python 软件开发套件。 安装
ovirt.image-template
Ansible 角色。在 RHV Manager 和其他 Red Hat Enterprise Linux(RHEL)机器上,这个角色作为ovirt-ansible-image-template
软件包发布。例如,输入:# dnf install ovirt-ansible-image-template
安装
ovirt.vm-infra
Ansible 角色。在 RHV Manager 和其他 RHEL 机器上,此角色作为ovirt-ansible-vm-infra
软件包发布。# dnf install ovirt-ansible-vm-infra
创建环境变量并为其分配绝对或相对路径。例如,输入:
$ export ASSETS_DIR=./wrk
注意安装程序使用此变量创建保存重要安装相关文件的目录。之后,安装过程会重复使用此变量来定位这些资产文件。避免删除此资产目录 ; 卸载集群时需要该目录。
5.9. 为 RHV 设置 CA 证书
从 Red Hat Virtualization(RHV)Manager 下载 CA 证书,并将其设置在安装机器上。
您可以从 RHV Manager 的网页或使用 curl
命令下载证书。
之后,您向安装程序提供证书。
流程
使用这两种方法之一下载 CA 证书:
-
进入 Manager 的网页
https://<engine-fqdn>/ovirt-engine/
。然后,在 下载下, 单击 CA 证书 链接。 运行以下命令:
$ curl -k 'https://<engine-fqdn>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA' -o /tmp/ca.pem 1
- 1
- 对于
<engine-fqdn>
,请指定 RHV Manager 的完全限定域名,如rhv-env.virtlab.example.com
。
-
进入 Manager 的网页
配置 CA 文件,为 Manager 授予无根用户访问权限。将 CA 文件权限设置为
0644
(symbolic 值:-rw-r-r--
):$ sudo chmod 0644 /tmp/ca.pem
对于 Linux,将 CA 证书复制到服务器证书目录中。使用
-p
保留权限:$ sudo cp -p /tmp/ca.pem /etc/pki/ca-trust/source/anchors/ca.pem
将证书添加到您的操作系统的证书管理器:
- 对于 macOS,双击证书文件并使用 Keychain Access 实用程序将文件添加到 System 密钥链中。
对于 Linux,更新 CA 信任:
$ sudo update-ca-trust
注意如果您使用您自己的证书颁发机构,请确保系统信任它。
其他资源
- 如需更多信息,请参阅 RHV 文档中的身份验证和安全性。
5.10. 为集群节点 SSH 访问生成密钥对
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core
用户的 ~/.ssh/authorized_keys
列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心
通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather
命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 1
- 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519
。如果您已有密钥对,请确保您的公钥位于~/.ssh
目录中。
注意如果您计划在
x86_64
、ppc64le
和s390x
架构上安装使用 FIPS 验证或 Modules In Process 加密库的 OpenShift Container Platform 集群。请不要创建使用ed25519
算法的密钥。相反,创建一个使用rsa
或ecdsa
算法的密钥。查看公共 SSH 密钥:
$ cat <path>/<file_name>.pub
例如,运行以下命令来查看
~/.ssh/id_ed25519.pub
公钥:$ cat ~/.ssh/id_ed25519.pub
将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather
命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa
和~/.ssh/id_dsa
。如果
ssh-agent
进程尚未为您的本地用户运行,请将其作为后台任务启动:$ eval "$(ssh-agent -s)"
输出示例
Agent pid 31874
注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent
:$ ssh-add <path>/<file_name> 1
- 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
5.11. 下载 Ansible playbook
下载 Ansible playbook 以在 RHV 上安装 OpenShift Container Platform 版本 4.12。
流程
在您的安装机器中运行以下命令:
$ mkdir playbooks
$ cd playbooks
$ xargs -n 1 curl -O <<< ' https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/bootstrap.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/common-auth.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/create-templates-and-vms.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/inventory.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/masters.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/retire-bootstrap.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/retire-masters.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/retire-workers.yml https://raw.githubusercontent.com/openshift/installer/release-4.12/upi/ovirt/workers.yml'
后续步骤
-
下载这些 Ansible playbook 后,还必须为资产目录创建环境变量,并在运行安装程序创建安装配置文件前自定义
inventory.yml
文件。
5.12. inventory.yml 文件
您可以使用 inventory.yml
文件来定义并创建您要安装的 OpenShift Container Platform 集群的元素。这包括 Red Hat Enterprise Linux CoreOS(RHCOS)镜像、虚拟机模板、bootstrap 机器、control plane 节点和 worker 节点等元素。您还可以使用 inventory.yml
来销毁集群。
以下 inventory.yml
示例显示参数及其默认值。这些默认值中的数量和数量满足在 RHV 环境中运行生产 OpenShift Container Platform 集群的要求。
inventory.yml
文件示例
--- all: vars: ovirt_cluster: "Default" ocp: assets_dir: "{{ lookup('env', 'ASSETS_DIR') }}" ovirt_config_path: "{{ lookup('env', 'HOME') }}/.ovirt/ovirt-config.yaml" # --- # {op-system} section # --- rhcos: image_url: "https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.12/latest/rhcos-openstack.x86_64.qcow2.gz" local_cmp_image_path: "/tmp/rhcos.qcow2.gz" local_image_path: "/tmp/rhcos.qcow2" # --- # Profiles section # --- control_plane: cluster: "{{ ovirt_cluster }}" memory: 16GiB sockets: 4 cores: 1 template: rhcos_tpl operating_system: "rhcos_x64" type: high_performance graphical_console: headless_mode: false protocol: - spice - vnc disks: - size: 120GiB name: os interface: virtio_scsi storage_domain: depot_nvme nics: - name: nic1 network: lab profile: lab compute: cluster: "{{ ovirt_cluster }}" memory: 16GiB sockets: 4 cores: 1 template: worker_rhcos_tpl operating_system: "rhcos_x64" type: high_performance graphical_console: headless_mode: false protocol: - spice - vnc disks: - size: 120GiB name: os interface: virtio_scsi storage_domain: depot_nvme nics: - name: nic1 network: lab profile: lab # --- # Virtual machines section # --- vms: - name: "{{ metadata.infraID }}-bootstrap" ocp_type: bootstrap profile: "{{ control_plane }}" type: server - name: "{{ metadata.infraID }}-master0" ocp_type: master profile: "{{ control_plane }}" - name: "{{ metadata.infraID }}-master1" ocp_type: master profile: "{{ control_plane }}" - name: "{{ metadata.infraID }}-master2" ocp_type: master profile: "{{ control_plane }}" - name: "{{ metadata.infraID }}-worker0" ocp_type: worker profile: "{{ compute }}" - name: "{{ metadata.infraID }}-worker1" ocp_type: worker profile: "{{ compute }}" - name: "{{ metadata.infraID }}-worker2" ocp_type: worker profile: "{{ compute }}"
为描述以"Enter"开头的参数输入值。否则,您可以使用默认值或将其替换为新值。
常规部分
-
ovirt_cluster
:输入现有 RHV 集群的名称,在其中安装 OpenShift Container Platform 集群。 -
OCP.assets_dir
:openshift-install
安装程序创建的目录的路径,以存储它生成的文件。 -
OCP.ovirt_config_path
:安装程序生成的ovirt-config.yaml
文件的路径,如./wrk/install-config.yaml
。此文件包含与管理器的 REST API 交互所需的凭据。
Red Hat Enterprise Linux CoreOS(RHCOS)部分
-
image_url
:输入您为下载指定的 RHCOS 镜像的 URL。 -
local_cmp_image_path
:压缩 RHCOS 镜像的本地下载目录的路径。 -
local_image_path
:提取的 RHCOS 镜像的本地目录路径。
配置集部分
本节由两个配置集组成:
-
control_plane
:bootstrap 和 control plane 节点的配置集。 -
compute:compute
plane 中 worker 节点的配置集。
这些配置集有以下参数:参数的默认值满足运行生产集群的最低要求。您可以增加或自定义这些值来满足工作负载要求。
-
Cluster
:该值从 General Section 中的ovirt_cluster
获取集群名称。 -
memory
:虚拟机的内存量(以 GB 为单位)。 -
socket
:虚拟机的插槽数量。 -
cores
:虚拟机的内核数。 -
template
:虚拟机模板的名称。如果计划安装多个集群,且这些集群使用包含不同规格的模板,请使用集群的 ID 预先填充模板名称。 -
operating_system
:虚拟机中的客户机操作系统类型。对于 oVirt/RHV 版本 4.4,这个值必须是rhcos_x64
,以便Ignition 脚本
的值可以传递给虚拟机。 type
:输入server
作为虚拟机的类型。重要您必须将
type
参数的值从high_performance
更改为server
。-
Disk
:磁盘规格。control_plane
和compute
节点可以有不同的存储域。 -
size
:最小磁盘大小。 -
Name
:
输入连接到 RHV 中目标集群的磁盘名称。 -
Interface
:输入您指定的磁盘的接口类型。 -
storage_domain
:输入您指定的磁盘的存储域。 -
NIC
:输入虚拟机使用的名称和
网络
。您还可以指定虚拟网络接口配置集。默认情况下,NIC 从 oVirt/RHV MAC 池获取其 MAC 地址。
虚拟机部分
最后部分 vms
定义您要在集群中创建和部署的虚拟机。默认情况下,它为生产环境提供最少的 control plane 和 worker 节点数量。
虚拟机包含
三个所需元素:
-
name
:虚拟机的名称。在本例中,metadata.infraID 使用 metadata
.yml
文件中的基础架构 ID 预先填充虚拟机名称。 -
ocp_type
:OpenShift Container Platform 集群中虚拟机的角色。可能的值有bootstrap
、master 和
worker
。 profile
:每个虚拟机从中继承规格的配置集名称。本例中可能的值为control_plane 或
compute
。您可以覆盖虚拟机从其配置集中继承的值。为此,您要将 profile 属性的名称添加到
inventory.yml
中的虚拟机,并为它分配一个覆盖值。要查看以下示例,请检查前面的inventory.yml
示例中的name: "{{ metadata.infraID }}-bootstrap"
虚拟机:它有一个type
属性,其值为server
,将覆盖此虚拟机将从control_plane
配置集继承的type
属性的值。
元数据变量
对于虚拟机,metadata.infraID
会使用构建 Ignition 文件时创建的 metadata.json
文件中的基础架构 ID 来附加虚拟机的名称。
playbook 使用以下代码从 ocp.assets_dir
中的特定文件中读取 infraID
。
--- - name: include metadata.json vars include_vars: file: "{{ ocp.assets_dir }}/metadata.json" name: metadata ...
5.13. 指定 RHCOS 镜像设置
更新 inventory.yml
文件的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像设置。之后,当您运行此文件之一时,它会将压缩的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像从 image_url
URL 下载到 local_cmp_image_path
目录。然后,playbook 将镜像解压缩到 local_image_path
目录,并使用它来创建 oVirt/RHV 模板。
流程
- 找到您要安装的 OpenShift Container Platform 版本的 RHCOS 镜像下载页面,如 /pub/openshift-v4/dependencies/rhcos/latest/latest/latest/latest/latest。
-
在该下载页面中复制 OpenStack
qcow2
镜像的 URL,如https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.12/latest/rhcos-openstack.x86_64.qcow2.gz
。 编辑之前下载的
inventory.yml
playbook。在其中包含,将 URL 粘贴为image_url
的值。例如:rhcos: "https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.12/latest/rhcos-openstack.x86_64.qcow2.gz"
5.14. 创建安装配置文件
您可以通过运行安装程序 openshift-install
并使用之前指定或收集的信息响应其提示来创建安装配置文件。
当完成对提示的响应时,安装程序会在您之前指定的 asset 目录中创建 install-config.yaml
文件的初始版本,如 ./wrk/install-config.yaml
安装程序还会创建一个文件 $HOME/.ovirt/ovirt-config.yaml
,其中包含访问 Manager 并使用其 REST API 所需的所有连接参数。
注: 安装过程不使用您为一些参数提供的值,如 内部 API 虚拟 IP
和 Ingress 虚拟 IP
,因为您已在基础架构 DNS 中配置了它们。
它还使用您为 inventory.yml
中的参数提供的值,如 oVirt cluster
、oVirt storage
和 oVirt network
。使用脚本删除或替换 install-config.yaml
中的这些相同的值,使用前面提到的 虚拟 IP
。
流程
运行安装程序:
$ openshift-install create install-config --dir $ASSETS_DIR
根据安装程序的提示输入您的系统信息。
输出示例
? SSH Public Key /home/user/.ssh/id_dsa.pub ? Platform <ovirt> ? Engine FQDN[:PORT] [? for help] <engine.fqdn> ? Enter ovirt-engine username <ocpadmin@internal> ? Enter password <******> ? oVirt cluster <cluster> ? oVirt storage <storage> ? oVirt network <net> ? Internal API virtual IP <172.16.0.252> ? Ingress virtual IP <172.16.0.251> ? Base Domain <example.org> ? Cluster Name <ocp4> ? Pull Secret [? for help] <********>
? SSH Public Key /home/user/.ssh/id_dsa.pub ? Platform <ovirt> ? Engine FQDN[:PORT] [? for help] <engine.fqdn> ? Enter ovirt-engine username <ocpadmin@internal> ? Enter password <******> ? oVirt cluster <cluster> ? oVirt storage <storage> ? oVirt network <net> ? Internal API virtual IP <172.16.0.252> ? Ingress virtual IP <172.16.0.251> ? Base Domain <example.org> ? Cluster Name <ocp4> ? Pull Secret [? for help] <********>
对于 Internal API 虚拟 IP
和 Ingress 虚拟 IP
,请提供您在配置 DNS 服务时指定的 IP 地址。
您输入 oVirt 集群
和 Base Domain
的值一起形成 REST API 的 URL 的 FQDN 部分以及您创建的所有应用程序,如 https://api.ocp4.example.org:6443/
和 https://console-openshift-console.apps.ocp4.example.org。
5.15. RHV 的 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 controlPlane: 5 hyperthreading: Enabled 6 name: master replicas: 3 7 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
- 1
- 集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
- 2 5
controlPlane
部分是一个单个映射,但compute
部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。仅使用一个 control plane 池。- 3 6
- 指定要启用或禁用并发多线程(SMT)还是超线程。默认情况下,启用 SMT 可提高机器中内核的性能。您可以通过将 参数值设置为
Disabled
来禁用它。如果禁用 SMT,则必须在所有集群机器中禁用它;这包括 control plane 和计算机器。注意默认启用并发多线程(SMT)。如果您的 BIOS 设置中没有启用 SMT,
超线程
参数无效。重要如果您禁用
超线程
,无论是在 BIOS 中,还是在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
,则每个节点从 givencidr
中分配 a/23
子网,这样就能有 510(2^(32 - 23)- 2)个 pod IP 地址。如果需要从外部网络访问节点,请配置负载均衡器和路由器来管理流量。 - 11
- 要安装的集群网络插件。支持的值有
OVNKubernetes
和OpenShiftSDN
。默认值为OVNKubernetes
。 - 12
- 用于服务 IP 地址的 IP 地址池。您只能输入一个 IP 地址池。此块不得与现有物理网络重叠。如果您需要从外部网络访问服务,请配置负载均衡器和路由器来管理流量。
- 13
- 您必须将平台设置为
none
。您无法为 RHV 基础架构提供额外的平台配置变量。重要使用平台类型
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 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在
x86_64
、ppc64le
和s390x
架构的 OpenShift Container Platform 部署中才支持使用 FIPS 验证的或Modules In Process 加密库。 - 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 密钥。
5.15.1. 在安装过程中配置集群范围的代理
生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml
文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。
先决条件
-
您有一个现有的
install-config.yaml
文件。 您检查了集群需要访问的站点,并确定它们中的任何站点是否需要绕过代理。默认情况下,所有集群出口流量都经过代理,包括对托管云供应商 API 的调用。如果需要,您将在
Proxy 对象的
spec.noProxy
字段中添加站点来绕过代理。注意Proxy
对象status.noProxy
字段使用安装配置中的networking.machineNetwork[].cidr
、networking.clusterNetwork[].cidr
和networking.serviceNetwork[]
字段的值填充。对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,
Proxy
对象status.noProxy
字段也会使用实例元数据端点填充(169.254.169.254
)。
流程
编辑
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
- 如果提供,安装程序会在
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
配置映射的策略。允许的值是Proxyonly
和Always
。仅在配置了http/https
代理时,使用Proxyonly
引用user-ca-bundle
配置映射。使用Always
始终引用user-ca-bundle
配置映射。默认值为Proxyonly
。
注意安装程序不支持代理的
readinessEndpoints
字段。注意如果安装程序超时,重启并使用安装程序的
wait-for
命令完成部署。例如:$ ./openshift-install wait-for install-complete --log-level debug
- 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用
提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
5.16. 自定义 install-config.yaml
在这里,您使用三个 Python 脚本覆盖一些安装程序的默认行为:
- 默认情况下,安装程序使用机器 API 创建节点。要覆盖此默认行为,请将计算节点数量设置为零个副本。稍后,您将使用 Ansible playbook 创建计算节点。
- 默认情况下,安装程序为节点设置机器网络的 IP 范围。要覆盖此默认行为,您可以将 IP 范围设置为与您的基础架构匹配。
-
默认情况下,安装程序将平台设置为
ovirt
。但是,在用户置备的基础架构上安装集群与在裸机上安装集群更为相似。因此,您可以从install-config.yaml
中删除 ovirt platform 部分,并将平台改为none
。您可以使用inventory.yml
指定所有所需的设置。
这些片断可用于 Python 3 和 Python 2。
流程
将计算节点数量设置为零副本:
$ python3 -c 'import os, yaml path = "%s/install-config.yaml" % os.environ["ASSETS_DIR"] conf = yaml.safe_load(open(path)) conf["compute"][0]["replicas"] = 0 open(path, "w").write(yaml.dump(conf, default_flow_style=False))'
设置机器网络的 IP 范围。例如,要将范围设置为
172.16.0.0/16
,请输入:$ python3 -c 'import os, yaml path = "%s/install-config.yaml" % os.environ["ASSETS_DIR"] conf = yaml.safe_load(open(path)) conf["networking"]["machineNetwork"][0]["cidr"] = "172.16.0.0/16" open(path, "w").write(yaml.dump(conf, default_flow_style=False))'
删除
ovirt
部分,并将平台改为none
:$ python3 -c 'import os, yaml path = "%s/install-config.yaml" % os.environ["ASSETS_DIR"] conf = yaml.safe_load(open(path)) platform = conf["platform"] del platform["ovirt"] platform["none"] = {} open(path, "w").write(yaml.dump(conf, default_flow_style=False))'
警告Red Hat Virtualization 目前不支持使用 oVirt 平台的用户置备的基础架构进行安装。因此,您必须将平台设置为
none
,允许 OpenShift Container Platform 将每个节点识别为裸机节点,并将集群识别为裸机集群。这与 在任何平台上安装集群 相同,并有以下限制:- 没有集群供应商,因此您必须手动添加每台机器,且没有节点扩展功能。
- 不会安装 oVirt CSI 驱动程序,且没有 CSI 功能。
5.17. 生成清单文件
使用安装程序在 asset 目录中生成一组清单文件。
生成清单文件的命令在消耗 install-config.yaml
文件前会显示警告消息。
如果您计划重复使用 install-config.yaml
文件,请在生成清单文件前在备份前创建备份副本。
流程
可选:创建
install-config.yaml
文件的备份副本:$ cp install-config.yaml install-config.yaml.backup
在资产目录中生成一组清单:
$ openshift-install create manifests --dir $ASSETS_DIR
此命令显示以下消息:
输出示例
INFO Consuming Install Config from target directory WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings
该命令生成以下清单文件:
输出示例
$ tree . └── wrk ├── manifests │ ├── 04-openshift-machine-config-operator.yaml │ ├── cluster-config.yaml │ ├── cluster-dns-02-config.yml │ ├── cluster-infrastructure-02-config.yml │ ├── cluster-ingress-02-config.yml │ ├── cluster-network-01-crd.yml │ ├── cluster-network-02-config.yml │ ├── cluster-proxy-01-config.yaml │ ├── cluster-scheduler-02-config.yml │ ├── cvo-overrides.yaml │ ├── etcd-ca-bundle-configmap.yaml │ ├── etcd-client-secret.yaml │ ├── etcd-host-service-endpoints.yaml │ ├── etcd-host-service.yaml │ ├── etcd-metric-client-secret.yaml │ ├── etcd-metric-serving-ca-configmap.yaml │ ├── etcd-metric-signer-secret.yaml │ ├── etcd-namespace.yaml │ ├── etcd-service.yaml │ ├── etcd-serving-ca-configmap.yaml │ ├── etcd-signer-secret.yaml │ ├── kube-cloud-config.yaml │ ├── kube-system-configmap-root-ca.yaml │ ├── machine-config-server-tls-secret.yaml │ └── openshift-config-secret-pull-secret.yaml └── openshift ├── 99_kubeadmin-password-secret.yaml ├── 99_openshift-cluster-api_master-user-data-secret.yaml ├── 99_openshift-cluster-api_worker-user-data-secret.yaml ├── 99_openshift-machineconfig_99-master-ssh.yaml ├── 99_openshift-machineconfig_99-worker-ssh.yaml └── openshift-install-manifests.yaml
后续步骤
- 使 control plane 节点不可调度。
5.18. 使 control-plane 节点不可调度
由于要手动创建和部署 control plane 机器,因此您必须配置清单文件,使 control plane 节点不可调度。
流程
要使 control plane 节点不可调度,请输入:
$ python3 -c 'import os, yaml path = "%s/manifests/cluster-scheduler-02-config.yml" % os.environ["ASSETS_DIR"] data = yaml.safe_load(open(path)) data["spec"]["mastersSchedulable"] = False open(path, "w").write(yaml.dump(data, default_flow_style=False))'
5.19. 构建 Ignition 文件
要从您刚才生成和修改的清单文件构建 Ignition 文件,请运行安装程序。此操作会创建一个 Red Hat Enterprise Linux CoreOS(RHCOS)机器 initramfs
,它将获取 Ignition 文件并执行创建节点所需的配置。
除了 Ignition 文件外,安装程序还会生成以下内容:
-
包含使用
oc
和kubectl
工具连接到集群的 admin 凭证的auth
目录。 -
包含当前安装的 OpenShift Container Platform 集群名称、集群 ID 和基础架构 ID 的
metadata.json
文件。
此安装过程的 Ansible playbook 使用 infraID
值作为它们所创建虚拟机的前缀。这可防止在同一 oVirt/RHV 集群中有多个安装时命名冲突。
Ignition 配置文件中的证书会在 24 小时后过期。完成集群安装,并使集群以非降级状态运行 24 小时,以便完成第一次证书轮转。
流程
要构建 Ignition 文件,请输入:
$ openshift-install create ignition-configs --dir $ASSETS_DIR
输出示例
$ tree . └── wrk ├── auth │ ├── kubeadmin-password │ └── kubeconfig ├── bootstrap.ign ├── master.ign ├── metadata.json └── worker.ign
5.20. 创建模板和虚拟机
确认 inventory.yml
中的变量后,您将运行第一个 Ansible 调配 playbook create-templates-and-vms.yml
。
此 playbook 使用 $HOME/.ovirt/ovirt-config.yaml
中的 RHV Manager 的连接参数,并在 asset 目录中读取 metadata.json
。
如果本地 Red Hat Enterprise Linux CoreOS(RHCOS)镜像不存在,则 playbook 会从您为 inventory.yml
中 image_url
指定的 URL 下载一个。它将提取映像并将其上传到 RHV 以创建模板。
playbook 根据 inventory.yml
文件中的 control_plane
和 compute
配置集创建一个模板。如果这些配置集有不同的名称,它会创建两个模板。
playbook 完成后,它创建的虚拟机将停止。您可以从中获取信息,以帮助配置其他基础架构元素。例如,您可以获取虚拟机的 MAC 地址来配置 DHCP,为虚拟机分配永久 IP 地址。
流程
-
在
inventory.yml
中,在control_plane
和compute
变量下,将type: high_performance
的两个实例更改为type: server
。 可选: 如果您计划在同一集群中执行多个安装,请为每个 OpenShift Container Platform 安装创建不同的模板。在
inventory.yml
文件中,使用infraID
预先填充 模板
的值。例如:control_plane: cluster: "{{ ovirt_cluster }}" memory: 16GiB sockets: 4 cores: 1 template: "{{ metadata.infraID }}-rhcos_tpl" operating_system: "rhcos_x64" ...
创建模板和虚拟机:
$ ansible-playbook -i inventory.yml create-templates-and-vms.yml
5.21. 创建 bootstrap 机器
您可以通过运行 bootstrap .yml playbook 创建 bootstrap 机器
。此 playbook 启动 bootstrap 虚拟机,并从 asset 目录中传递 bootstrap.ign
Ignition 文件。bootstrap 节点配置自己,以便它可以向 control plane 节点提供 Ignition 文件。
要监控 bootstrap 过程,您可以使用 RHV 管理门户中的控制台或使用 SSH 连接到虚拟机。
流程
创建 bootstrap 机器:
$ ansible-playbook -i inventory.yml bootstrap.yml
使用管理门户或 SSH 中的控制台连接到 bootstrap 机器。将
<bootstrap_ip>
替换为 bootstrap 节点 IP 地址。要使用 SSH,请输入:$ ssh core@<boostrap.ip>
从 bootstrap 节点收集发行镜像服务的
bootkube.service
journald 单元日志:[core@ocp4-lk6b4-bootstrap ~]$ journalctl -b -f -u release-image.service -u bootkube.service
注意bootstrap 节点上的
bootkube.service
日志输出 etcd连接被拒绝
的错误,这表示 bootstrap 服务器无法在 control plane 节点上连接到 etcd。在每个 control plane 节点上启动 etcd 且节点已加入集群后,错误应该会停止。
5.22. 创建 control plane 节点
您可以通过运行 masters.yml
playbook 创建 control plane 节点。此 playbook 将 master.ign
Ignition 文件传递给每个虚拟机。Ignition 文件包含 control plane 节点的指令,可从 URL(如 https://api-int.ocp4.example.org:22623/config/master
)获取 Ignition。这个 URL 中的端口号由负载均衡器管理,且只能在集群中访问。
流程
创建 control plane 节点:
$ ansible-playbook -i inventory.yml masters.yml
在 playbook 创建 control plane 时,监控 bootstrap 过程:
$ openshift-install wait-for bootstrap-complete --dir $ASSETS_DIR
输出示例
INFO API v1.25.0 up INFO Waiting up to 40m0s for bootstrapping to complete...
当 control plane 节点上的所有 pod 都启动并运行 etcd 时,安装程序会显示以下输出。
输出示例
INFO It is now safe to remove the bootstrap resources
5.23. 验证集群状态
您可以在安装过程中或安装后验证 OpenShift Container Platform 集群的状态。
流程
在集群环境中,导出管理员的 kubeconfig 文件:
$ export KUBECONFIG=$ASSETS_DIR/auth/kubeconfig
kubeconfig
文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。查看部署后创建的 control plane 和计算机器:
$ oc get nodes
查看集群的版本:
$ oc get clusterversion
查看 Operator 的状态:
$ oc get clusteroperator
查看集群中的所有正在运行的 pod:
$ oc get pods -A
5.24. 删除 bootstrap 机器
在 wait-for
命令显示 bootstrap 过程完成后,您必须删除 bootstrap 虚拟机来释放计算、内存和存储资源。另外,从负载均衡器指令中删除 bootstrap 机器的设置。
流程
要从集群中删除 bootstrap 机器,请输入:
$ ansible-playbook -i inventory.yml retire-bootstrap.yml
- 从负载均衡器指令中删除 bootstrap 机器的设置。
5.25. 创建 worker 节点并完成安装
创建 worker 节点与创建 control plane 节点类似。但是,worker 节点 worker 不会自动加入集群。要将它们添加到集群中,您需要检查并批准 worker 的待处理的 CSR(Certificate Signing Requests)。
批准第一个请求后,您可以继续批准 CSR,直到所有 worker 节点都被批准为止。完成此过程后,worker 节点将变为 Ready
,并可调度在其上运行的 pod。
最后,监控命令行以查看安装过程何时完成。
流程
创建 worker 节点:
$ ansible-playbook -i inventory.yml workers.yml
要列出所有 CSR,请输入:
$ oc get csr -A
最后,这个命令会显示每个节点的一个 CSR。例如:
输出示例
NAME AGE SIGNERNAME REQUESTOR CONDITION csr-2lnxd 63m kubernetes.io/kubelet-serving system:node:ocp4-lk6b4-master0.ocp4.example.org Approved,Issued csr-hff4q 64m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Approved,Issued csr-hsn96 60m kubernetes.io/kubelet-serving system:node:ocp4-lk6b4-master2.ocp4.example.org Approved,Issued csr-m724n 6m2s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending csr-p4dz2 60m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Approved,Issued csr-t9vfj 60m kubernetes.io/kubelet-serving system:node:ocp4-lk6b4-master1.ocp4.example.org Approved,Issued csr-tggtr 61m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Approved,Issued csr-wcbrf 7m6s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending
要过滤列表并只查看待处理的 CSR,请输入:
$ watch "oc get csr -A | grep pending -i"
此命令每两秒钟刷新输出一次,仅显示待处理的 CSR。例如:
输出示例
Every 2.0s: oc get csr -A | grep pending -i csr-m724n 10m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending csr-wcbrf 11m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending
检查每个待处理的请求。例如:
输出示例
$ oc describe csr csr-m724n
输出示例
Name: csr-m724n Labels: <none> Annotations: <none> CreationTimestamp: Sun, 19 Jul 2020 15:59:37 +0200 Requesting User: system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Signer: kubernetes.io/kube-apiserver-client-kubelet Status: Pending Subject: Common Name: system:node:ocp4-lk6b4-worker1.ocp4.example.org Serial Number: Organization: system:nodes Events: <none>
如果 CSR 信息正确,则批准请求:
$ oc adm certificate approve csr-m724n
等待安装过程完成:
$ openshift-install wait-for install-complete --dir $ASSETS_DIR --log-level debug
安装完成后,命令行会显示 OpenShift Container Platform Web 控制台的 URL,以及管理员用户名和密码。
5.26. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.12 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console。
确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
5.27. 禁用默认的 OperatorHub 目录源
在 OpenShift Container Platform 安装过程中,默认为 OperatorHub 配置由红帽和社区项目提供的源内容的 operator 目录。在受限网络环境中,必须以集群管理员身份禁用默认目录。
流程
通过在
OperatorHub
对象中添加disableAllDefaultSources: true 来
禁用默认目录的源:$ oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
或者,您可以使用 Web 控制台管理目录源。在 Administration → Cluster Settings → Configuration → OperatorHub 页面中,点 Sources 选项卡,您可以在其中创建、更新、删除、禁用和启用单独的源。
第 6 章 在 RHV 上卸载集群
您可以从 Red Hat Virtualization(RHV)中删除 OpenShift Container Platform 集群。
6.1. 删除使用安装程序置备的基础架构的集群
您可以从云中删除使用安装程序置备的基础架构的集群。
卸载后,检查云供应商是否有未正确删除的资源,特别是在用户置备基础架构集群中。可能存在安装程序没有创建或安装程序无法访问的资源。
先决条件
- 有用于部署集群的安装程序副本。
- 有创建集群时安装程序生成的文件。
流程
在用来安装集群的计算机中,进入包含安装程序的目录,并运行以下命令:
$ ./openshift-install destroy cluster \ --dir <installation_directory> --log-level info 1 2
注意您必须为集群指定包含集群定义文件的目录。安装程序需要此目录中的
metadata.json
文件来删除集群。-
可选:删除
<installation_directory>
目录和 OpenShift Container Platform 安装程序。
6.2. 删除使用用户置备的基础架构的集群
使用完集群后,您可以从云中删除使用用户置备的基础架构的集群。
先决条件
-
具有用于安装集群的原始 playbook 文件、资产目录和文件以及
$ASSETS_DIR
环境变量。通常,您可以使用安装集群时使用相同的计算机来达到此目的。
流程
要删除集群,请输入:
$ ansible-playbook -i inventory.yml \ retire-bootstrap.yml \ retire-masters.yml \ retire-workers.yml
- 删除您添加到 DNS、负载均衡器以及此集群的任何其他基础架构的任何配置。
Legal Notice
Copyright © 2024 Red Hat, Inc.
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.