4.3. 在 RHOSO 上为 BGP 网络准备 RHOCP
Red Hat OpenStack Services on OpenShift (RHOSO)服务作为 Red Hat OpenShift Container Platform (RHOCP)工作负载运行。您可以使用 NMState Operator 将 worker 节点连接到所需的隔离网络。您可以使用 MetalLB Operator 在隔离的网络上公开内部服务端点。默认情况下,公共服务端点作为 RHOCP 路由公开。
以下流程中的示例使用 IPv4 地址。您可以使用 IPv6 地址而不是 IPv4 地址。双堆栈 IPv4/6 不可用。有关如何配置 IPv6 地址的详情,请参考 RHOCP 网络指南中的以下资源 :
4.3.1. 在 RHOCP 节点的 BGP 接口上禁用 rcp_filter 复制链接链接已复制到粘贴板!
要让 Red Hat OpenShift Container Platform (RHOCP) worker 节点根据它们接收的 BGP 公告转发流量,您必须在运行 RHOSO 服务的 RHOCP worker 节点上禁用反向路径过滤器。
流程
创建名为
tuned.yaml的清单文件,其内容类似如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并创建
Tuned资源:oc create -f tuned.yaml
$ oc create -f tuned.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2. 使用 BGP 的隔离网络接口准备 RHOCP 复制链接链接已复制到粘贴板!
创建一个 NodeNetworkConfigurationPolicy (nncp)自定义资源(CR),以便在 Red Hat OpenShift Container Platform (RHOCP)集群中的每个 worker 节点上为每个隔离网络配置接口。
流程
-
在工作站上创建一个
NodeNetworkConfigurationPolicy(nncp) CR 文件,例如openstack-nncp-bgp.yaml。 检索 RHOCP 集群中 worker 节点的名称:
oc get nodes -l node-role.kubernetes.io/worker -o jsonpath="{.items[*].metadata.name}"$ oc get nodes -l node-role.kubernetes.io/worker -o jsonpath="{.items[*].metadata.name}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 发现网络配置:
oc get nns/<worker_node> -o yaml | more
$ oc get nns/<worker_node> -o yaml | moreCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<worker_node> 替换为在第 2 步中获取的 worker 节点的名称,如worker-1。为每个 worker 节点重复此步骤。
-
将
在
nncpCR 文件中,在 RHOCP 集群中每个 worker 节点上为每个隔离网络配置接口。有关必须配置网络隔离的默认物理数据中心网络的信息,请参阅 OpenShift 网络上的默认 Red Hat OpenStack Services for BGP。在以下示例中,
nncpCR 配置用于映射 Red Hat OpenStack Services on OpenShift (RHOSO)网络的多个未连接的网桥。您可以使用 BGP 接口与网络光纤对等,并建立连接。环回接口配置了 BGP 网络源地址99.99.0.x。您可以选择将 NIC 专用于ctlplane网络。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在集群中创建
nncpCR:oc apply -f openstack-nncp-bgp.yaml
$ oc apply -f openstack-nncp-bgp.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
nncpCR 是否已创建:oc get nncp -w
$ oc get nncp -w NAME STATUS REASON osp-enp6s0-worker-1 Progressing ConfigurationProgressing osp-enp6s0-worker-1 Progressing ConfigurationProgressing osp-enp6s0-worker-1 Available SuccessfullyConfiguredCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. 将服务 pod 附加到 BGP 的隔离网络 复制链接链接已复制到粘贴板!
为每个隔离网络创建一个 NetworkAttachmentDefinition (net-attach-def)自定义资源(CR),以将服务 pod 附加到网络。
流程
-
在工作站上创建一个
NetworkAttachmentDefinition(net-attach-def) CR 文件,如openstack-net-attach-def.yaml。 在
NetworkAttachmentDefinitionCR 文件中,为每个隔离网络配置NetworkAttachmentDefinition资源,以将服务部署 pod 附加到网络。以下示例创建一个NetworkAttachmentDefinition资源,它使用带有特定网关配置和其他选项的类型网桥接口:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在集群中创建
NetworkAttachmentDefinitionCR:oc apply -f openstack-net-attach-def.yaml
$ oc apply -f openstack-net-attach-def.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
NetworkAttachmentDefinitionCR 是否已创建:oc get net-attach-def -n openstack
$ oc get net-attach-def -n openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.4. 为 BGP 为 RHOSO 网络 VIPS 准备 RHOCP 复制链接链接已复制到粘贴板!
您必须创建 BGPPeer 自定义资源(CR)对,以定义哪个叶交换机连接到每个节点上的 eth2 和 eth3 接口。例如,worker-0 有两个 BGPPeer CR,一个用于 leaf-0,一个用于 leaf-1。有关 BGP 对等点的详情,请参考 link:https://docs.redhat.com/en/documentation/openshift_container_platform/4.18/html/ingress_and_load_balancing/load-balancing-with-metallb#nw-metallb-configure-bgppeer_configure-metallb-bgp-peers [配置 BGP peer]。
您还必须创建 IPAddressPool CR 来定义要公告的网络范围,以及一个 BGPAdvertisement CR,用于定义如何声明 BGPPeer CR,并将 IPAddressPool CR 链接到接收广告的 BGPPeer CR。
流程
-
在工作站上创建一个
BGPPeerCR 文件,如bgppeers.yaml。 将每个节点的
BGPPeerCR 对配置为 peer。以下示例为worker-0节点配置两个BGPPeerCR,一个用于 leaf-0,一个用于 leaf-1 :Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 BGPPeer CR:
oc create -f bgppeers.yaml
$ oc create -f bgppeers.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在工作站上创建一个
IPAddressPoolCR 文件,例如ipaddresspools-bgp.yaml。 在
IPAddressPoolCR 文件中,在每个隔离网络上配置IPAddressPool资源,以指定 MetalLB 具有授权的 IP 地址范围:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
IPAddressPool范围不得与whereaboutsIPAM 范围和 NetConfigallocationRange重叠。
有关如何配置其他
IPAddressPool资源参数的详情,请参考 RHOCP 网络概述 中配置 MetalLB BGP 对等点。在集群中创建
IPAddressPoolCR:oc apply -f ipaddresspools-bgp.yaml
$ oc apply -f ipaddresspools-bgp.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
IPAddressPoolCR 是否已创建:oc describe -n metallb-system IPAddressPool
$ oc describe -n metallb-system IPAddressPoolCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在工作站上创建一个
BGPAdvertisementCR 文件,如bgpadvert.yaml。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 列出您为每个 RHOCP 节点需要与之通信的对等 IP 地址定义的所有
BGPPeerCR。
在集群中创建
BGPAdvertisementCR:oc apply -f bgpadvert.yaml
$ oc apply -f bgpadvert.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的集群将 OVNKubernetes 用作网络后端,则必须启用全局转发,以便 MetalLB 可以在二级网络接口中工作。
检查集群使用的网络后端:
oc get network.operator cluster --output=jsonpath='{.spec.defaultNetwork.type}'$ oc get network.operator cluster --output=jsonpath='{.spec.defaultNetwork.type}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果后端是 OVNKubernetes,则运行以下命令来启用全局 IP 转发:
oc patch network.operator cluster -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"gatewayConfig":{"ipForwarding": "Global"}}}}}' --type=merge$ oc patch network.operator cluster -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"gatewayConfig":{"ipForwarding": "Global"}}}}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow