Harvester 网络

Harvester 构建在 Kubernetes 之上,并使用其内置的 CNI 机制来提供网络提供商与虚拟机网络之间的接口。

我们已经实现了基于 bridge CNI 的 Harvester VLAN 网络,以提供纯 L2 模式网络,从而将你的虚拟机桥接到主机网络接口,并且可以使用物理交换机连接内部和外部网络通信。

此外,Harvester UI 集成了 harvester-network-controller 以提供用户友好的 VLAN 网络配置,例如,创建和管理 VLAN 网络或将 VLAN 网络添加到虚拟机。

目前,Harvester 支持两种类型的网络:

管理网络

Harvester 使用 canal 作为默认管理网络。它是一个内置网络,可以直接从集群中使用。 默认情况下,虚拟机的管理网络 IP 只能在集群节点内访问,虚拟机重启后管理网络 IP 会改变。这是需要注意的非典型行为,因为一般我们会认为 VM IP 在重启后会保持不变。

但是,用户可以利用 Kubernetes 服务对象 为你的虚拟机与管理网络创建一个稳定的 IP。

VLAN 网络

Harvester network-controller 利用 multusbridge CNI 插件来实现它自定义的 L2 桥接 VLAN 网络。这有助于将你的虚拟机连接到主机网络接口,并且可以使用物理交换机从内部和外部网络进行访问。

下图说明了 VLAN 网络在 Harvester 中的工作方式:

Harvester 网络 - 图1

  • Harvester network-controller 为每个节点创建一个桥接器,并为每个虚拟机创建一对 veth 来实现 VLAN 网络。网桥充当交换机,转发来自或发往虚拟机的网络流量,而一对 veth 则充当虚拟机和交换机之间的连接端口。
  • 同一 VLAN 内的虚拟机能够相互通信,而不同 VLAN 内的虚拟机则不能。
  • 与主机或其他设备(如 DHCP 服务器)连接的外部交换机端口应设置为中继或混合类型,并允许指定的 VLAN。
  • 用户可以使用带有 PVID(默认为 1)的 VLAN 来与任何正常的无标记流量进行通信。

启用默认 VLAN 网络

你可以前往设置 > vlan 来启用 VLAN 网络。选择启用后,你将能够从节点中选择一个网络接口作为默认的 VLAN 网卡配置。

为了获得更好的网络性能和实现隔离,我们建议为 VLAN 和管理网络(即 harvester-mgmt)选择不同的网络接口。

Harvester 网络 - 图2

Harvester 网络 - 图3备注

  • 选择网络接口时,括号中的数值代表网络接口在所有主机上的分布百分比。如果选择了小于 100% 的网络接口,需要在 VLAN 网络配置失败的主机上手动指定网络接口。
  • 修改默认 VLAN 网络设置不会更新现有的主机网络配置。
  • Harvester VLAN 网络支持绑定接口。目前只能通过 PXE 引导配置自动创建。你也可以登录到节点并进行手动创建。

你还可以通过 Hosts > Network 选项卡自定义每个节点的 VLAN 网络:

Harvester 网络 - 图4

创建 VLAN 网络

你可以前往 Advanced > Networks 页面,并单击 Create 按钮来创建新的 VLAN 网络。

  1. 设置 VLAN 网络的名称和 VLAN ID (你可以在 Rancher 多租户支持的不同命名空间上指定相同的 VLAN ID)。

create-vlan-network.png

  1. 配置路由以允许主机使用 IPv4 地址连接到 VLAN 网络。VLAN 网络的 CIDR 和网关是路由配置的必备参数。你可以选择以下选项之一来配置路由:
    • auto(DHCP):Harvester 网络控制器将使用 DHCP 协议从 DHCP 服务器获取 CIDR 和网关值。你也可以指定 DHCP 服务器地址。 Harvester 网络 - 图6
    • Manual:你需要自行指定 CIDR 和网关值。 Harvester 网络 - 图7

使用 VLAN 网络创建虚拟机

现在,你可以使用上面配置的 VLAN 网络创建一个新的虚拟机:

  • 单击 Virtual Machines 页面上的 Create 按钮。
  • 输入所需参数并单击 Networks 选项卡。
  • 将默认网络配置为 VLAN 网络,或选择要添加的其他网络。

Harvester 网络 - 图8

Harvester 网络 - 图9备注

  • 默认情况下仅启用第一个网卡。你可以选择使用管理网络或 VLAN 网络。
  • 你需要小心配置具有多个 NIC 的虚拟机以避免连接问题。详情请参阅知识库
  • 你需要在 Advanced Options 选项卡中选择 Install guest agent,以便从 Harvester UI 获取 VLAN 网络 IP 地址。

  • 你可以选择添加一个或多个网卡。默认情况下,可以通过 cloud-init 网络数据设置来启用其他网卡。例如:

  1. version: 1
  2. config:
  3. - type: physical
  4. name: enp1s0 # name is varies upon OS image
  5. subnets:
  6. - type: dhcp
  7. - type: physical
  8. name: enp2s0
  9. subnets:
  10. - type: static
  11. address: 10.0.0.100/24 # IP 地址因环境而异

Harvester 与 cloud-init 网络配置完全兼容。你可以参考文档了解更多详情。

Harvester 网络 - 图10备注

如果在 VM 启动后添加额外的 NIC,则需要手动为额外的 NIC 配置 IP。

在网络上配置 DHCP 服务器

默认情况下,Harvester VLAN 网络需要你的路由器提供一个 DHCP 服务器,虚拟机可以自动请求和分配 IP 地址。

如果你在不包含 DHCP 服务器的虚拟环境中运行 Harvester,你可以考虑在节点上手动部署 DHCP 服务器或使用容器化方法,详情请参见 issue #947