為執行個體新增 Dynamic Network Interface

本頁說明如何將動態網路介面 (NIC) 新增至現有的 Compute Engine 執行個體。

如要瞭解如何建立新執行個體,請參閱建立具備多個網路介面的 VM

事前準備

將動態 NIC 新增至執行個體前,請先完成下列步驟:

新增 Dynamic NIC

以下各節說明如何將動態 NIC 新增至個別執行個體,或代管執行個體群組 (MIG) 中的執行個體。

新增動態 NIC 時,可能會出現傳播延遲。延遲時間通常只有幾秒,但極少數情況下可能長達一分鐘。

在執行個體中新增動態 NIC

本節說明如何將動態 NIC 新增至執行個體。

控制台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 按一下要新增動態 NIC 的執行個體名稱。

  3. 在執行個體詳細資料頁面中,按一下「編輯」

  4. 在「Dynamic Network Interfaces」(動態網路介面) 專區中,按一下「Add a Dynamic Network Interface」(新增動態網路介面),然後執行下列操作:

    1. 在「介面類型」欄位中,選取「VPC」

    2. 在「Parent network interface」(父項網路介面) 欄位中,選取要建立動態 NIC 的父項 vNIC。

    3. 在「VLAN ID」欄位中,輸入 Dynamic NIC 的 VLAN ID。

    4. 在「Network」(網路) 和「Subnetwork」(子網路) 中,選取要使用的網路和子網路。

    5. 為動態 NIC 選取下列其中一個 IP 堆疊類型選項:

      • IPv4 (單一堆疊)
      • IPv4 和 IPv6 (雙重堆疊)
      • IPv6 (單一堆疊)
    6. 如果是使用 IPv4 位址的動態 NIC,請按照下列步驟操作:

      1. 在「主要內部 IPv4 位址」部分,選取下列其中一個選項:

        • 臨時 (自動):自動指派新的臨時 IPv4 位址
        • 臨時 (自訂):手動指定新的臨時 IPv4 位址
        • 清單中保留的靜態內部 IPv4 位址
        • 預留靜態內部 IPv4 位址,預留並指派新的靜態內部 IPv4 位址
      2. 在「外部 IPv4 位址」部分,選取下列其中一個選項:

        • 臨時:指派新的臨時 IPv4 位址
        • 「無」:不指派外部 IPv4 位址
        • 清單中預留的靜態 IPv4 位址
        • 預留靜態外部 IP 位址,預留並指派新的靜態外部 IPv4 位址
      3. 您可以選擇將一或多個別名 IP 範圍指派給網路介面。如要指派別名 IP 範圍,請按照下列步驟操作:

        1. 在「別名 IP 範圍」中,按一下「新增 IP 範圍」
        2. 在「子網路範圍」中,選取要使用的子網路主要 IPv4 位址範圍或子網路次要 IPv4 位址範圍。
        3. 以 CIDR 標記法輸入「別名 IP 範圍」。 這個範圍必須是您選取子網路 IP 範圍的未使用範圍。

        如要進一步瞭解如何將別名 IP 範圍指派給 VM 網路介面,請參閱「設定別名 IP 範圍」。

    7. 如果是具有 IPv6 位址的動態 NIC,請根據所連子網路的存取權類型,設定內部或外部 IPv6 位址範圍。在「主要內部 IPv6 位址」或「外部 IPv6 位址」中,選取下列其中一項:

      • 臨時 (自動):自動指派新的臨時 IPv6 位址範圍
      • 臨時 (自訂):手動指定新的臨時 IPv6 位址範圍
      • 清單中預留的靜態 IPv6 位址範圍
      • 預留靜態內部 IPv6 位址預留靜態外部 IPv6 位址,預留及指派新的靜態 IPv6 位址範圍
    8. 如要完成編輯動態 NIC 的屬性,請按一下「Done」(完成)

  5. 如要儲存設定,請按一下「儲存」

gcloud

如要將動態 NIC 新增至現有執行個體,請使用 gcloud compute instances network-interfaces add 指令

gcloud compute instances network-interfaces add INSTANCE_NAME \
   --zone=ZONE \
   --vlan=VLAN_ID \
   --parent-nic-name=PARENT_VNIC_NAME \
   --network=NETWORK \
   --subnetwork=SUBNET

更改下列內容:

  • INSTANCE_NAME:要新增 Dynamic NIC 的執行個體名稱
  • ZONE:執行個體的可用區
  • VLAN_ID:動態 NIC 的 VLAN ID
  • PARENT_VNIC_NAME:父項 vNIC 的名稱,例如 nic0
  • NETWORK:動態 NIC 所附加的網路
  • SUBNET:動態 NIC 連接的子網路

