11.4. 将虚拟机连接到二级 localnet 用户定义的网络


您可以使用 CLI 将虚拟机(VM)连接到 OVN-Kubernetes localnet 二级网络。集群管理员可以使用 ClusterUserDefinedNetwork (CUDN)自定义资源定义(CRD)在多个命名空间间创建共享 OVN-Kubernetes 网络。

OVN-Kubernetes 二级网络与 多网络策略 API 兼容,它提供 MultiNetworkPolicy 自定义资源定义(CRD)来控制进出虚拟机的流量流。

重要

您必须使用 ipBlock 属性为特定 CIDR 块定义网络策略入口和出口规则。不支持使用 pod 或命名空间选择器策略 peer。

localnet 拓扑将二级网络连接到物理网络。这可让 east-west 集群流量并访问在集群外运行的服务,但它需要在集群节点上配置底层 Open vSwitch (OVS) 系统。

您可以使用 CLI 为 localnet 网络拓扑创建二级集群范围的用户定义的网络(CUDN)。

先决条件

  • 以具有 cluster-admin 权限的用户身份登录集群。
  • 已安装 OpenShift CLI(oc)。
  • 已安装 Kubernetes NMState Operator。

流程

  1. 创建 NodeNetworkConfigurationPolicy 对象,将 OVN-Kubernetes 二级网络映射到 Open vSwitch (OVS)网桥:

    NodeNetworkConfigurationPolicy 清单示例

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
      name: mapping 
    1
    
    spec:
      nodeSelector:
        node-role.kubernetes.io/worker: '' 
    2
    
      desiredState:
        ovn:
          bridge-mappings:
          - localnet: localnet1 
    3
    
            bridge: br-ex 
    4
    
            state: present 
    5
    Copy to Clipboard Toggle word wrap

    1
    配置对象的名称。
    2
    指定应用节点网络配置策略的节点。推荐的节点选择器值为 node-role.kubernetes.io/worker: ''
    3
    流量转发到 OVS 网桥的额外网络的名称。此属性必须与定义 OVN-Kubernetes 额外网络的 ClusterUserDefinedNetwork 对象的 spec.network.localnet.physicalNetworkName 字段的值匹配。本例使用名称 localnet1
    4
    节点上的 OVS 网桥的名称。如果 state 属性 存在 或未指定,则需要这个值。
    5
    映射的状态。需要是 present 来添加映射,或 absent 来删除映射。默认值 存在
    重要

    OpenShift Virtualization 不支持 Linux 网桥绑定模式 0、5 和 6。如需更多信息,请参阅哪个绑定模式在与虚拟机客户机或容器连接的网桥一起使用时可以正常工作?

  2. 运行以下命令来应用 NodeNetworkConfigurationPolicy 清单:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

    其中:

    <filename>
    指定 NodeNetworkConfigurationPolicy 清单 YAML 文件的名称。
  3. 创建 ClusterUserDefinedNetwork 对象来创建 localnet 二级网络:

    ClusterUserDefinedNetwork 清单示例

    apiVersion: k8s.ovn.org/v1
    kind: ClusterUserDefinedNetwork
    metadata:
      name: cudn-localnet 
    1
    
    spec:
      namespaceSelector: 
    2
    
        matchExpressions: 
    3
    
        - key: kubernetes.io/metadata.name
          operator: In 
    4
    
          values: ["red", "blue"]
      network:
        topology: Localnet 
    5
    
        localnet:
            role: Secondary 
    6
    
            physicalNetworkName: localnet1 
    7
    
            ipam:
              mode: Disabled 
    8
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ClusterUserDefinedNetwork 自定义资源的名称。
    2
    集群 UDN 应用到的命名空间集合。命名空间选择器不得指向以下值: default; openshift requirements 命名空间;或由 Cluster Network Operator (CNO)定义的任何全局命名空间。
    3
    选择器的类型。在本例中,matchExpressions 选择器选择具有标签 kubernetes.io/metadata.name 且值为 redblue 的对象。
    4
    operator 的类型。可能的值有 InNotInExists
    5
    网络的拓扑配置。Localnet 拓扑将逻辑网络连接到 下的物理网络。
    6
    指定 UDN 是 primary 或 secondary。topology 所需的值为 Secondary :Localnet
    7
    节点上配置的 OVN-Kubernetes 网桥映射的名称。这个值必须与之前创建的 NodeNetworkConfigurationPolicy 清单中的 spec.desiredState.ovn.bridge-mappings.localnet 字段匹配。这样可确保您桥接到物理网络的预期片段。
    8
    指定 IP 地址管理(IPAM)是启用或禁用的。所需的值为 Disabled。OpenShift Virtualization 不支持为虚拟机配置 IPAM。
  4. 运行以下命令来应用 ClusterUserDefinedNetwork 清单:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

    其中:

    <filename>
    指定 ClusterUserDefinedNetwork 清单 YAML 文件的名称。

您可以使用 CLI 创建命名空间以与现有二级集群范围用户定义的网络(CUDN)一起使用。

先决条件

  • 以具有 cluster-admin 权限的用户身份登录集群。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 创建一个类似以下示例的 Namespace 对象:

    Namespace 清单示例

    apiVersion: v1
    kind: Namespace
    metadata:
      name: red
    # ...
    Copy to Clipboard Toggle word wrap

  2. 运行以下命令来应用 Namespace 清单:

    oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

    其中:

    <filename>
    指定 Namespace 清单 YAML 文件的名称。

您可以通过配置接口绑定将虚拟机(VM)连接到多个二级集群范围用户定义的网络(CUDN)。

先决条件

  • 已安装 OpenShift CLI(oc)。

流程

  1. 编辑 VirtualMachine 清单以添加 CUDN 接口详情,如下例所示:

    VirtualMachine 清单示例

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: example-vm
      namespace: red 
    1
    
    spec:
      template:
        spec:
          domain:
            devices:
              interfaces:
                - name: secondary_localnet 
    2
    
                  bridge: {}
            machine:
              type: ""
            resources:
              requests:
                memory: 2048M
          networks:
          - name: secondary_localnet 
    3
    
            multus:
              networkName: <localnet_cudn_name> 
    4
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    虚拟机所在的命名空间。这个值必须与与二级 CUDN 关联的命名空间匹配。
    2
    二级用户定义的网络接口的名称。
    3
    网络的名称。这必须与 spec.template.spec.domain.devices.interfaces.name 字段的值匹配。
    4
    之前创建的 localnet ClusterUserDefinedNetwork 对象的名称。
  2. 运行以下命令来应用 VirtualMachine 清单:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

    其中:

    <filename>
    指定 VirtualMachine 清单 YAML 文件的名称。
注意

当使用 OSA 卡在 IBM Z® 上运行 OpenShift Virtualization 时,请注意 OSA 卡仅将网络流量转发到使用 OSA 设备注册的设备。因此,任何用于未注册的设备的流量都不会转发。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat