跳至主要内容

VM 網路

Harvester 為虛擬機器(VM)提供三種類型的網路,包括:

  • 管理網路
  • VLAN 網路
  • 無標籤網路

管理網路通常用於流量僅在叢集內部流動的 VM。如果您的 VM 需要連接到外部網路,請使用 VLAN 網路或無標籤網路。

自 v1.0.1 起可用

Harvester 還引入了儲存網路,以將儲存流量與其他叢集範圍的工作負載分離。更多詳細資訊請參閱儲存網路文件。

管理網路​

Harvester 使用 Canal 作為其預設管理網路。它是一個內建網路,可以直接從叢集中使用。

預設情況下,VM 的管理網路 IP 只能在叢集節點內存取,且管理網路 IP 會在 VM 重新開機後改變。這是需要注意的非典型行為,因為通常預期 VM IP 在重新開機後應保持不變。

但是,您可以利用 Kubernetes 服務物件為使用管理網路的 VM 建立穩定的 IP。

如何使用管理網路​

由於管理網路是內建的,不需要額外操作,您可以在設定 VM 網路時直接新增它。

important

如果您在安裝期間未在 install.management_interface 設定中指定 0 或 1500 以外的值,mgmt 將使用預設 MTU 值 1500。但是,連接到 mgmt 的虛擬機器網路介面的 MTU 值為 1450。這是因為 Harvester 使用 Calico 和 Flannel CNI 來承載叢集內的覆蓋網路,每個封包有 50 位元組的開銷。

如果您的任何工作負載涉及網路流量傳輸,您必須為受影響的 VM 網路介面和橋接器指定適當的 MTU 值。

VLAN 網路​

Harvester network-controller 利用 multus 和 bridge CNI 外掛程式來實現其自訂的 L2 橋接 VLAN 網路。它有助於將您的 VM 連接到主機網路介面,並可透過實體交換器從內部和外部網路存取。

建立 VM 網路​

  1. 前往 Networks > VM Networks。

  2. 選擇 Create。

  3. 設定以下項目:

    • Namespace(命名空間)
    • Name(名稱)
    • Description(描述,選填)
  4. 在 Basics 標籤頁上,設定以下項目:

    • Type(類型):選擇 L2VlanNetwork。
    • Vlan ID
    • Cluster Network(叢集網路)

備註

虛擬機器網路從關聯叢集網路的網路設定繼承 MTU。這確保虛擬機器能夠獲得最佳的硬體效能。您無法為虛擬機器網路設定不同的 MTU。

當您變更叢集網路上行鏈路的實體 NIC 的 MTU 時,新建立的虛擬機器網路會自動繼承新的 MTU。現有的虛擬機器網路也會自動更新。更多資訊請參閱變更附加儲存網路的網路設定的 MTU 和變更未附加儲存網路的網路設定的 MTU。

Harvester webhook 不允許您直接變更 VM 網路上的 MTU。

  1. 在 Route 標籤頁上,選擇一個選項,然後指定相關的 IPv4 位址。

    • Auto(DHCP):Harvester 網路控制器從 DHCP 伺服器擷取 CIDR 和閘道位址。您可以指定 DHCP 伺服器位址。

    • Manual(手動):指定 CIDR 和閘道位址。

    important

    Harvester 使用這些資訊來驗證所有節點是否都能存取您正在建立的 VM 網路。如果可以,VM Networks 畫面上的 Network connectivity 欄位會顯示網路為啟用狀態。否則,畫面會顯示發生錯誤。

使用 VLAN 網路建立 VM​

您現在可以使用上述設定的 VLAN 網路建立新的 VM:

  • 在 Virtual Machines 頁面上點擊 Create 按鈕。
  • 指定必要的參數,然後點擊 Networks 標籤頁。
  • 將預設網路設定為 VLAN 網路,或選擇要新增的額外網路。

無標籤網路​

眾所周知,VLAN 網路下的流量具有 VLAN ID 標籤,我們可以使用帶有 PVID(預設為 1)的 VLAN 網路與任何正常的無標籤流量進行通訊。但是,某些網路裝置可能不預期接收與上行鏈路所屬交換器上的原生 VLAN 相符的明確標籤 VLAN ID。這就是我們提供無標籤網路的原因。

如何使用無標籤網路​

無標籤網路的使用方式與 VLAN 網路類似。

若要建立新的無標籤網路,請前往 Networks > VM Networks 頁面並點擊 Create 按鈕。您必須指定名稱、選擇類型 Untagged Network 並選擇叢集網路。

備註

從 Harvester v1.1.2 開始,Harvester 支援更新和刪除 VM 網路。在更新或刪除 VM 網路之前,請確保停止所有受影響的 VM。

覆蓋網路(實驗性功能)​

自 v1.6.0 起可用

Harvester network-controller 利用 Kube-OVN 建立基於 OVN 的虛擬化網路,支援進階 SDN 功能,例如用於虛擬機器工作負載的虛擬私有雲(VPC)和子網路。

覆蓋網路代表一個虛擬的第 2 層交換器,用於封裝和轉發虛擬機器之間的流量。此網路可以連結到 VPC 中建立的子網路,使虛擬機器能夠存取內部虛擬化網路,並可到達外部網路。但是,由於目前 VPC 的限制,這些虛擬機器無法被外部網路(如 VLAN 和無標籤網路)存取。

建立覆蓋網路​

  1. 前往 Networks > Virtual Machine Networks,然後點擊 Create。

  2. 在 Virtual Machine Network:Create 畫面上,為網路指定名稱。

  3. 在 Basics 標籤頁上,選擇 OverlayNetwork 作為網路類型。

  4. 點擊 Create。

限制​

Harvester v1.6 中的覆蓋網路實作有以下限制:

  • 由 Kube-OVN 支援的覆蓋網路只能在 mgmt(內建管理網路)上建立。

  • 預設情況下,enableDHCP 和 dhcpV4Options 設定未設定,因此連接到 Kube-OVN 覆蓋子網路的虛擬機器上不存在預設路由。在客體作業系統上正確設定預設路由之前,嘗試存取外部目的地將會失敗。您可以執行以下任一解決方法:

    • 手動將子網路的閘道 IP 新增為虛擬機器的預設路由。

    • 使用 managedTap 繫結:編輯附加子網路的 YAML 設定,並驗證欄位 .spec.enableDHCP 設定為 true。接下來,編輯虛擬機器的 YAML 設定,並修改介面定義以使用繫結。

            interfaces:
      - binding:
      name: managedtap
      model: virtio
      name: default
  • Kube-OVN「原生」負載平衡器(LB)尚未整合,因為這需要對上游程式碼庫進行根本性變更。Kube-OVN 目前作為每個叢集的主要 CNI 外掛程式運作。

  • Underlay 網路仍然不可用。因此,您無法直接將子網路對應到實體網路,外部主機也無法到達位於覆蓋子網路上的虛擬機器。

  • 在所有子網路中(無論是預設還是自訂 VPC),natOutgoing 欄位預設設定為 false。只有屬於預設 VPC 的子網路在您將值變更為 true 並設定預設路由後才能存取網際網路。在沒有 VpcNatGateway 支援的情況下,在自訂 VPC 中建立的子網路無法存取網際網路。

  • cloud-init 中的靜態 IP 對於覆蓋 NIC 似乎會被忽略。實際上,靜態 IP 只有在與 Kube-OVN 為虛擬機器保留的確切位址相符時才有效。任何其他值都會中斷連線。

  • 當附加多個 NIC 且覆蓋 NIC 不是主要介面時,您必須在客體作業系統內手動初始化覆蓋 NIC(IP link setup),並執行 DHCP 用戶端(dhclient)命令以取得 NIC 的 IP 位址。

  • 對等連線僅在自訂 VPC 之間有效。嘗試在預設 VPC 和自訂 VPC 之間建立對等連線將會失敗。

  • 由 Harvester Load Balancer 提供的虛擬機器負載平衡器與 Kube-OVN 覆蓋網路不相容。您只能將這些負載平衡器與 VLAN 網路一起使用。

  • 由 Harvester Cloud Provider 和 Harvester Load Balancer 提供的叢集負載平衡器無法在 Kube-OVN 覆蓋網路上的客體叢集中正常運作。相容性問題由以下原因造成:

    • Pool IPAM:Kube-OVN 不知道負載平衡器的前端 IP 位址是從 Harvester Load Balancer 管理的池中分配的。這可能導致 IP 位址衝突。

    • DHCP IPAM:即使為 Kube-OVN 子網路啟用了 DHCP 服務,動態 IP 位址分配也無法運作。租約記錄由 Kube-OVN 在控制平面上管理。需要整合增強功能才能讓受影響的元件正常協同運作。

  • Rancher 整合(特別是使用 Harvester Node Driver 建立下游叢集)僅在預設 VPC 內的 Kube-OVN 覆蓋網路上運作。為確保成功建立叢集,您必須執行以下操作:

    • 為覆蓋網路啟用 DHCP 服務。您必須設定有效的預設閘道。

    • 在叢集佈建期間,手動更新底層虛擬機器規格,以調整下游叢集的 managedTap 繫結介面。