11.10. 将虚拟机连接到 OVN-Kubernetes 第 2 层二级网络


您可以使用 CLI 将虚拟机(VM)连接到 OVN-Kubernetes 层2 二级网络。

layer2 拓扑通过集群范围的逻辑交换机连接工作负载。OVN-Kubernetes Container Network Interface (CNI) 插件使用 Geneve (Generic Network Virtualization Encapsulation) 协议在节点间创建覆盖网络。您可以使用此覆盖网络在不同的节点上连接虚拟机,而无需配置任何其他物理网络基础架构。

注意

OVN-Kubernetes 二级网络与 多网络策略 API 兼容,它提供 MultiNetworkPolicy 自定义资源定义(CRD)来控制进出虚拟机的流量流。您必须使用 ipBlock 属性为特定 CIDR 块定义网络策略入口和出口规则。您不能将 pod 或命名空间选择器用于虚拟化工作负载。

要配置 OVN-Kubernetes layer2 二级网络,并将虚拟机附加到该网络,请执行以下步骤:

11.10.1. 创建 OVN-Kubernetes 第 2 层 NAD

您可以使用 OpenShift Container Platform Web 控制台或 CLI 为第 2 层网络拓扑创建 OVN-Kubernetes 网络附加定义(NAD)。

注意

不支持在虚拟机的网络附加定义中指定 spec.config.ipam.subnet 属性来配置 IP 地址管理(IPAM)。

11.10.1.1. 使用 CLI 为第 2 层拓扑创建 NAD

您可以创建一个网络附加定义(NAD),它描述了如何将 pod 附加到第 2 层覆盖网络。

先决条件

  • 您可以使用具有 cluster-admin 权限的用户访问集群。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 创建 NetworkAttachmentDefinition 对象:

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      name: l2-network
      namespace: my-namespace
    spec:
      config: |-
        {
                "cniVersion": "0.3.1", 
    1
    
                "name": "my-namespace-l2-network", 
    2
    
                "type": "ovn-k8s-cni-overlay", 
    3
    
                "topology":"layer2", 
    4
    
                "mtu": 1400, 
    5
    
                "netAttachDefName": "my-namespace/l2-network" 
    6
    
        }
    Copy to Clipboard Toggle word wrap
    1
    Container Network Interface (CNI)规格版本。所需的值为 0.3.1
    2
    网络的名称。此属性不是命名空间。例如,您可以有一个名为 l2-network 的网络,该网络从两个不同的命名空间中存在的两个不同的 NetworkAttachmentDefinition 对象引用。此功能可用于连接不同命名空间中的虚拟机。
    3
    CNI 插件的名称。所需的值为 ovn-k8s-cni-overlay
    4
    网络的拓扑配置。所需的值为 layer2
    5
    可选:最大传输单元 (MTU) 值。如果没有设置值,Cluster Network Operator (CNO)通过计算主网络接口中的 underlay MTU 的不同来设置默认的 MTU 值,如 pod 网络的 overlay MTU,如 Geneve (Generic Network Virtualization Encapsulation),以及任何启用的功能(如 IPsec)的字节容量。
    6
    NetworkAttachmentDefinition 对象的 metadata 小节中的 namespacename 字段的值。
    注意

    前面的示例配置了一个集群范围的覆盖,但没有定义子网。这意味着实现网络的逻辑交换机仅提供第 2 层通信。您必须在创建虚拟机时配置 IP 地址,方法是设置静态 IP 地址,或在网络上为动态 IP 地址部署 DHCP 服务器。

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

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

11.10.1.2. 使用 Web 控制台为第 2 层拓扑创建 NAD

您可以创建一个网络附加定义 (NAD) 来描述如何将 pod 附加到第 2 层覆盖网络。

先决条件

  • 您可以使用具有 cluster-admin 权限的用户访问集群。

流程

  1. 在 web 控制台中进入 Networking NetworkAttachmentDefinition
  2. Create Network Attachment Definition。网络附加定义必须与 pod 或虚拟机位于同一个命名空间中。
  3. 输入唯一 Name 和可选 Description
  4. Network Type 列表中选择 OVN Kubernetes L2 overlay 网络
  5. Create

您可以使用 OpenShift Container Platform web 控制台或 CLI 将虚拟机(VM)附加到 OVN-Kubernetes 第 2 层二级网络接口。

您可以通过在虚拟机配置中包含网络详情,将虚拟机 (VM) 连接到 OVN-Kubernetes 二级网络。

先决条件

  • 您可以使用具有 cluster-admin 权限的用户访问集群。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 编辑 VirtualMachine 清单以添加 OVN-Kubernetes 二级网络接口详情,如下例所示:

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm-server
    spec:
      runStrategy: Always
      template:
        spec:
          domain:
            devices:
              interfaces:
              - name: secondary 
    1
    
                bridge: {}
            resources:
              requests:
                memory: 1024Mi
          networks:
          - name: secondary  
    2
    
            multus:
              networkName: <nad_name> 
    3
    
          nodeSelector:
            node-role.kubernetes.io/worker: '' 
    4
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    OVN-Kubernetes 二级接口的名称。
    2
    网络的名称。这必须与 spec.template.spec.domain.devices.interfaces.name 字段的值匹配。
    3
    NetworkAttachmentDefinition 对象的名称。
    4
    指定可在其上调度虚拟机的节点。推荐的节点选择器值为 node-role.kubernetes.io/worker: ''
  2. 应用 VirtualMachine 清单:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap
  3. 可选:如果编辑了正在运行的虚拟机,您必须重启它才能使更改生效。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat