8.7. 将虚拟机连接到 OVN-Kubernetes 二级网络


您可以将虚拟机 (VM) 连接到 Open Virtual Network (OVN)-Kubernetes 二级网络。OVN-Kubernetes Container Network Interface (CNI) 插件使用 Geneve (Generic Network Virtualization Encapsulation) 协议在节点间创建覆盖网络。

OpenShift Virtualization 目前支持扁平第 2 层拓扑。这个拓扑通过集群范围的逻辑交换机连接工作负载。您可以使用此覆盖网络在不同的节点上连接虚拟机,而无需配置任何其他物理网络基础架构。

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

  1. 使用 Web 控制台或 CLI 创建网络附加定义(NAD)。
  2. 使用 Web 控制台或 CLI 将有关二级网络接口的信息添加到虚拟机规格中。

8.7.1. 创建 OVN-Kubernetes NAD

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

注意

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

8.7.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: |2
        {
                "cniVersion": "0.3.1", 1
                "name": "my-namespace-l2-network", 2
                "type": "ovn-k8s-cni-overlay", 3
                "topology":"layer2", 4
                "mtu": 1300, 5
                "netAttachDefName": "my-namespace/l2-network" 6
        }
    1
    CNI 规格版本。所需的值为 0.3.1
    2
    网络的名称。此属性不是命名空间。例如,您可以有一个名为 l2-network 的网络,该网络从两个不同的命名空间中存在的两个不同的 NetworkAttachmentDefinition 对象引用。此功能可用于连接不同命名空间中的虚拟机。
    3
    要配置的 CNI 插件的名称。所需的值为 ovn-k8s-cni-overlay
    4
    网络的拓扑配置。所需的值为 layer2
    5
    可选:最大传输单元 (MTU) 值。默认值由内核自动设置。
    6
    NetworkAttachmentDefinition 对象的 metadata 小节中的 namespacename 字段的值。
    注意

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

  2. 应用清单:

    $ oc apply -f <filename>.yaml

8.7.2. 将虚拟机附加到 OVN-Kubernetes 二级网络

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

8.7.2.1. 使用 CLI 将虚拟机附加到 OVN-Kubernetes 二级网络

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

先决条件

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

流程

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

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm-server
    spec:
      running: true
      template:
        spec:
          domain:
            devices:
              interfaces:
              - name: default
                masquerade: {}
              - name: secondary 1
                bridge: {}
            resources:
              requests:
                memory: 1024Mi
          networks:
          - name: default
            pod: {}
          - name: secondary  2
            multus:
              networkName: l2-network 3
    # ...
    1
    OVN-Kubernetes 二级接口的名称。
    2
    网络的名称。这必须与 spec.template.spec.domain.devices.interfaces.name 字段的值匹配。
    3
    NetworkAttachmentDefinition 对象的名称。
  2. 应用 VirtualMachine 清单:

    $ oc apply -f <filename>.yaml
  3. 可选:如果编辑了正在运行的虚拟机,您必须重启它才能使更改生效。

8.7.3. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.