2.11. 将虚拟机附加到多个网络


容器原生虚拟化提供第 2 层网络功能,支持将虚拟机连接至多个网络。您可使用现有工作负载导入虚拟机,具体取决于对多个接口的访问权限。您还可配置 PXE 网络以便可通过网络启动机器。

首先,网络管理员配置 cnv-bridge 类型的 NetworkAttachmentDefinition。然后,用户可将 Pod、虚拟机实例和虚拟机附加到桥接网络。您可以从容器原生虚拟化 web 控制台创建引用桥接网络的 vNIC。

2.11.1. 容器原生虚拟化网络术语表

容器原生虚拟化使用自定义资源和插件提供高级联网功能。

以下是整个容器原生虚拟化文档中使用的术语:

Container Network Interface (CNI)
一个 Cloud Native Computing Foundation 项目,侧重容器网络连接。容器原生虚拟化使用 CNI 插件基于基本 Kubernetes 网络功能进行构建。
Multus
一个“meta”CNI 插件,支持多个 CNI 共存,以便 Pod 或虚拟机可使用其所需的接口。
自定义资源定义 (CRD)
一种 Kubernetes API 资源,用于定义自定义资源,或使用 CRD API 资源定义的对象。
NetworkAttachmentDefinition
一种由 Multus 项目引入的 CRD,用于向一个或多个网络附加 Pod、虚拟机和虚拟机实例。
预启动执行环境 (PXE)
一种接口,让管理员能够通过网络从服务器启动客户端机器。网络启动可用于为客户端远程加载操作系统和其他软件。

2.11.2. 将资源连接至桥接网络

作为网络管理员,您可配置 cnv-bridge 类型的 NetworkAttachmentDefinition,为 Pod 和虚拟机提供第 2 层网络。

先决条件

  • 容器原生虚拟化 2.0 或更新版本
  • 必须在每个节点上配置一个 Linux 网桥,并将其附加到正确的网络接口卡。
  • 如果使用 VLAN,则必须在网桥上启用 vlan_filtering
  • NIC 必须标记到所有相关 VLAN。

    • 例如:bridge vlan add dev bond0 vid 1-4095 master

流程

  1. 在任何本地目录中为 NetworkAttachmentDefinition 新建一个新文件。该文件必须具有以下内容,并修改以匹配您的配置:

    apiVersion: "k8s.cni.cncf.io/v1"
    kind: NetworkAttachmentDefinition
    metadata:
      name: a-bridge-network
      annotations:
        k8s.v1.cni.cncf.io/resourceName: bridge.network.kubevirt.io/br0 1
    spec:
      config: '{
        "cniVersion": "0.3.1",
        "plugins": [
          {
            "type": "cnv-bridge", 2
            "bridge": "br0", 3
            "ipam": {}
          },
          {
            "type": "tuning" 4
          }
        ]
      }'
    1
    如果添加此注解到 NetworkAttachmentDefinition,您的虚拟机实例将只在连接 br0 网桥的节点上运行。
    2
    为该 NetworkAttachmentDefinition 提供网络的 Container Network Interface (CNI) 插件的实际名称。不要更改此字段,除非要使用不同的 CNI。
    3
    如果该值不是 br0,则必须替换网桥的实际名称。
    4
    必需。MAC 池管理器可通过此项为连接分配唯一的 MAC 地址。
    $ oc create -f <resource_spec.yaml>
  2. 编辑要连接至桥接网络的虚拟机或虚拟机实例的配置文件:

    apiVersion: v1
    kind: VirtualMachine
    metadata:
      name: example-vm
      annotations:
        k8s.v1.cni.cncf.io/networks: a-bridge-network 1
    spec:
    ...
    1
    您必须替换来自 NetworkAttachmentDefinition 的实际 name 值。

    在本例中,NetworkAttachmentDefinition 和 Pod 位于同一个命名空间中。

    要指定不同的命名空间,请使用以下语法:

    ...
      annotations:
        k8s.v1.cni.cncf.io/networks: <namespace>/a-bridge-network
    ...
  3. 向资源应用配置文件:

    $ oc create -f <local/path/to/network-attachment-definition.yaml>
注意

在下一部分中定义 vNIC 时,请确保 NETWORK 值是来自您在上一部分中创建的 NetworkAttachmentDefinition 的桥接网络名称。

2.11.3. 为虚拟机创建 NIC

从 web 控制台创建并附加额外 NIC。

流程

  1. 在容器原生虚拟化控制台的正确项目中,点击 Workloads Virtual Machines
  2. 选择虚拟机模板。
  3. 点击 Network Interfaces 以显示已附加到虚拟机的 NIC。
  4. 点击 Create NIC 在列表中创建新插槽。
  5. 填写新 NIC 的 NAMENETWORKMAC ADDRESSBINDING METHOD
  6. 点击 按钮保存并附加 NIC 到虚拟机。

2.11.4. 网络字段

名称描述

Create NIC

为虚拟机创建新 NIC。

NIC NAME

NIC 的名称。

MAC ADDRESS

网络接口的 MAC 地址。如果未指定 MAC 地址,将为会话生成一个临时地址。

NETWORK CONFIGURATION

可用 NetworkAttachmentDefinition 对象列表。

BINDING METHOD

可用绑定方法列表。对于默认的 Pod 网络,masquerade 是唯一推荐的绑定方法。对于辅助网络,请使用 bridge 绑定方法。非默认网络不支持 masquerade 绑定方法。

PXE NIC

支持 PXE 的网络列表。只有在将 PXE 选为 Provision Source 时才会显示。

在虚拟机上安装可选 QEMU 客户机代理,以便主机可以显示附加网络相关信息。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.