在...上配置 Open Virtual Network (OVN) 用户定义网络 (UDN) 的先决条件 Red Hat OpenShift on IBM Cloud
在 Red Hat OpenShift on IBM Cloud 上,为Localnet和第2层主网络配置OVN集群用户自定义网络(CUDN)的一次性先决条件。
本教程介绍了如何在 Red Hat® OpenShift® 上配置CUDN Localnets和Layer 2 Primaries的先决条件,详见 Kubernetes Service (网址:IBM Cloud )。 本教程中描述的所有任务均在每个集群上执行一次。
Localnet 概述
Red Hat OpenShift Kubernetes Service Localnet 网络需要进行额外的设置,而客户在使用 ROVS 时无需执行这些操作。 本教程介绍了所需的步骤。
准备 Red Hat OpenShift on IBM Cloud 集群
IBM Cloud 集群上的 Red Hat OpenShift 需要 NMState Operator。 NMState 为网桥和物理网络提供持久化的网络配置。 此步骤将安装操作员。
请牢记以下几点:
- 应用清单后,安装过程需要 5 到 10 分钟才能完成。
- 每个接口仅创建一个桥接。
- 请勿尝试更改
eth0上的桥接设置。
将以下代码块复制到文件中,并使用 oc apply -f step0a.yml 命令运行该文件,以安装NMState Operator。
---
apiVersion: v1
kind: Namespace
metadata:
name: openshift-nmstate
spec:
finalizers:
- kubernetes
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: openshift-nmstate
namespace: openshift-nmstate
spec:
targetNamespaces:
- openshift-nmstate
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: kubernetes-nmstate-operator
namespace: openshift-nmstate
spec:
channel: stable
installPlanApproval: Automatic
name: kubernetes-nmstate-operator
source: redhat-operators
sourceNamespace: openshift-marketplace
在创建 NMState 自定义资源之前,请等待操作员先注册 NMState 自定义资源定义(CRD)。 如果在建立 CRD 之前应用 NMState 资源,将会看到类似于“ no matches for kind "NMState" in version "nmstate.io/v1" ”的错误。
运行以下命令进行轮询,直到 CRD 出现,然后等待其达到“Established”状态。
until oc get crd nmstates.nmstate.io >/dev/null 2>&1; do echo "Waiting for NMState CRD..."; sleep 10; done
oc wait --for=condition=established crd/nmstates.nmstate.io --timeout=300s
请确认所有 NMState CRD 均已安装。
oc get crd | grep nmstate
示例输出:
nmstates.nmstate.io ...
nodenetworkconfigurationenactments.nmstate.io ...
nodenetworkconfigurationpolicies.nmstate.io ...
nodenetworkstates.nmstate.io ...
准备好 CRD 后,将以下代码块复制到文件中,并使用 oc apply -f step0b.yml 命令应用该代码,以创建名为 NMState 的自定义资源。
---
apiVersion: nmstate.io/v1
kind: NMState
metadata:
name: nmstate
spec:
probeConfiguration:
dns:
host: root-servers.net
应用桥接配置
应用基本桥接配置,以使用第二块外设组件互连-虚拟网络接口(PCI-VNI)网络接口卡(NIC)(eth1 )。
将以下代码块复制到文件中,并使用 oc apply -f step1.yml 命令将其应用。
---
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
name: "br-eth1"
spec:
desiredState:
interfaces:
- name: "br-eth1"
description: A dedicated OVS bridge with a NIC as a port
type: ovs-bridge
state: up
bridge:
allow-extra-patch-ports: true
options:
stp: false
port:
- name: "eth1"
请等待此配置在所有节点上生效后,再进行下一步操作。
% oc get NodeNetworkConfigurationPolicy br-eth1
NAME STATUS REASON
br-eth1 Available SuccessfullyConfigured
应用桥接映射配置
应用基本的桥接映射配置。
将以下代码块复制到文件中,并使用 oc apply -f step2.yml 命令将其应用。
---
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
name: "vpc-vlans"
spec:
desiredState:
ovn:
bridge-mappings:
- localnet: "vpc-vlans" # <- use your desired network name
bridge: "br-eth1"
state: present
为您的 VPC 创建自定义的二级前缀和子网
Localnets 可以为每个网络使用二级 VPC 子网。 此示例使用了来自一个新 VPC 前缀的三个新子网。 您可以替换任何前缀或网络,也可以使用 VPC 的默认设置。
创建新的 VPC 前缀
为每个区域创建一个新的前缀。 此示例使用超级网 198.18.0.0/16,并创建了三个 /18 前缀(子网),每个区域一个。
ic is vpc-addrc my-vpc-zone-1-vms my-vpc us-south-1 198.18.0.0/18 --default true
ic is vpc-addrc my-vpc-zone-2-vms my-vpc us-south-2 198.18.64.0/18
ic is vpc-addrc my-vpc-zone-3-vms my-vpc us-south-3 198.18.128.0/18
创建新的 VPC 子网
为第 1 区创建三个 VPC 子网(prod、db 和 app )。
ic is subnetc zone1-vm-prod my-vpc us-south-1 --ipv4-cidr-block 198.18.0.0/24
ic is subnetc zone1-vm-db my-vpc us-south-1 --ipv4-cidr-block 198.18.1.0/24
ic is subnetc zone1-vm-app my-vpc us-south-1 --ipv4-cidr-block 198.18.2.0/24
根据需要连接公共网关
确保每个区域都连接了一个公共网关。 否则,该子网仍为私有子网。
获取每个子网的ID。 在此示例中,选中了 zone1-vm-prod 子网。
ic is subnets | awk ' $8 ~ /yourVPC-NAME_GOES-HERE/'
示例输出:
0716-16da748a-5159-480c-b809-5f9e4750028b zone1-vm-app available 198.18.2.0/24 249/256 stone-likeness-bagging-headcount pgw-0ec02020-2f74-11f1-b0c5-bfe21078e55b potato-farm us-south-1 Default
0716-74a2d06b-de5c-40c2-8311-38dbff74ce62 zone1-vm-db available 198.18.1.0/24 249/256 stone-likeness-bagging-headcount - potato-farm us-south-1 Default
0716-efd14367-eed3-429d-b390-ea17f0e8cfb1 zone1-vm-prod available 198.18.0.0/24 249/256 stone-likeness-bagging-headcount pgw-0ec02020-2f74-11f1-b0c5-bfe21078e55b potato-farm us-south-1 Default
将公共网关连接到子网
使用子网 ID 0716-efd14367-eed3-429d-b390-ea17f0e8cfb1,将一个公共网关连接到 zone1-vm-prod 子网。
ic is subnet-public-gateway-attach zone1-vm-prod --pgw r134-053cb8b1-d966-4b02-9f20-5fcbeda76048
对于每个新的子网和每个区域,您都必须重复此步骤。 公共网关是按 VPC 和按区域分配的。
第2层 主要给排水系统
第2层主网络需要进行一些初始配置,终端用户才能开始使用它们。
在使用第 2 层主网络之前,您必须完成一些初始配置。
安装 FRR OVN 路由器模块
对 IBM Cloud 集群上的 Red Hat OpenShift 进行补丁更新,以便在 Open Virtual Networking (OVN) Pod 中启用 Free Range Routing (FRR) 选项。 应用以下补丁,以将 FRR 作为额外的路由提供商启用,并在 OVN- Kubernetes 配置中路由广告。
oc patch Network.operator.openshift.io cluster --type=merge -p='{"spec":{"additionalRoutingCapabilities":{"providers":["FRR"]},"defaultNetwork":{"ovnKubernetesConfig":{"routeAdvertisements":"Enabled"}}}}'
启用命名空间间网络功能
应用基础网络配置,以允许通过边界网关协议(BGP)进行通告的集群用户定义网络(CUDN)在命名空间之间进行网络通信。 此配置放宽了默认的用户自定义网络(UDN)隔离行为。 将以下清单保存为文件,并使用 oc apply -f step0.yml 进行应用。
# Permit intra-CUDN-namespace traffic
---
apiVersion: v1
kind: ConfigMap
metadata:
namespace: openshift-network-operator
name: ovn-kubernetes-config-overrides
data:
advertised-udn-isolation-mode: "loose"
启用路由通告选择器
添加路由广告,以配置 OVN 通过 BGP 与 OVN FRR Pod 一起发布 Pod 网络。 将以下清单保存为文件,并使用 oc apply -f step1.yml 进行应用。
网络必须带有 advertise: true 标签。
# Add the RouteAdvertisements
---
kind: RouteAdvertisements
apiVersion: k8s.ovn.org/v1
metadata:
name: default
spec:
nodeSelector: {}
frrConfigurationSelector: {}
networkSelectors:
- networkSelectionType: ClusterUserDefinedNetworks
clusterUserDefinedNetworkSelector:
networkSelector:
matchLabels:
advertise: "true"
advertisements:
- "PodNetwork"
---