1.7. 在 OpenShift 部署中为 Red Hat OpenStack Services 配置网络


在 OpenShift (RHOSO)部署中采用新的 Red Hat OpenStack Services 时,您必须将网络配置与采用的集群保持一致,以保持现有工作负载的连接。

执行以下任务,以纳入现有网络配置:

  • 配置 Red Hat OpenShift Container Platform (RHOCP) worker 节点,使 VLAN 标签和 IP 地址管理(IPAM)配置与现有部署保持一致。
  • 配置 control plane 服务,以将兼容 IP 范围用于服务和负载平衡 IP 地址。
  • 配置 data plane 节点,为 VLAN 标签和 IPAM 使用对应的兼容配置。

在配置节点和服务时,常规方法如下:

  • 对于 IPAM,您可以重复使用现有部署的子网范围,或者现有子网中有可用 IP 地址,请为新的 control plane 服务定义新范围。如果定义新范围,您可以在旧范围和新范围之间配置 IP 路由。如需更多信息,请参阅 规划您的 IPAM 配置
  • 对于 VLAN 标签,始终从现有部署重复使用配置。
注意

如需有关网络架构和配置的更多信息,请参阅在 OpenShift 上部署 Red Hat OpenStack Services 中的 为 Red Hat OpenStack Services 准备 网络,以及网络 中的 About 网络

注意

有关 newtork 架构和配置带有边框网关协议(BGP)环境的 RHOSO 动态路由的更多信息,请参阅部署动态路由环境中的 OpenShift 中的 为 Red Hat OpenStack Services 准备网络

1.7.1. 从现有部署检索网络配置

您必须确定现有部署中定义的隔离网络。检索网络配置后,您具有以下信息:

  • 在现有部署中使用的隔离网络列表。
  • 对于每个隔离的网络,用于动态地址分配的 VLAN 标签和 IP 范围。
  • 环境中使用的现有 IP 地址分配列表。当重复使用现有子网范围来托管新的 control plane 服务时,这些地址将不包括在对应的分配池中。

流程

  1. network_data.yaml 文件中找到网络配置。例如:

    - name: InternalApi
      mtu: 1500
      vip: true
      vlan: 20
      name_lower: internal_api
      dns_domain: internal.mydomain.tld.
      service_net_map_replace: internal
      subnets:
        internal_api_subnet:
          ip_subnet: '172.17.0.0/24'
          allocation_pools: [{'start': '172.17.0.4', 'end': '172.17.0.250'}]
    Copy to Clipboard Toggle word wrap
  2. 检索 vlan 键中使用的 VLAN 标签,以及每个隔离的网络的 ip_subnet 键中的 IP 范围,来自 network_data.yaml 文件。当从新的 control plane 服务的现有部署中重复使用子网范围时,范围将分成单独的池,用于 control plane 服务和负载均衡器 IP 地址。
  3. 使用 tripleo-ansible-inventory.yaml 文件来确定已在采用的环境中使用的 IP 地址列表。对于文件中列出的每个主机,记下节点消耗的 IP 和 VIP 地址。例如:

    Standalone:
      hosts:
        standalone:
          ...
          internal_api_ip: 172.17.0.100
        ...
      ...
    standalone:
      children:
        Standalone: {}
      vars:
        ...
        internal_api_vip: 172.17.0.2
        ...
    Copy to Clipboard Toggle word wrap
    注意

    在本例中,会使用 172.17.0.2172.17.0.100 值,在采用完前,新的 control plane 服务将不可用。

  4. 对配置中的每个隔离网络和每个主机重复此步骤。

1.7.2. 规划您的 IPAM 配置

在 OpenShift 上的 Red Hat OpenStack Services (RHOSO)部署中,部署在 Red Hat OpenShift Container Platform (RHOCP) worker 节点上的每个服务都需要 IP 地址管理(IPAM)池。在 Red Hat OpenStack Platform (RHOSP)部署中,托管在 Controller 节点上的所有服务共享相同的 IP 地址。

RHOSO control plane 对为服务提供的 IP 地址数量有不同的要求。根据现有 RHOSO 部署中使用的 IP 范围大小,您可以为 RHOSO control plane 重复使用这些范围。

每个隔离网络中新 control plane 服务所需的 IP 地址总数计算为以下网络的总和:

  • RHOCP worker 节点数量。每个 worker 节点都需要 NodeNetworkConfigurationPolicy 自定义资源(CR)中的一个 IP 地址。
  • data plane 节点所需的 IP 地址数量。每个节点都需要来自 NetConfig CR 的 IP 地址。
  • control plane 服务所需的 IP 地址数量。每个服务都需要来自 NetworkAttachmentDefinition CR 的 IP 地址。这个数量取决于每个服务的副本数。
  • 负载均衡器 IP 地址所需的 IP 地址数量。每个服务都需要来自 IPAddressPool CR 的虚拟 IP 地址。

例如,使用 Red Hat OpenShift Local 简单的 worker 节点 RHOCP 部署为 internalapi 网络定义了以下 IP 范围:

  • 单个 worker 节点的 IP 地址
  • data plane 节点的 IP 地址
  • control plane 服务的 NetworkAttachmentDefinition CR: X.X.X.30-X.X.X.70 (41 addresses)
  • 负载均衡器 IP 的 IPAllocationPool CR: X.X.X.80-X.X.X.90 (11 地址)

本例显示了分配给 internalapi 分配池的 54 个 IP 地址。

要求可能会根据要部署的 RHOSP 服务列表、其副本数以及 RHOCP worker 节点和数据平面节点的数量而有所不同。

在以后的 RHOSP 发行版本中可能需要额外的 IP 地址,因此您必须为新环境中使用的每个分配池规划一些额外的容量。

在为新部署确定所需的 IP 池大小后,您可以选择定义新的 IP 地址范围或重复使用现有的 IP 地址范围。无论场景如何,现有部署中的 VLAN 标签都会在新部署中重复使用。确保新配置中正确保留 VLAN 标签。如需更多信息,请参阅配置隔离网络

1.7.2.1. 配置新子网范围

注意

如果您在大多数情况下使用 IPv6,则可以重复使用现有的子网范围。有关现有子网范围的更多信息,请参阅 重复使用现有子网范围

您可以为属于集群中没有使用的不同子网的 control plane 服务定义新的 IP 范围。然后,您可以配置现有子网和新子网之间的链接本地 IP 路由,以启用现有的和新服务部署进行通信。这涉及在预采用的集群中使用 director 机制来配置额外的链接本地路由。这可让数据平面部署使用现有子网地址连接到 Red Hat OpenStack Platform (RHOSP)节点。您可以将新子网范围用于任何现有子网配置,当现有集群子网范围没有足够可用 IP 地址用于新的 control plane 服务时。

您必须正确调整新子网的大小,以适应新的 control plane 服务。RHOSP 环境已消耗的现有部署分配池没有特定要求。

重要

不支持为存储和存储管理定义新子网,因为计算服务(nova)和 Red Hat Ceph Storage 不允许在采用期间修改这些网络。

在以下步骤中,您要将 NetworkAttachmentDefinition 自定义资源(CR)配置为使用与同一网络的 OpenStackDataPlaneNodeSet CR 的 network_config 部分中配置的不同子网。NetworkAttachmentDefinition CR 中的新范围用于 control plane 服务,而 OpenStackDataPlaneNodeSet CR 中的现有范围则用于管理数据平面节点的 IP 地址管理(IPAM)。

以下流程中使用的值是示例。使用特定于您的配置的值。

