インスタンスに Dynamic NIC を追加する

このページでは、既存の VM インスタンスに Dynamic Network Interface(NIC)を追加する方法について説明します。

新しいインスタンスの作成については、複数のネットワーク インターフェースを持つ VM を作成するをご覧ください。

始める前に

インスタンスに Dynamic NIC を追加する前に、次の操作を行います。

Dynamic NIC を追加する

このセクションでは、インスタンスに Dynamic NIC を追加する方法について説明します。

Dynamic NIC を追加すると、伝播遅延が発生することがあります。通常は数秒ですが、まれに 1 分程度になることがあります。

gcloud

既存のインスタンスに Dynamic 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: Dynamic NIC の VLAN ID
  • PARENT_VNIC_NAME: 親 vNIC の名前(nic0 など)
  • NETWORK: Dynamic NIC が接続するネットワーク
  • SUBNET: Dynamic NIC が接続するサブネット

また、インスタンスのプロパティを更新するときに、インスタンスに Dynamic NIC を追加することもできます。詳細については、インスタンス プロパティを更新するをご覧ください。

マネージド インスタンス グループ(MIG)に Dynamic NIC を追加するには、gcloud beta compute instance-groups managed set-instance-template コマンドをご覧ください。

API

既存のインスタンスに Dynamic 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: Dynamic NIC を追加するインスタンスの名前
  • REGION: インスタンスが含まれるリージョン
  • SUBNET: Dynamic NIC が接続するサブネット
  • PARENT_VNIC_NAME: 親 vNIC の名前(nic0 など)
  • VLAN_ID: Dynamic NIC の VLAN ID

また、インスタンスのプロパティを更新するときに、インスタンスに Dynamic NIC を追加することもできます。詳細については、インスタンス プロパティを更新するをご覧ください。

マネージド インスタンス グループ(MIG)に Dynamic NIC を追加するには、instanceGroupManagers.setInstanceTemplate メソッドをご覧ください。

Dynamic NIC 用にゲスト OS を構成する

このセクションでは、新しいインスタンスまたは既存のインスタンスに Dynamic NIC を追加するときに必要な追加のゲスト OS 構成を完了する方法について説明します。

次のいずれかの構成オプションを選択します。

構成オプション 説明
Dynamic NIC の自動管理を構成する(推奨)

Dynamic NIC の自動管理には、Google ゲスト エージェントを使用します。

ゲスト環境には Google ゲスト エージェントが含まれています。このエージェントは、 Google Cloud OS イメージの Linux ディストリビューションのルート名前空間で VLAN インターフェースのインストールと管理を自動化します。この機能は、Google ゲスト エージェント バージョン 20250204.02 以降でサポートされています。

ゲスト OS を手動で構成する

ゲスト OS でコマンドを実行して、Dynamic NIC をインストールします。

このオプションを使用すると、インスタンスの再起動後に構成が自動的に保持されません。再起動後も構成を保持するには、Linux ディストリビューションの永続ネットワーク インターフェースを構成する推奨の方法を使用します。たとえば、Debian の NetworkConfiguration と Ubuntu の interfaces をご覧ください。

Dynamic NIC の自動管理を構成する

このセクションでは、Google ゲスト エージェントを使用して Dynamic NIC の自動管理を構成する方法について説明します。

これらの手順は、インスタンスごとに 1 回だけ実行する必要があります。これらの手順をすでに完了しているインスタンスに Dynamic NIC を追加した場合は、これらの手順を繰り返す必要はありません。

Dynamic NIC の自動管理を構成するには:

  1. SSH を使用してインスタンスに接続します

  2. インスタンスで Google ゲスト エージェントがバージョン 20250204.02 以降で実行されていることを確認します。

    1. インスタンスが Google ゲスト エージェントを実行しているかどうかを確認するには、ゲスト環境でインストールされるパッケージに記載されている適切なコマンドを実行します。

      1. インスタンスが Google ゲスト エージェントを実行していない場合は、ゲスト環境をインストールします。

      2. インスタンスで Google ゲスト エージェントが実行されている場合は、ゲスト環境を更新します。

      ゲスト環境をインストールまたは更新すると、最新バージョンの Google ゲスト エージェントがインストールされます。バージョンは、ゲスト環境を検証するの手順に沿って確認できます。

  3. Dynamic NIC を管理するように Google ゲスト エージェントを構成します。

    1. ゲスト環境構成ファイルを開くか、作成します。

      edit /etc/default/instance_configs.cfg
      
    2. 次のものを構成ファイルに追加し、変更を保存してエディタを終了します。

      [NetworkInterfaces]
      vlan_setup_enabled = true
      manage_primary_nic = true
      

      これらの設定については、以下をご覧ください。

      • vlan_setup_enabled = true: Dynamic NIC をインストールして管理するように Google ゲスト エージェントを構成します。
      • manage_primary_nic = true: nic0 で作成された Dynamic NIC を Google ゲスト エージェントが管理するために必要な追加設定

      ゲスト エージェントの構成ファイルの編集の詳細については、Google ゲスト エージェントのドキュメントで構成をご覧ください。

    3. 次のコマンドを実行して、ゲスト エージェントを再起動します。また、インスタンスを再起動することもできます。

      sudo systemctl restart google-guest-agent.service
      
  4. インスタンスのネットワーク インターフェースを一覧表示して、Google ゲスト エージェントが Dynamic NIC をインストールしたことを確認します。

    たとえば、次のコマンドは、ens4 インターフェースの子として作成された VLAN ID が 11 の Dynamic NIC の名前を表示します(a-gcp.ens4.11 など)。

    sudo ip -d addr
    

ゲスト OS を手動で構成する

インスタンスのゲスト OS で Dynamic NIC を手動で構成するには:

  1. SSH を使用してインスタンスに接続します

  2. インスタンスで Google ゲスト エージェントが実行されている場合は、Dynamic NIC の自動管理を無効にします。インスタンスが Google ゲスト エージェントを実行しているかどうかを確認するには、ゲスト環境でインストールされるパッケージに記載されている適切なコマンドを使用します。

    Dynamic 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. 作成した Dynamic 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 の番号に置き換えます。たとえば、nic0 の場合は 0nic1 の場合は 1 です。

    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: 作成した Dynamic NIC の IP アドレス
      • VLAN_ID: Dynamic NIC に割り当てた VLAN ID
      • MAC_ADDRESS: 前の手順で取得した MAC アドレス