跳至主要内容

VM 移轉網路

VM 移轉網路 (VM migration network) 適用於將移轉流量從 mgmt 上的叢集流量和其他全叢集工作負載中隔離出來。使用 VM 移轉網路可獲得更好的網路頻寬與效能。

備註

請避免直接設定 KubeVirt 設定,因為這可能會導致非預期或不想要的系統行為。

先決條件​

在開始設定 VM 移轉網路之前,請確保滿足以下要求:

  • 網路交換器已正確設定,並已指派專用的 VLAN ID 給 VM 移轉網路。

  • 叢集網路 (Cluster network) 和 VLAN 網路 已正確設定。請確保這兩個網路涵蓋所有節點且可存取。

  • 沒有正在進行移轉的虛擬機器。

  • VM 移轉網路的 IP 範圍需使用 IPv4 CIDR 格式,且不得與 Kubernetes 叢集網路衝突或重疊。以下為保留位址:10.42.0.0/16、10.43.0.0/16、10.52.0.0/16 和 10.53.0.0/16。

vm-migration-network 設定​

vm-migration-network 設定允許您在需要隔離時,設定用於隔離叢集內 VM 移轉流量的網路。

您可以使用 UI 或 CLI 啟用 和 停用 VM 移轉網路。啟用此設定時,您必須透過設定特定欄位來建構 Multus NetworkAttachmentDefinition CRD。

提示

強烈建議使用 Harvester UI 來配置 vm-migration-network 設定。

啟用 VM 移轉網路​

  1. 前往 Advanced > Settings > vm-migration-network。

  2. 選擇 Enabled。

  3. 設定 VLAN ID、Cluster Network、IP Range 和 Exclude 欄位以建構 Multus NetworkAttachmentDefinition CRD。

  4. 點擊 Save。

vm-migration-network-enabled.png

停用 VM 移轉網路​

  1. 前往 Advanced > Settings > vm-migration-network。

  2. 選擇 Disabled。

  3. 點擊 Save。

一旦 VM 移轉網路被停用,KubeVirt 將開始使用 mgmt 進行 VM 移轉相關的操作。

vm-migration-network-disabled.png

一旦套用 vm-migration-network 設定,將發生以下情況:

  • Harvester 會建立一個新的 NetworkAttachmentDefinition 並更新 KubeVirt 設定。
  • KubeVirt 會重新啟動所有 virt-handler Pod 以套用新的網路設定。

設定後步驟 (Post-Configuration Steps)​

  1. 使用以下指令驗證設定的狀態是否為 True 且類型為 configured:

    kubectl get settings.harvesterhci.io vm-migration-network -o yaml

    範例:

    apiVersion: harvesterhci.io/v1beta1
    kind: Setting
    metadata:
    annotations:
    vm-migration-network.settings.harvesterhci.io/hash: ec8322fb6b741f94739cbb904fc73c3fda864d6d
    vm-migration-network.settings.harvesterhci.io/net-attach-def: harvester-system/vm-migration-network-6flk7
    creationTimestamp: "2025-06-13T06:36:39Z"
    generation: 51
    name: vm-migration--network
    resourceVersion: "154638"
    uid: 2233ad63-ee52-45f6-a79c-147e48fc88db
    status:
    conditions:
    - lastUpdateTime: "2025-06-13T13:05:17Z"
    reason: Completed
    status: "True"
    type: configured
  2. 驗證所有 KubeVirt virt-handler Pod 是否已就緒,且其網路已正確設定。

    您可以使用以下指令檢查 Pod 詳細資訊:

    kubectl -n harvester-system describe pod <pod-name>
  3. 檢查 k8s.v1.cni.cncf.io/network-status 註解並驗證是否存在名為 migration0 的介面。此介面的 IP 位址必須位於指定的 IP 範圍內。

    您可以使用以下指令取得 virt-handler Pod 的清單:

    kubectl get pods -n harvester-system -l kubevirt.io=virt-handler -o yaml

    範例:

    apiVersion: v1
    kind: Pod
    metadata:
    annotations:
    cni.projectcalico.org/containerID: 004522bc8468ea707038b43813cce2fba144f0e97551d2d358808d57caf7b543
    cni.projectcalico.org/podIP: 10.52.2.122/32
    cni.projectcalico.org/podIPs: 10.52.2.122/32
    k8s.v1.cni.cncf.io/network-status: |-
    [{
    "name": "k8s-pod-network",
    "ips": [
    "10.52.2.122"
    ],
    "default": true,
    "dns": {}
    },{
    "name": "harvester-system/vm-migration-network-6flk7",
    "interface": "migration0",
    "ips": [
    "10.1.2.1"
    ],
    "mac": "c6:30:6f:02:52:3e",
    "dns": {}
    }]
    k8s.v1.cni.cncf.io/networks: vm-migration-network-6flk7@migration0
    Omitted...

最佳實務​

  • 在為 VM 移轉網路設定 IP 範圍 時,請確保分配的 IP 位址能夠滿足叢集的未來需求。這一點很重要,因為當 VM 移轉網路設定完成後,若新增節點至叢集,且所需 IP 數量超過已分配的 IP 時,KubeVirt Pod (virt-handler) 將停止運作。解決此問題需要使用正確的 IP 範圍重新配置 VM 移轉網路。

  • 將 VM 移轉網路設定在非 mgmt 的叢集網路上,以確保 VM 移轉流量與 Kubernetes 控制平面流量完全隔離。使用 mgmt 是可能的,但不建議,因為會對控制平面網路效能產生負面影響(資源和頻寬爭用)。僅在您的叢集有 NIC 相關限制且無法完全隔離流量時才使用 mgmt。