或者,您也可以在更新執行個體屬性時,將動態 NIC 新增至執行個體。詳情請參閱「更新執行個體屬性」。

API

如要將動態 NIC 新增至現有執行個體,請使用 instances.addNetworkInterface 方法

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addNetworkInterface
{
  "subnetwork": "regions/REGION/subnetworks/SUBNET",
  "parentNicName": "PARENT_VNIC_NAME",
  "vlan": "VLAN_ID"
}

更改下列內容:

  • PROJECT_ID:包含執行個體的專案 ID
  • ZONE:包含執行個體的可用區
  • INSTANCE_NAME:要新增動態 NIC 的執行個體名稱
  • REGION:包含執行個體的區域
  • SUBNET:動態 NIC 連接的子網路
  • PARENT_VNIC_NAME:父項 vNIC 的名稱,例如 nic0
  • VLAN_ID:動態 NIC 的 VLAN ID

或者,您也可以在更新執行個體屬性時,將動態 NIC 新增至執行個體。詳情請參閱「更新執行個體屬性」。

將動態 NIC 新增至 MIG 中的執行個體

本節說明如何建立新的執行個體範本,並將設定套用至 MIG,藉此將動態 NIC 新增至 MIG 中的執行個體。系統不支援更新現有執行個體範本。

如要進一步瞭解如何建立執行個體範本,請參閱建立執行個體範本。 如要查看現有執行個體範本,請參閱「取得、列出及刪除執行個體範本」。

控制台

  1. 前往「Instance templates」(執行個體範本) 頁面。

    前往「Instance templates」(執行個體範本)

  2. 按一下要複製及更新的執行個體範本。

  3. 按一下「建立類似的報表」

  4. 依序展開「Advanced options」(進階選項) 和「Networking」(網路) 區段。

  5. 在「Dynamic Network Interfaces」(動態網路介面) 專區中,按一下「Add a Dynamic Network Interface」(新增動態網路介面),然後執行下列操作:

    1. 在「介面類型」欄位中,選取「VPC」

    2. 在「Parent network interface」(父項網路介面) 欄位中,選取要建立動態 NIC 的父項 vNIC。

    3. 在「VLAN ID」欄位中,輸入 Dynamic NIC 的 VLAN ID。

    4. 在「Network」(網路) 和「Subnetwork」(子網路) 中,選取要使用的網路和子網路。

    5. 為動態 NIC 選取下列其中一個 IP 堆疊類型選項:

      • IPv4 (單一堆疊)
      • IPv4 和 IPv6 (雙重堆疊)
      • IPv6 (單一堆疊)
    6. 如果是使用 IPv4 位址的動態 NIC,請按照下列步驟操作:

      1. 在「主要內部 IPv4 位址」部分,選取下列其中一個選項:

        • 臨時 (自動):自動指派新的臨時 IPv4 位址
        • 臨時 (自訂):手動指定新的臨時 IPv4 位址
        • 清單中保留的靜態內部 IPv4 位址
        • 預留靜態內部 IPv4 位址,預留並指派新的靜態內部 IPv4 位址
      2. 在「外部 IPv4 位址」部分,選取下列其中一個選項:

        • 臨時:指派新的臨時 IPv4 位址
        • 「無」:不指派外部 IPv4 位址
        • 清單中預留的靜態 IPv4 位址
        • 預留靜態外部 IP 位址,預留並指派新的靜態外部 IPv4 位址
      3. 您可以選擇將一或多個別名 IP 範圍指派給網路介面。如要指派別名 IP 範圍,請按照下列步驟操作:

        1. 在「別名 IP 範圍」中,按一下「新增 IP 範圍」
        2. 在「子網路範圍」中,選取要使用的子網路主要 IPv4 位址範圍或子網路次要 IPv4 位址範圍。
        3. 以 CIDR 標記法輸入「別名 IP 範圍」。 這個範圍必須是您選取子網路 IP 範圍的未使用範圍。

        如要進一步瞭解如何將別名 IP 範圍指派給 VM 網路介面,請參閱「設定別名 IP 範圍」。

    7. 如果是具有 IPv6 位址的動態 NIC,請根據所連子網路的存取權類型,設定內部或外部 IPv6 位址範圍。在「主要內部 IPv6 位址」或「外部 IPv6 位址」中,選取下列其中一項:

      • 臨時 (自動):自動指派新的臨時 IPv6 位址範圍
      • 臨時 (自訂):手動指定新的臨時 IPv6 位址範圍
      • 清單中預留的靜態 IPv6 位址範圍
      • 預留靜態內部 IPv6 位址預留靜態外部 IPv6 位址,預留及指派新的靜態 IPv6 位址範圍
    8. 如要完成編輯動態 NIC 的屬性,請按一下「Done」(完成)

  6. 如要建立執行個體範本,請按一下「Create」(建立)

  7. 按照步驟在 MIG 中套用新的 VM 設定

    如要更新執行個體,但不要重新啟動或重新建立執行個體,請將最少動作設為 REFRESH。如要瞭解詳情,請參考下列資源:

gcloud

  1. 如要建立新的執行個體範本並新增動態 NIC,請使用 gcloud compute instance-templates create 指令

    為現有執行個體範本中的每個網路介面加入 --network-interface 旗標,並新增指定 vlan 鍵的網路介面,以建立動態 NIC。

    以下範例會在 nic0 下新增動態 NIC。您可以視需要指定其他網路介面和屬性。如需建立具備多個網路介面的執行個體,請參閱「建立具有多個網路介面的 VM」一文。

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
       --network-interface=network=NETWORK_A,subnet=SUBNET_A \
       --network-interface=network=NETWORK_B,subnet=SUBNET_B,vlan=VLAN_ID
    

    更改下列內容:

    • INSTANCE_TEMPLATE_NAME:新執行個體範本的名稱。
    • NETWORK_ANETWORK_B:介面所連線的網路。
    • SUBNET_ASUBNET_B:介面附加的子網路。
    • VLAN_ID:VLAN ID。指定 VLAN ID 會將網路介面設定為 Dynamic NIC。您必須在指令中,將 Dynamic NIC 放在上層 vNIC 後面。
  2. 按照步驟在 MIG 中套用新的 VM 設定

    如要更新執行個體,但不要重新啟動或重新建立執行個體,請將最少動作設為 REFRESH。如要瞭解詳情,請參考下列資源:

API

  1. 如要建立新增動態 NIC 的執行個體範本,請使用 instanceTemplates.insert 方法建立全域執行個體範本,或使用 regionInstanceTemplates.insert 方法建立區域執行個體範本。

    networkInterfaces 欄位中,指定現有執行個體範本中的每個網路介面,並新增包含 vlan 欄位的網路介面,以建立動態 NIC。

    以下範例會在 nic0 下新增動態 NIC。您可以視需要指定其他網路介面和屬性。如需建立具備多個網路介面的執行個體,請參閱「建立具有多個網路介面的 VM」一文。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
    {
       ....
    
       "networkInterfaces": [
         {
           "subnetwork": "regions/REGION/subnetworks/SUBNET_A"
         },
         {
           "subnetwork": "regions/REGION/subnetworks/SUBNET_B",
           "vlan": "VLAN_ID"
         },
           additional network interfaces...
       ],
       other instance settings...
     }
    

    更改下列內容:

    • PROJECT_ID:包含執行個體範本的專案 ID。
    • REGION:包含執行個體的區域。
    • SUBNET_A, SUBNET_B:每個網路介面所在的子網路。
    • VLAN_ID:VLAN ID。指定 VLAN ID 會將網路介面設定為 Dynamic NIC。您必須在要求中,將 Dynamic NIC 放在上層 vNIC 之後。
  2. 按照步驟在 MIG 中套用新的 VM 設定

    如要更新執行個體,但不要重新啟動或重新建立執行個體,請將最少動作設為 REFRESH。如要瞭解詳情,請參考下列資源:

設定動態 NIC 的客體 OS

本節說明在新增或現有執行個體中加入動態 NIC 時,如何完成額外的客體 OS 設定。

選擇下列其中一個設定選項:

設定選項 說明
設定動態 NIC 的自動管理功能 (建議)

使用訪客代理程式自動管理動態 NIC。

訪客環境包含訪客代理程式,可自動安裝及管理 OS 映像檔 Linux 發行版本根命名空間中的 VLAN 介面。 Google Cloud

如果設定自動管理動態 NIC,請使用客體代理程式 20251115.00 以上版本。雖然客體代理程式版本 20250204.02 已支援這項功能,但客體代理程式版本 20250901.0020251108.00已知問題,導致系統無法自動安裝及管理動態 NIC。

手動設定客體 OS

在客層作業系統中執行指令,安裝動態 NIC。

如果您使用這個選項,執行個體重新啟動後,設定不會自動保留。如要讓設定在重新啟動後仍保持不變,請使用建議的方法,為 Linux 發行版本設定永久網路介面。舉例來說,請參閱 Debian 的「NetworkConfiguration」和 Ubuntu 的「interfaces」。

設定自動管理動態 NIC

本節說明如何使用客體代理程式,設定自動管理動態 NIC。

每個執行個體只需完成一次這些步驟。 如果您已為執行個體新增動態 NIC,並完成這些步驟,就不必重複操作。

如要設定自動管理動態 NIC:

  1. 使用 SSH 連線至執行個體

  2. 確認執行個體搭載的客體代理程式版本為 20251115.00 以上:

    1. 如要判斷執行個體是否正在執行訪客代理程式,請執行「訪客環境的已安裝套件」一節中列出的適當指令。

      1. 如果執行個體未執行訪客代理程式,請安裝訪客環境

      2. 如果執行個體正在執行客體代理程式,請更新客體環境

      安裝或更新訪客環境可確保您擁有最新版本的訪客代理程式。如要確認版本,請按照「驗證訪客環境」一文中的步驟操作。

  3. 設定訪客代理程式來管理動態 NIC:

    1. 開啟或建立訪客環境設定檔。

      edit /etc/default/instance_configs.cfg
      
    2. 在設定檔中新增下列內容,然後儲存變更並結束編輯器。

      [NetworkInterfaces]
      vlan_setup_enabled = true
      manage_primary_nic = true
      

      如要瞭解這些設定,請參閱下列文章:

      • vlan_setup_enabled = true:設定客層代理程式,安裝及管理動態 NIC
      • manage_primary_nic = true:額外設定,可讓客體代理程式管理在 nic0 下建立的動態 NIC。

      如要進一步瞭解如何編輯客體代理程式設定檔,請參閱客體代理程式說明文件中的「設定」一節。

    3. 執行下列指令,重新啟動客體代理程式。或者,您也可以重新啟動執行個體。

      sudo systemctl restart google-guest-agent.service
      
  4. 列出執行個體上的網路介面,確認訪客代理程式已安裝動態 NIC。

    舉例來說,下列指令會顯示名稱,例如 a-gcp.ens4.11,適用於 VLAN ID 為 11 的動態 NIC,該 NIC 是以 ens4 介面的子項建立。

    sudo ip -d addr
    

手動設定客體 OS

如要在執行個體的客層 OS 中手動設定動態 NIC,請按照下列步驟操作:

  1. 使用 SSH 連線至執行個體

  2. 如果執行個體正在執行客體代理程式,請停用動態 NIC 的自動管理功能。您可以使用「訪客環境的已安裝套件」中列出的適當指令,判斷執行個體是否正在執行客體代理程式。

    如要停用動態 NIC 的自動管理功能,請按照下列步驟操作:

    1. 開啟或建立訪客環境設定檔。

        edit /etc/default/instance_configs.cfg
        

    2. 在設定檔中新增下列內容,然後儲存變更並結束編輯器。

      [NetworkInterfaces]
      vlan_setup_enabled = false
      manage_primary_nic = false
      

      如要進一步瞭解如何編輯客體代理程式設定檔,請參閱客體代理程式說明文件中的「設定」一節。

    3. 執行下列指令,重新啟動客層代理程式。或者,您也可以重新啟動執行個體。

      sudo systemctl restart google-guest-agent.service
      
  3. 針對您建立的每個動態 NIC,執行下列步驟:

    1. 取得動態 NIC 的 MAC 位址。如要找出 MAC 位址,請執行下列指令來查詢中繼資料伺服器:

      curl http://metadata.google.internal/computeMetadata/v1/instance/vlan-network-interfaces/VNIC_NUMBER/VLAN_ID/mac -H "Metadata-Flavor: Google"
      

      VNIC_NUMBER/VLAN_ID 替換為上層 vNIC 的編號和 Dynamic NIC 的 VLAN ID。例如 0/2 代表 nic0.2,或 1/4 代表 nic1.4

    2. 在執行個體的客體 OS 中設定子介面。舉例來說,在 Debian VM 上,請執行下列指令:

      sudo modprobe 8021q
      sudo ip link add link VNIC_NAME name VNIC_NAME.VLAN_ID type vlan id VLAN_ID
      sudo ip addr add IP_ADDRESS dev VNIC_NAME.VLAN_ID
      sudo ip link set dev VNIC_NAME.VLAN_ID address MAC_ADDRESS
      sudo ip link set up VNIC_NAME.VLAN_ID
      

      更改下列內容:

      • VNIC_NAME:作業系統指派的父項 vNIC 名稱,例如 eth1ens4
      • IP_ADDRESS:您建立的動態 NIC 的 IP 位址
      • VLAN_ID:您指派給動態 NIC 的 VLAN ID
      • MAC_ADDRESS:您在上一個步驟中取得的 MAC 位址

後續步驟