6.13. 创建安装配置文件
您可以自定义在 Red Hat OpenStack Platform(RHOSP)上安装的 OpenShift Container Platform 集群。
先决条件
- 您有 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
创建
install-config.yaml
文件。进入包含安装程序的目录并运行以下命令:
./openshift-install create install-config --dir <installation_directory>
$ ./openshift-install create install-config --dir <installation_directory>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>
,请指定要存储安装程序创建的文件的目录名称。
在指定目录时:
-
验证该目录是否具有
执行
权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
注意始终删除
~/.powervs
目录,以避免重复使用过时的配置。运行以下命令:rm -rf ~/.powervs
$ rm -rf ~/.powervs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在提示符处,提供云的配置详情:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。- 选择 openstack 作为目标平台。
- 指定用于安装集群的 Red Hat OpenStack Platform(RHOSP)外部网络名称。
- 指定用于从外部访问 OpenShift API 的浮动 IP 地址。
- 指定至少有 16 GB RAM 用于 control plane 节点,以及计算节点的 8 GB RAM。
- 选择集群要部署到的基域。所有 DNS 记录都将是这个基域的子域,并且还包括集群名称。
- 为集群输入一个名称。名称长度必须为 14 个或更少字符。
-
修改
install-config.yaml
文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。 备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程中消耗掉。如果要重复使用该文件,您必须立即备份该文件。
现在,文件 install-config.yaml
位于您指定的目录中。
6.13.1. RHOSP 部署中的自定义子网 复制链接链接已复制到粘贴板!
另外,您还可以在您选择的 Red Hat OpenStack Platform(RHOSP)子网中部署集群。子网的 GUID 作为 install-config.yaml
文件中的 platform.openstack.machinesSubnet
的值传递。
此子网被用作集群的主子网。默认情况下,其上会创建节点和端口。您可以通过将 platform.openstack.machinesSubnet
属性的值设置为子网的 UUID,在不同的 RHOSP 子网中创建节点和端口。
在使用自定义子网运行 OpenShift Container Platform 安装程序前,请验证您的配置是否满足以下要求:
-
platform.openstack.machinesSubnet
使用的子网启用了 DHCP。 -
platform.openstack.machinesSubnet 的
CIDR 与networking.machineNetwork
的 CIDR 匹配。 - 安装程序用户有在此网络上创建端口的权限,包括带有固定 IP 地址的端口。
使用自定义子网的集群有以下限制:
-
如果您计划安装使用浮动 IP 地址的集群,则必须将
platform.openstack.machinesSubnet
子网附加到连接到externalNetwork
网络的路由器。 -
如果在
install-config.yaml
文件中设置了platform.openstack.machinesSubnet
值,安装程序不会为您的 RHOSP 机器创建专用网络或子网。 -
您不能与自定义子网同时使用
platform.openstack.externalDNS
属性。要将 DNS 添加到使用自定义子网的集群,请在 RHOSP 网络上配置 DNS。
默认情况下,API VIP 使用 x.x.x.5,Ingress VIP 从网络 CIDR 块获取 x.x.x.7。要覆盖这些默认值,请为 DHCP 分配池之外的 platform.openstack.apiVIPs
和 platform.openstack.ingressVIPs
设置值。
集群安装后无法调整网络的 CIDR 范围。红帽不提供有关在集群安装过程中确定范围的直接指导,因为它需要仔细考虑每个命名空间创建的 pod 数量。
6.13.2. 使用 Kuryr 的 RHOSP 的自定义 install-config.yaml 文件示例 复制链接链接已复制到粘贴板!
要使用 Kuryr SDN 而不是默认的 OVN-Kubernetes 网络插件进行部署,您必须修改 install-config.yaml
文件,使其包含 Kuryr
作为所需的 networking.networkType
。这个示例 install-config.yaml
演示了所有可能的 Red Hat OpenStack Platform(RHOSP)自定义选项。
此示例文件仅供参考。您必须使用安装程序来获取 install-config.yaml
文件。
- 1
- Amphora Octavia 驱动程序在每个负载均衡器创建两个端口。因此,安装程序创建的服务子网是指定为
serviceNetwork
属性值的 CIDR 大小的两倍。需要更大的范围来防止 IP 地址冲突。 - 2
- 要安装的集群网络插件。支持的值包括
Kuryr
、OVNKubernetes
和OpenShiftSDN
。默认值为OVNKubernetes
。 - 3 4
- 安装程序会自动发现
trunkSupport
和 octaviaSupport
,因此无需设置它们。但是,如果您的环境不能满足这两个要求,Kuryr SDN 将无法正常工作。需要中继才能将 pod 连接到 RHOSP 网络,并且需要 Octavia 来创建 OpenShift Container Platform 服务。
6.13.3. RHOSP 提供商网络上的集群部署 复制链接链接已复制到粘贴板!
您可以使用供应商网络上的主网络接口在 Red Hat OpenStack Platform(RHOSP)上部署 OpenShift Container Platform 集群。提供商网络通常用于为项目提供可用于访问互联网的公共网络的直接访问权限。您还可以在项目间共享提供商网络,作为网络创建流程的一部分。
RHOSP 提供商网络直接映射到数据中心内的现有物理网络。RHOSP 管理员必须创建它们。
在以下示例中,OpenShift Container Platform 工作负载使用提供商网络连接到数据中心:
在提供商网络上安装的 OpenShift Container Platform 集群不需要租户网络或浮动 IP 地址。安装程序不会在安装过程中创建这些资源。
提供商网络类型示例包括 flat(未标记)和 VLAN(802.1Q 标记)。
集群可以在网络类型允许的情况下支持任意数量的提供商网络连接。例如,VLAN 网络通常支持多达 4096 个连接。
您可以在 RHOSP 文档中的 了解更多有关供应商和租户网络的信息。
6.13.3.1. 集群安装的 RHOSP 提供商网络要求 复制链接链接已复制到粘贴板!
在安装 OpenShift Container Platform 集群前,您的 Red Hat OpenStack Platform(RHOSP)部署和提供商网络必须满足以下多个条件:
- RHOSP 网络服务(Neutron)通过 RHOSP 网络 API 启用 并访问。
- RHOSP 网络服务 启用了端口安全性并允许地址对扩展。
提供商网络可以与其他租户共享。
提示使用
openstack network create
命令和--share
标志来创建可共享的网络。用于安装集群的 RHOSP 项目必须拥有提供商网络以及适当的子网。
提示- 要为名为"openshift"的项目创建网络,请输入以下命令
openstack network create --project openshift
$ openstack network create --project openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 要为名为"openshift"的项目创建子网,请输入以下命令
openstack subnet create --project openshift
$ openstack subnet create --project openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要了解更多有关在 RHOSP 上创建网络的信息,请阅读 提供商网络文档。
如果集群归
admin
用户所有,则必须以该用户身份运行安装程序,以便在网络上创建端口。重要提供商网络必须由用于创建集群的 RHOSP 项目所有。如果没有,则 RHOSP Compute 服务(Nova)无法从该网络请求端口。
验证提供商网络可以访问 RHOSP 元数据服务 IP 地址,默认为
169.254.169.254
。根据 RHOSP SDN 和网络服务配置,您可能需要在创建子网时提供路由。例如:
openstack subnet create --dhcp --host-route destination=169.254.169.254/32,gateway=192.0.2.2 ...
$ openstack subnet create --dhcp --host-route destination=169.254.169.254/32,gateway=192.0.2.2 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 可选: 要保护网络,请创建 基于角色的访问控制(RBAC) 规则,以限制对单个项目的网络访问。
6.13.3.2. 在提供商网络上部署具有主接口的集群 复制链接链接已复制到粘贴板!
您可以在 Red Hat OpenStack Platform(RHOSP) 提供商网络上部署具有主网络接口的 OpenShift Container Platform 集群。
先决条件
- 您的 Red Hat OpenStack Platform(RHOSP)部署被配置为"RHOSP 供应商网络要求用于集群安装"。
流程
-
在文本编辑器中,打开
install-config.yaml
文件。 -
将
platform.openstack.apiVIPs
属性的值设置为 API VIP 的 IP 地址。 -
将
platform.openstack.ingressVIPs
属性的值设置为 Ingress VIP 的 IP 地址。 -
将
platform.openstack.machinesSubnet
属性的值设置为提供商网络子网的 UUID。 -
将
networking.machineNetwork.cidr
属性的值设置为提供商网络子网的 CIDR 块。
platform.openstack.apiVIPs
和 platform.openstack.ingressVIPs
属性必须从 networking.machineNetwork.cidr
块中取消分配 IP 地址。
依赖于 RHOSP 提供商网络的集群的安装配置文件部分
您不能在将提供商网络用于主网络接口时设置 platform.openstack.externalNetwork
或 platform.openstack.externalDNS
参数。
在部署集群时,安装程序使用 install-config.yaml
文件在提供商网络上部署集群。
您可以将额外的网络(包括提供商网络)添加到 platform.openstack.additionalNetworkIDs
列表中。
部署集群后,您可以将 pod 附加到额外网络。如需更多信息,请参阅 了解多个网络。
6.13.4. Kuryr 端口池 复制链接链接已复制到粘贴板!
Kuryr 端口池在待机时维护多个端口,用于创建 pod。
将端口保留在待机上可最大程度缩短 pod 创建时间。如果没有端口池,Kuryr 必须明确请求在创建或删除 pod 时创建或删除端口。
Kuryr 使用的 Neutron 端口是在绑定到命名空间的子网中创建的。这些 pod 端口也作为子端口添加到 OpenShift Container Platform 集群节点的主端口。
因为 Kuryr 将每个命名空间保留在单独的子网中,所以为每个命名空间 worker 对维护一个单独的端口池。
在安装集群前,您可以在 cluster-network-03-config.yml
清单文件中设置以下参数来配置端口池行为:
-
enablePortPoolsPrepopulation
参数控制池准备工作,它会强制 Kuryr 在命名空间中创建第一个 pod 使用专用网络时将 Neutron 端口添加到池中。默认值为false
。 -
poolMinPorts
参数是池中保留的最少可用端口的数量。默认值为1
。 poolMaxPorts
参数是池中保留的最大可用端口数。值0 可
禁用此上限。这是默认设置。如果您的 OpenStack 端口配额较低,或者 pod 网络上的 IP 地址有限,请考虑设置此选项以确保删除不需要的端口。
-
poolBatchPorts
参数定义一次可以创建的 Neutron 端口的最大数量。默认值为3
。
6.13.5. 在安装过程中调整 Kuryr 端口池 复制链接链接已复制到粘贴板!
在安装过程中,您可以配置 Kuryr 如何管理 Red Hat OpenStack Platform(RHOSP)Neutron 端口,以控制 pod 创建的速度和效率。
先决条件
-
创建并修改
install-config.yaml
文件。
流程
在命令行中创建清单文件:
./openshift-install create manifests --dir <installation_directory>
$ ./openshift-install create manifests --dir <installation_directory>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>
,请指定包含集群的install-config.yaml
文件的目录名称。
在
<installation_directory>/manifests/
目录中创建一个名为cluster-network-03-config.yml
的文件:touch <installation_directory>/manifests/cluster-network-03-config.yml
$ touch <installation_directory>/manifests/cluster-network-03-config.yml
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
<installation_directory>
,请指定包含集群的manifests/
目录的目录名称。
创建该文件后,几个网络配置文件位于
manifests/
目录中,如下所示:ls <installation_directory>/manifests/cluster-network-*
$ ls <installation_directory>/manifests/cluster-network-*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
cluster-network-01-crd.yml cluster-network-02-config.yml cluster-network-03-config.yml
cluster-network-01-crd.yml cluster-network-02-config.yml cluster-network-03-config.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在编辑器中打开
cluster-network-03-config.yml
文件,并输入描述您想要的 Cluster Network Operator 配置的自定义资源(CR):oc edit networks.operator.openshift.io cluster
$ oc edit networks.operator.openshift.io cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑设置以满足您的要求。以下示例提供了以下文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
enablePortPoolsPrepopulation
设置为true
,以便在一个命名空间中为 pod 在网络上创建第一个 pod 时使 Kuryr 创建新的 Neutron 端口。此设置引发 Neutron 端口配额,但可以缩短生成容器集所需的时间。默认值为false
。 - 2
- 如果池中的可用端口数量低于
poolMinPorts
的值,Kuryr 会为池创建新端口。默认值为1
。 - 3
poolBatchPorts
控制在可用端口数量低于poolMinPorts
值时创建的新端口数量。默认值为3
。- 4
- 如果池中的可用端口数量大于
poolMaxPorts
的值,Kuryr 会删除它们,直到数量与这个值匹配为止。将此值设置为0 可
禁用此上限,防止池缩小。默认值为0
。 - 5
openStackServiceNetwork
参数定义将 IP 地址分配到 RHOSP Octavia 的 LoadBalancer 的网络的 CIDR 范围。
如果此参数与 Amphora 驱动程序一起使用,则 Octavia 会为每个负载均衡器从这个网络获取两个 IP 地址:一个用于 OpenShift,另一个用于 VRRP 连接。由于这些 IP 地址分别由 OpenShift 容器平台和 Neutron 管理,因此它们必须来自不同的池。因此,open
StackServiceNetwork
的值必须至少是serviceNetwork
值的两倍,serviceNetwork
的值必须与openStackServiceNetwork
定义的范围完全重叠。CNO 验证从此参数定义的范围获取的 VRRP IP 地址是否与
serviceNetwork
参数定义的范围不重叠。如果没有设置此参数,CNO 将使用
serviceNetwork
扩展值,它由使用 1 减少前缀大小决定。-
保存
cluster-network-03-config.yml
文件,再退出文本编辑器。 -
可选:备份
manifests/cluster-network-03-config.yml
文件。安装程序在创建集群时删除manifests/
目录。
6.13.6. 为机器设置自定义子网 复制链接链接已复制到粘贴板!
安装程序默认使用的 IP 范围可能与您在安装 OpenShift Container Platform 时创建的 Neutron 子网不匹配。如有必要,通过编辑安装配置文件来更新新机器的 CIDR 值。
先决条件
-
有 OpenShift Container Platform 安装程序生成的
install-config.yaml
文件。
流程
-
在命令行中,浏览包含
install-config.yaml
的目录。 在该目录中,运行脚本来编辑
install-config.yaml
文件或手动更新该文件:要使用脚本设置值,请运行:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 插入与您预期的 Neutron 子网相匹配的值,如
192.0.2.0/24
。
-
要手动设置值,请打开 文件,并将
networking.machineCIDR
的值设置为与您预期的 Neutron 子网匹配的内容。
6.13.7. 清空计算机器池 复制链接链接已复制到粘贴板!
要继续使用您自己的基础架构的安装,请将安装配置文件中的计算机器数量设置为零。之后,您可以手动创建这些机器。
先决条件
-
有 OpenShift Container Platform 安装程序生成的
install-config.yaml
文件。
流程
-
在命令行中,浏览包含
install-config.yaml
的目录。 在该目录中,运行脚本来编辑
install-config.yaml
文件或手动更新该文件:要使用脚本设置值,请运行:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
要手动设置值,打开该文件并将
compute.<first entry>.replicas 的
值设置为0
。
6.13.8. 修改网络类型 复制链接链接已复制到粘贴板!
默认情况下,安装程序会选择 OpenShiftSDN
网络类型。要使用 Kuryr,请更改安装程序生成的安装配置文件中的值。
先决条件
-
有 OpenShift Container Platform 安装程序生成的
install-config.yaml
文件
流程
-
在命令提示符中,进入包含
install-config.yaml
的目录。 在该目录中,运行脚本来编辑
install-config.yaml
文件或手动更新该文件:要使用脚本设置值,请运行:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
要手动设置值,打开 文件并将
networking.networkType
设置为"Kuryr"。