第 3 章 使用 director Operator 创建网络
要在 OpenShift Virtualization worker 节点上创建网络和桥接,并将虚拟机(VM)连接到这些网络,您可以定义 OpenStackNetConfig
自定义资源(CR)并指定 overcloud 网络的所有子网。您必须为 overcloud 创建一个 control plane 网络。您还可以选择创建额外网络来为可组合网络实施网络隔离。
3.1. 使用 OpenStackNetConfig
CRD 创建 overcloud 网络
您必须使用 OpenStackNetConfig
CRD 为 overcloud 定义至少一个 control plane 网络。您还可以选择定义 VLAN 网络,以便为可组合网络创建网络隔离,如 InternalAPI
、Storage
和 External
。每个网络定义都必须包含 IP 地址分配,以及 OpenStackNetAttachment
CRD 的映射信息。OpenShift Virtualization 使用网络定义将任何虚拟机(VM)附加到 control plane 和 VLAN 网络。
使用以下命令查看 OpenStackNetConfig
CRD 定义和规格模式:
$ oc describe crd openstacknetconfig $ oc explain openstacknetconfig.spec
流程
-
在工作站上创建一个名为
openstacknetconfig.yaml
的文件。 将以下配置添加到
openstacknetconfig.yaml
以创建OpenStackNetConfig
自定义资源(CR):apiVersion: osp-director.openstack.org/v1beta1 kind: OpenStackNetConfig metadata: name: openstacknetconfig
为您的网络所需的网桥配置网络附加定义。例如,将以下配置添加到
openstacknetconfig.yaml
中,以创建 RHOSP 网桥网络附加定义br-osp
,并将nodeNetworkConfigurationPolicy
选项设置为创建 Linux 网桥:apiVersion: osp-director.openstack.org/v1beta1 kind: OpenStackNetConfig metadata: name: openstacknetconfig spec: attachConfigurations: br-osp: 1 nodeNetworkConfigurationPolicy: nodeSelector: node-role.kubernetes.io/worker: "" desiredState: interfaces: - bridge: options: stp: enabled: false port: - name: enp6s0 2 description: Linux bridge with enp6s0 as a port name: br-osp 3 state: up type: linux-bridge mtu: 1500 4 # optional DnsServers list dnsServers: - 192.168.25.1 # optional DnsSearchDomains list dnsSearchDomains: - osptest.test.metalkube.org - some.other.domain # DomainName of the OSP environment domainName: osptest.test.metalkube.org
可选: 要将 Jumbo Frames 用于网桥,请将网桥接口配置为使用 Jumbo Frames 并更新网桥的
mtu
值:apiVersion: osp-director.openstack.org/v1beta1 kind: OpenStackNetConfig metadata: name: openstacknetconfig spec: attachConfigurations: br-osp: nodeNetworkConfigurationPolicy: nodeSelector: node-role.kubernetes.io/worker: "" desiredState: interfaces: - bridge: options: stp: enabled: false port: - name: enp6s0 description: Linux bridge with enp6s0 as a port name: br-osp state: up type: linux-bridge mtu: 9000 1 - name: enp6s0 2 description: Configuring enp6s0 on workers type: ethernet state: up mtu: 9000 ...
定义每个 overcloud 网络。以下示例为
InternalAPI
流量创建一个 control plane 网络和一个隔离的网络:spec: ... networks: - name: Control 1 nameLower: ctlplane 2 subnets: 3 - name: ctlplane 4 ipv4: 5 allocationEnd: 172.22.0.250 allocationStart: 172.22.0.100 cidr: 172.22.0.0/24 gateway: 172.22.0.1 attachConfiguration: br-osp 6 - name: InternalApi 7 nameLower: internal_api mtu: 1350 subnets: - name: internal_api attachConfiguration: br-osp vlan: 20 8 ipv4: allocationEnd: 172.17.0.250 allocationStart: 172.17.0.10 cidr: 172.17.0.0/24 ...
- 1
- 网络的名称,例如
Control
。 - 2
- 网络名称的小写版本,例如
ctlplane
。 - 3
- 子网规格。
- 4
- 子网的名称,如
ctlplane
。 - 5
- 带有
allocationStart
,allocationEnd
,cidr
,gateway
, 和带有destination
和nexthop
的路由列表的 IPv4 子网详情。 - 6
- 将网络连接到的网络附加定义。在本例中,RHOSP 网桥
br-osp
连接到每个 worker 上的 NIC。 - 7
- 可组合网络的网络定义。要使用默认的 RHOSP 网络,您必须为每个网络创建一个
OpenStackNetConfig
资源。有关默认 RHOSP 网络的信息,请参阅 默认 Red Hat OpenStack Platform 网络。要使用不同的网络,您必须创建一个自定义network_data.yaml
文件。有关创建自定义network_data.yaml
文件的详情,请参考 配置 overcloud 网络。 - 8
- 网络 VLAN。有关默认 RHOSP 网络的信息,请参阅 默认 Red Hat OpenStack Platform 网络。有关使用
OpenStackNetConfig
CRD 的虚拟机桥接的更多信息,请参阅使用 OpenStackNetConfig CRD 了解虚拟机桥接。
可选:为特定节点上的网络保留静态 IP 地址:
spec: ... reservations: controller-0: ipReservations: ctlplane: 172.22.0.120 compute-0: ipReservations: ctlplane: 172.22.0.140 internal_api: 172.17.0.40 storage: 172.18.0.40 tenant: 172.20.0.40
注意保留优先于任何自动生成的 IP 地址。
-
保存
openstacknetconfig.yaml
定义文件。 创建 overcloud 网络:
$ oc create -f osnetconfig.yaml -n openstack
要验证 overcloud 网络是否已创建,请查看 overcloud 网络的资源:
$ oc get openstacknetconfig/openstacknetconfig
查看
OpenStackNetConfig
API 和子资源:$ oc get openstacknetconfig/openstacknetconfig -n openstack $ oc get openstacknetattachment -n openstack $ oc get openstacknet -n openstack
如果您看到错误,请检查底层
network-attach-definition
和节点网络配置策略:$ oc get network-attachment-definitions -n openstack $ oc get nncp
3.1.1. 默认 Red Hat OpenStack Platform 网络
Network | VLAN | CIDR | 分配 |
---|---|---|---|
外部 | 10 | 10.0.0.0/24 | 10.0.0.10 - 10.0.0.250 |
InternalApi | 20 | 172.17.0.0/24 | 172.17.0.10 - 172.17.0.250 |
存储 | 30 | 172.18.0.0/24 | 172.18.0.10 - 172.18.0.250 |
StorageMgmt | 40 | 172.19.0.0/24 | 172.19.0.10 - 172.19.250 |
租户 | 50 | 172.20.0.0/24 | 172.20.0.10 - 172.20.0.250 |