在執行個體中新增動態 NIC

本頁說明如何將 Dynamic Network Interface (NIC) 新增至現有 VM 執行個體。

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

事前準備

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

新增 Dynamic 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:要新增 Dynamic NIC 的執行個體名稱
  • ZONE:執行個體的區域
  • VLAN_ID:動態 NIC 的 VLAN ID
  • PARENT_VNIC_NAME:父項 vNIC 的名稱,例如 nic0
  • NETWORK:動態 NIC 連接的網路
  • SUBNET:動態 NIC 連接的子網路

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

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

API

如要將動態 NIC 新增至現有執行個體,請使用 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:動態 NIC 的 VLAN ID

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

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

設定動態 NIC 的客體 OS

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

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

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

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

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

手動設定客體 OS

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

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

設定自動管理動態 NIC

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

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

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

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

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

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

      1. 如果執行個體未執行 Google Guest Agent,請安裝訪客環境

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

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

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

    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 下建立的動態 NIC。

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

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

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

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

    sudo ip -d addr
    

手動設定客體 OS

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

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

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

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

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

        edit /etc/default/instance_configs.cfg
        

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

      [NetworkInterfaces]
      vlan_setup_enabled = false
      manage_primary_nic = false
      

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

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

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

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

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

      VNIC_NUMBER 替換為父項 vNIC 的編號。例如,0 (nic0) 或 1 (nic1)。

    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 位址