在執行個體中新增動態網路介面卡

本頁說明如何在現有的 VM 執行個體中新增動態網路介面 (NIC)。

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

事前準備

在將動態網路介面卡新增至執行個體前,請先執行下列操作:

新增動態 NIC

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

新增動態 NIC 時,您可能會觀察到傳播延遲。這項延遲時間通常為幾秒,但在少數情況下,可能會延遲至一分鐘。

gcloud

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

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

更改下列內容:

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

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

如要將動態網路介面卡新增至代管執行個體群組 (MIG),請參閱 gcloud beta compute instance-groups managed set-instance-template 指令

API

如要在現有執行個體中新增動態網路介面卡,請使用 instances.addNetworkInterface 方法

POST https://compute.googleapis.com/compute/beta/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:Dynamic NIC 的 VLAN ID

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

如要將動態 NIC 新增至代管執行個體群組 (MIG),請參閱 instanceGroupManagers.setInstanceTemplate 方法

為動態 NIC 設定來賓作業系統

本節說明如何完成在新增或現有執行個體中新增動態 NIC 時,所需的額外來賓作業系統設定。

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

設定選項 說明
設定動態網路介面卡的自動管理功能 (建議)

使用 Google 訪客代理程式自動管理動態網路介面卡。

訪客環境包含 Google 訪客代理程式,可在 Google Cloud OS 映像檔的 Linux 發行版本中,自動安裝及管理根名稱空間中的 VLAN 介面。Google 訪客代理程式 20250204.02 以上版本支援這項功能。

手動設定訪客作業系統

在訪客作業系統中執行指令,安裝動態網路介面卡。

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

設定動態網路介面卡的自動管理功能

本節說明如何使用 Google 訪客代理程式,設定動態 NIC 的自動管理功能。

每個執行個體只需完成這些步驟一次。如果您已在執行個體中新增動態 NIC,且已完成這些步驟,則不必重複執行這些步驟。

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

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

  2. 請確認執行個體執行的是 20250204.02 以上版本的 Google 訪客代理程式:

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

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

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

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

  3. 設定 Google 訪客代理程式,以便管理動態網路介面卡:

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

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

      [NetworkInterfaces]
      vlan_setup_enabled = true
      manage_primary_nic = true
      

      如要進一步瞭解這些設定,請參閱以下文章:

      • vlan_setup_enabled = true:設定 Google 訪客代理程式,以便安裝及管理動態 NIC
      • manage_primary_nic = true:Google 訪客代理程式需要額外設定,才能管理在 nic0 下建立的動態網路介面卡

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

    3. 執行下列指令,重新啟動 Guest Agent。或者,您也可以重新啟動執行個體。

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

    舉例來說,下列指令會顯示 a-gcp.ens4.11 等名稱,代表 VLAN ID 為 11 的動態 NIC,該 NIC 是 ens4 介面的子項。

    sudo ip -d addr
    

手動設定來賓作業系統

如要在執行個體的訪客作業系統中手動設定動態網路介面卡,請按照下列步驟操作:

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

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

    如要停用動態網路介面卡的自動管理功能,請按照下列步驟操作:

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

        edit /etc/default/instance_configs.cfg
        

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

      [NetworkInterfaces]
      vlan_setup_enabled = false
      manage_primary_nic = false
      

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

    3. 執行下列指令,重新啟動 Guest Agent。或者,您也可以重新啟動執行個體。

      sudo systemctl restart google-guest-agent.service
      
  3. 針對您建立的每個動態網路介面卡,執行下列操作:

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

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

      VNIC_NUMBER 替換為父 vNIC 的編號。例如 nic00,或 nic11

    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:您建立的動態網路介面卡的 IP 位址
      • VLAN_ID:您指派給動態網路介面卡的 VLAN ID
      • MAC_ADDRESS:您在上一個步驟中取得的 MAC 位址