流程

  1. 在现有部署节点上为 control plane 子网配置 link local 路由。这可以通过 director 配置完成:

    network_config:
      - type: ovs_bridge
        name: br-ctlplane
        routes:
        - ip_netmask: 0.0.0.0/0
          next_hop: 192.168.1.1
        - ip_netmask: 172.31.0.0/24 
    1
    
          next_hop: 192.168.1.100 
    2
    Copy to Clipboard Toggle word wrap
    1
    新的 control plane 子网。
    2
    现有数据平面节点的 control plane IP 地址。

    对需要为部署的新和现有部分使用不同子网的其他网络重复此配置。

  2. 将新配置应用到每个 RHOSP 节点:

    (undercloud)$ openstack overcloud network provision \
     --output  <deployment_file> \
    [--templates <templates_directory>]/home/stack/templates/<networks_definition_file>
    Copy to Clipboard Toggle word wrap
    (undercloud)$ openstack overcloud node provision \
     --stack <stack> \
     --network-config \
     --output <deployment_file> \
    [--templates <templates_directory>]/home/stack/templates/<node_definition_file>
    Copy to Clipboard Toggle word wrap
    • 可选:包含-- templates 选项以使用您自己的模板,而不是位于 /usr/share/openstack-tripleo-heat-templates 中的默认模板。将 <templates_directory> 替换为包含模板的目录的路径。
    • & lt;stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为 overcloud
    • 包含 --network-config 可选参数,为 cli-overcloud-node-network-config.yaml Ansible playbook 提供网络定义。cli-overcloud-node-network-config.yaml playbook 使用 os-net-config 工具在部署的节点上应用网络配置。如果不使用 use -network-config 提供网络定义,则必须在 network-environment.yaml 文件中配置 {{role.name}}NetworkConfigTemplate 参数,否则将使用默认网络定义。
    • <deployment_file> 替换为用于部署命令生成的 heat 环境文件的名称,如 /home/stack/templates/overcloud-baremetal-deployed.yaml
    • <node_definition_file > 替换为节点定义文件的名称,如 overcloud-baremetal-deploy.yaml。确保在节点定义文件中将 network_config_update 变量设置为 true

      注意

      默认不会应用网络配置更改,以避免出现网络中断的风险。您必须在 director 配置文件中设置 StandaloneNetworkConfigUpdate: true 来强制实施更改。

  3. 确认每个节点上有新的链接本地路由到新子网。例如:

    # ip route | grep 172
    172.31.0.0/24 via 192.168.122.100 dev br-ctlplane
    Copy to Clipboard Toggle word wrap
  4. 您还必须配置本地路由到 OpenShift (RHOSO) worker 节点上的现有部署。这可以通过为每个网络将 路由 条目添加到 NodeNetworkConfigurationPolicy CR 来实现。例如:

      - destination: 192.168.122.0/24 
    1
    
        next-hop-interface: ospbr 
    2
    Copy to Clipboard Toggle word wrap
    1
    数据平面上隔离网络的原始子网。
    2
    与数据平面上的隔离网络对应的 Red Hat OpenShift Container Platform (RHOCP) worker 网络接口。

    因此,在 RHOCP 节点中添加以下路由:

    # ip route | grep 192
    192.168.122.0/24 dev ospbr proto static scope link
    Copy to Clipboard Toggle word wrap
  5. 之后,在 data plane 采用过程中,在 OpenStackDataPlaneNodeSet CR 的 network_config 部分中,为新 control plane 子网范围添加相同的链接本地路由。例如:

      nodeTemplate:
        ansible:
          ansibleUser: root
          ansibleVars:
            additional_ctlplane_host_routes:
            - ip_netmask: 172.31.0.0/24
              next_hop: '{{ ctlplane_ip }}'
            edpm_network_config_template: |
              network_config:
              - type: ovs_bridge
                routes: {{ ctlplane_host_routes + additional_ctlplane_host_routes }}
                ...
    Copy to Clipboard Toggle word wrap
  6. 列出现有部署中用于 data plane 节点的 IP 地址,存为 ansibleHostfixedIP。例如:

      nodes:
        standalone:
          ansible:
            ansibleHost: 192.168.122.100
            ansibleUser: ""
          hostName: standalone
          networks:
          - defaultRoute: true
            fixedIP: 192.168.122.100
            name: ctlplane
            subnetName: subnet1
    Copy to Clipboard Toggle word wrap
    重要

    在采用过程中不要更改 RHOSP 节点 IP 地址。在 OpenStackDataPlaneNodeSet CR 的 nodes 部分中,列出之前在 fixedIP 字段中为每个节点条目使用 IP 地址。

  7. 扩展防火墙配置的 SSH 范围,使其包含两个子网,以允许从两个子网的 SSH 访问 data plane 节点:

      edpm_sshd_allowed_ranges:
      - 192.168.122.0/24
      - 172.31.0.0/24
    Copy to Clipboard Toggle word wrap

    这提供了从新子网到 RHOSP 节点以及 RHOSP 子网的 SSH 访问。

1.7.2.2. 重复使用现有子网范围

如果现有子网范围有足够的 IP 地址来分配给新的 control plane 服务,您可以重复使用它们。您可以将新的 control plane 服务配置为使用与 Red Hat OpenStack Platform (RHOSP)环境中使用的相同的子网,并配置供新服务使用的分配池,以排除已分配给现有集群节点的 IP 地址。通过重复使用现有子网,您可以避免现有子网和新子网之间的附加本地路由配置。

如果您的现有子网在新的 control plane 服务的现有子网范围内没有足够的 IP 地址,您必须创建新的子网范围。如需更多信息,请参阅使用新子网范围

不需要特殊的路由配置来重复利用子网范围。但是,您必须确保 RHOSP 服务使用的 IP 地址与 OpenShift control plane 服务上为 Red Hat OpenStack Services 配置的新分配池重叠。

如果您特别受现有子网的大小的限制,您可能必须在为新的 control plane 服务定义分配池时应用详细排除规则。如需更多信息,请参阅配置隔离网络

1.7.3. 配置隔离网络

