跳至主要内容

Harvester 網路深入探討

網路拓撲​

以下網路拓撲圖揭示了我們如何實現 Harvester 網路。

此圖包含內建叢集網路 mgmt 以及一個名為 oob 的自訂叢集網路。

如上所示,Harvester 網路主要專注於 OSI 模型的第 2 層。我們利用 Linux 網路裝置和協定來建構流量路徑,以實現 VM 與 VM、VM 與主機,以及 VM 與外部網路裝置之間的通訊。

Harvester 網路由三個層級組成,包括:

  • KubeVirt 網路層

  • Harvester 網路層

  • 外部網路層

KubeVirt 網路​

KubeVirt 的主要目的是在 Kubernetes Pod 內執行 VM。KubeVirt 網路建構了 Pod 與 VM 之間的網路路徑。 更多詳細資訊請參閱 KubeVirt 官方文件。

Harvester 網路​

Harvester 網路旨在建構 Pod 與主機網路之間的網路路徑。它實現了管理網路、VLAN 網路和無標籤網路。我們可以將後兩種網路稱為橋接網路,因為橋接器在其實現中扮演著至關重要的角色。

橋接網路​

我們利用 multus CNI 和 bridge CNI 來實現橋接網路。

  1. Multus CNI 是一個 Kubernetes 容器網路介面(CNI)外掛程式,可以將多個網路介面附加到一個 Pod。此功能允許 VM 擁有一個用於管理網路的 NIC 和多個用於橋接網路的 NIC。

  2. 使用 bridge CNI,VM Pod 將被插入到 Network Attachment Definition 設定中指定的 L2 橋接器。

    # 範例 1
    {
    "cniVersion": "0.3.1",
    "name": "vlan100",
    "type": "bridge",
    "bridge": "mgmt-br",
    "promiscMode": true,
    "vlan": 100,
    }
    # 範例 2
    {
    "cniVersion": "0.3.1",
    "name": "untagged-network",
    "type": "bridge",
    "bridge": "oob-br",
    "promiscMode": true,
    "ipam": {}
    }

    範例 1 是典型的 VLAN 設定,VLAN ID 為 100,而範例 2 是無標籤網路設定,沒有 VLAN ID。使用範例 1 設定的 VM Pod 將被插入到橋接器 mgmt-br,而使用範例 2 的 VM Pod 將被插入到橋接器 oob-br。

  3. 為了實現高可用性和容錯能力,會建立一個綁定實際 NIC 的 bond 裝置作為橋接器的上行鏈路。預設情況下,此 bond 裝置將允許目標標籤流量/封包通過。

    harvester-0:/home/rancher # bridge -c vlan show dev oob-bo
    port vlan ids
    oob-bo 1 PVID Egress Untagged
    100
    200

    上述範例顯示 bond oob-bo 允許標籤為 1、100 或 200 的封包通過。

管理網路​

管理網路基於 Canal。

值得一提的是,Harvester 設定節點 IP 的 Canal 介面是橋接器 mgmt-br 或 mgmt-br 的 VLAN 子介面。此設計有兩個好處:

  • 內建的 mgmt 叢集網路同時支援管理網路和橋接網路。
  • 透過 VLAN 網路介面,我們可以為管理網路指定 VLAN ID。

作為 mgmt 叢集網路的組件,不允許刪除或修改橋接器 mgmt-br、bond mgmt-bo 和 VLAN 裝置。

外部網路​

外部網路裝置通常指交換器和 DHCP 伺服器。透過叢集網路,我們可以將主機 NIC 分組並連接到不同的交換器以實現流量隔離。以下是一些使用說明。

  • 若要允許標籤封包通過,您需要將外部交換器或其他裝置(例如 DHCP 伺服器)的連接埠類型設定為 trunk 或 hybrid 模式,並允許指定的 VLAN 標籤。

  • 您需要根據對等主機的 bond 模式在交換器上設定鏈路聚合。鏈路聚合可以在手動模式或 LACP 模式下運作。以下列出 bond 模式與鏈路聚合模式之間的對應關係。

    Bond 模式鏈路聚合模式
    mode 0(balance-rr)手動
    mode 1(active-backup)無
    mode 2(balance-xor)手動
    mode 3(broadcast)手動
    mode 4(802.3ad)LACP
    mode 5(balance-tlb)無
    mode 6(balance-alb)無
  • 如果您希望 VLAN 中的 VM 能夠透過 DHCP 協定取得 IP 位址,請在 DHCP 伺服器中為該 VLAN 設定 IP 位址池。