×

您可以将虚拟机 (VM) 连接到开放虚拟网络 (OVN)-Kubernetes 二级网络。OpenShift Virtualization 支持 OVN-Kubernetes 的layer2 拓扑。

layer2 拓扑通过集群范围的逻辑交换机连接工作负载。OVN-Kubernetes 容器网络接口 (CNI) 插件使用 Geneve(通用网络虚拟化封装)协议在节点之间创建覆盖网络。您可以使用此覆盖网络连接不同节点上的虚拟机,无需配置任何额外的物理网络基础设施。

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

  1. 配置 OVN-Kubernetes 二级网络,方法是创建网络附件定义 (NAD)。

  2. 将虚拟机连接到 OVN-Kubernetes 二级网络,方法是将网络详细信息添加到虚拟机规范。

创建 OVN-Kubernetes NAD

您可以使用 Red Hat OpenShift Service on AWS Web 控制台或 CLI 创建 OVN-Kubernetes 网络附件定义 (NAD)。

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

使用 CLI 创建用于二层拓扑的 NAD

您可以创建一个网络附件定义 (NAD),描述如何将 Pod 连接到二层覆盖网络。

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

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

  2. 应用清单

    $ oc apply -f <filename>.yaml

使用 Web 控制台创建用于二层拓扑的 NAD

您可以创建一个网络附件定义 (NAD),描述如何将 Pod 连接到二层覆盖网络。

先决条件
  • 您可以作为具有cluster-admin 权限的用户访问集群。

步骤
  1. 在 Web 控制台中转到**网络** → **NetworkAttachmentDefinitions**。

  2. 单击**创建网络附件定义**。网络附件定义必须与使用它的 Pod 或虚拟机位于相同的命名空间。

  3. 输入唯一的**名称**和可选的**描述**。

  4. 从**网络类型**列表中选择**OVN Kubernetes L2 覆盖网络**。

  5. 单击**创建**。

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

您可以使用 Red Hat OpenShift Service on AWS Web 控制台或 CLI 将虚拟机 (VM) 连接到 OVN-Kubernetes 二级网络接口。

使用 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: secondary (1)
                bridge: {}
            resources:
              requests:
                memory: 1024Mi
          networks:
          - name: secondary  (2)
            multus:
              networkName: <nad_name> (3)
          nodeSelector:
            node-role.kubernetes.io/worker: '' (4)
    # ...
    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
  3. 可选:如果您编辑了正在运行的虚拟机,则必须重新启动它才能使更改生效。