在开始在 OpenShift (RHOSO)环境中的 Red Hat OpenStack Services 中复制现有的 VLAN 和 IPAM 配置前,您必须为新的 control plane 服务具有以下 IP 地址分配:

  • 每个 Red Hat OpenShift Container Platform (RHOCP) worker 节点上每个隔离的网络的 1 个 IP 地址。您可以在 RHOCP worker 节点的 NodeNetworkConfigurationPolicy 自定义资源(CR)中配置这些 IP 地址。如需更多信息,请参阅配置 RHOCP worker 节点
  • 每个数据平面节点的每个隔离网络有 1 个 IP 范围。您可以在 data plane 节点的 NetConfig CR 中配置这些范围。如需更多信息,请参阅配置数据平面节点
  • 每个用于 control plane 服务的隔离网络有一个 IP 范围。这些范围在 NetworkAttachmentDefinition CR 中为隔离的网络启用 pod 连接。如需更多信息,请参阅为 control plane 服务配置网络
  • 每个用于负载均衡器 IP 地址的每个隔离的网络的 IP 范围。这些 IP 范围在 IPAddressPool CR 中为 MetalLB 定义负载均衡器 IP 地址。如需更多信息,请参阅为 control plane 服务配置网络
注意

以下流程中隔离网络的确切列表和配置应反映实际 Red Hat OpenStack Platform 环境。隔离网络的数量可能与流程中使用的示例不同。IPAM 方案可能有所不同。仅会显示与配置网络相关的部分配置。以下流程中使用的值是示例。使用特定于您的配置的值。

1.7.3.1. 在 RHOCP worker 节点上配置隔离网络

要将服务 pod 连接到运行 Red Hat OpenStack Platform 服务的 Red Hat OpenShift Container Platform (RHOCP) worker 节点上的隔离网络,需要虚拟机监控程序上的物理网络配置。

此配置由 NMState operator 管理,它使用 NodeNetworkConfigurationPolicy 自定义资源(CR)为节点定义所需的网络配置。

流程

  • 对于每个 RHOCP worker 节点,定义一个 NodeNetworkConfigurationPolicy CR,用于描述所需的网络配置。例如:

    apiVersion: v1
    items:
    - apiVersion: nmstate.io/v1
      kind: NodeNetworkConfigurationPolicy
      spec:
        desiredState:
          interfaces:
          - description: internalapi vlan interface
            ipv4:
              address:
              - ip: 172.17.0.10
                prefix-length: 24
              dhcp: false
              enabled: true
            ipv6:
              enabled: false
            name: enp6s0.20
            state: up
            type: vlan
            vlan:
              base-iface: enp6s0
              id: 20
              reorder-headers: true
          - description: storage vlan interface
            ipv4:
              address:
              - ip: 172.18.0.10
                prefix-length: 24
              dhcp: false
              enabled: true
            ipv6:
              enabled: false
            name: enp6s0.21
            state: up
            type: vlan
            vlan:
              base-iface: enp6s0
              id: 21
              reorder-headers: true
          - description: tenant vlan interface
            ipv4:
              address:
              - ip: 172.19.0.10
                prefix-length: 24
              dhcp: false
              enabled: true
            ipv6:
              enabled: false
            name: enp6s0.22
            state: up
            type: vlan
            vlan:
              base-iface: enp6s0
              id: 22
              reorder-headers: true
        nodeSelector:
          kubernetes.io/hostname: ocp-worker-0
          node-role.kubernetes.io/worker: ""
    Copy to Clipboard Toggle word wrap

1.7.3.2. 在 control plane 服务中配置隔离网络

在 NMState Operator 为隔离网络创建所需的 hypervisor 网络配置后,您必须配置 Red Hat OpenStack Platform (RHOSP)服务以使用配置的接口。您可以为每个隔离网络定义一个 NetworkAttachmentDefinition 自定义资源(CR)。在一些集群中,这些 CR 由 Cluster Network Operator 管理,在这种情况下,使用 Network CR。如需更多信息,请参阅 Networking 中的 Cluster Network Operator

流程

  1. 为每个隔离网络定义一个 NetworkAttachmentDefinition CR。例如:

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      name: internalapi
    spec:
      config: |
        {
          "cniVersion": "0.3.1",
          "name": "internalapi",
          "type": "macvlan",
          "master": "enp6s0.20",
          "ipam": {
            "type": "whereabouts",
            "range": "172.17.0.0/24",
            "range_start": "172.17.0.20",
            "range_end": "172.17.0.50"
          }
        }
    Copy to Clipboard Toggle word wrap
    重要

    确保接口名称和 IPAM 范围与您在 NodeNetworkConfigurationPolicy CR 中使用的配置匹配。

  2. 可选: 在重复使用现有 IP 范围时,您可以使用 NetworkAttachmentDefinition 池中的 exclude 参数排除现有部署中使用的范围的一部分。例如:

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      name: internalapi
    spec:
      config: |
        {
          "cniVersion": "0.3.1",
          "name": "internalapi",
          "type": "macvlan",
          "master": "enp6s0.20",
          "ipam": {
            "type": "whereabouts",
            "range": "172.17.0.0/24",
            "range_start": "172.17.0.20", 
    1
    
            "range_end": "172.17.0.50", 
    2
    
            "exclude": [ 
    3
    
              "172.17.0.24/32",
              "172.17.0.44/31"
            ]
          }
        }
    Copy to Clipboard Toggle word wrap
    1
    定义 IP 范围的开头。
    2
    定义 IP 范围的末尾。
    3
    排除 IP 范围的一部分。本例从分配池中排除 IP 地址 172.17.0.24/32172.17.0.44/31
  3. 如果您的 RHOSP 服务需要负载均衡器 IP 地址,请在 IPAddressPool CR 中定义这些服务的池。例如:

    注意

    负载均衡器 IP 地址属于与 control plane 服务相同的 IP 范围,并由 MetalLB 管理。此池也应该与 RHOSP 配置保持一致。

    - apiVersion: metallb.io/v1beta1
      kind: IPAddressPool
      spec:
        addresses:
        - 172.17.0.60-172.17.0.70
    Copy to Clipboard Toggle word wrap

    为每个需要负载均衡器 IP 地址的隔离网络定义 IPAddressPool CR。

  4. 可选: 在重复使用现有 IP 范围时,您可以通过列出 IPAddressPool 的 address 部分中的多个条目来排除范围的一部分。例如:

    - apiVersion: metallb.io/v1beta1
      kind: IPAddressPool
      spec:
        addresses:
        - 172.17.0.60-172.17.0.64
        - 172.17.0.66-172.17.0.70
    Copy to Clipboard Toggle word wrap

    上面的示例将排除来自分配池的 172.17.0.65 地址。

1.7.3.3. 在 data plane 节点上配置隔离网络

data plane 节点由 OpenStack Operator 和 OpenStackDataPlaneNodeSet 自定义资源(CR)配置。OpenStackDataPlaneNodeSet CR 为节点定义所需的网络配置。

您的 Red Hat OpenStack Services on OpenShift (RHOSO)网络配置应反映现有的 Red Hat OpenStack Platform (RHOSP)网络设置。您必须从每个 RHOSP 节点拉取 network_data.yaml 文件,并在定义 OpenStackDataPlaneNodeSet CR 时重复使用它们。配置的格式不会改变,因此您可以将网络模板置于 edpm_network_config_template 变量下,可以是所有节点还是每个节点。

流程

  1. 使用所需的 VLAN 标签和 IPAM 配置来配置 NetConfig CR。例如:

    apiVersion: network.openstack.org/v1beta1
    kind: NetConfig
    metadata:
      name: netconfig
    spec:
      networks: 
    1
    
      - name: internalapi
        dnsDomain: internalapi.example.com
        subnets:
        - name: subnet1
          allocationRanges:
          - end: 172.17.0.250
            start: 172.17.0.100
          cidr: 172.17.0.0/24
          vlan: 20
      - name: storage
        dnsDomain: storage.example.com
        subnets:
        - name: subnet1
          allocationRanges:
          - end: 172.18.0.250
            start: 172.18.0.100
          cidr: 172.18.0.0/24
          vlan: 21
      - name: tenant
        dnsDomain: tenant.example.com
        subnets:
        - name: subnet1
          allocationRanges:
          - end: 172.19.0.250
            start: 172.19.0.100
          cidr: 172.19.0.0/24
          vlan: 22
    Copy to Clipboard Toggle word wrap
    1
    网络 组成必须与源云配置匹配,以避免数据平面连接停机时间。
  2. 可选:在 NetConfig CR 中,列出 allocationRanges 字段的多个范围来排除一些 IP 地址,例如,以适应被采用的环境消耗的 IP 地址:

    apiVersion: network.openstack.org/v1beta1
    kind: NetConfig
    metadata:
      name: netconfig
    spec:
      networks:
      - name: internalapi
        dnsDomain: internalapi.example.com
        subnets:
        - name: subnet1
          allocationRanges:
          - end: 172.17.0.199
            start: 172.17.0.100
          - end: 172.17.0.250
            start: 172.17.0.201
          cidr: 172.17.0.0/24
          vlan: 20
    Copy to Clipboard Toggle word wrap

    本例从池中排除 172.17.0.200 地址。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat