向实例添加 Dynamic Network Interface

本页面介绍了如何向现有 Compute Engine 实例添加 Dynamic Network Interface (NIC)。

如需了解如何创建新实例,请参阅创建具有多个网络接口的虚拟机

准备工作

在向实例添加 Dynamic NIC 之前,请执行以下操作:

添加 Dynamic NIC

以下部分介绍了如何向单个实例或属于托管式实例组 (MIG) 的实例添加 Dynamic NIC。

添加 Dynamic NIC 时,您可能会观察到传播延迟。此延迟通常为几秒钟,但在极少数情况下,可能会达到一分钟。

向实例添加 Dynamic NIC

本部分介绍了如何向实例添加 Dynamic NIC。

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    进入“虚拟机实例”

  2. 点击要为其添加 Dynamic NIC 的实例的名称。

  3. 在“实例详情”页面上,点击修改

  4. Dynamic Network Interface 部分中,点击添加 Dynamic Network Interface,然后执行以下操作:

    1. 接口类型字段中,选择 VPC

    2. 父网络接口字段中,选择要为其创建 Dynamic NIC 的父 vNIC。

    3. VLAN ID 字段中,输入 Dynamic NIC 的 VLAN ID。

    4. 对于网络子网,选择要使用的网络和子网。

    5. 为 Dynamic NIC 选择以下 IP 栈类型选项之一:

      • IPv4(单栈)
      • IPv4 和 IPv6(双栈)
      • IPv6(单栈)
    6. 对于具有 IPv4 地址的 Dynamic 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. 对于别名 IP 范围,请以 CIDR 表示法输入 IP 范围。 此范围必须是您所选子网 IP 范围中未使用的子范围。

        如需详细了解如何为虚拟机网络接口分配别名 IP 地址范围,请参阅配置别名 IP 地址范围

    7. 对于具有 IPv6 地址的 Dynamic NIC,请根据所连接子网的访问类型配置内部或外部 IPv6 地址范围。对于主要内部 IPv6 地址外部 IPv6 地址,请从以下选项中选择:

      • 临时(自动):自动分配新的临时 IPv6 地址范围
      • 临时(自定义):手动指定新的临时 IPv6 地址范围
      • 列表中预留的静态 IPv6 地址范围
      • 预留静态内部 IPv6 地址预留静态外部 IPv6 地址:用于预留并分配新的静态 IPv6 地址范围
    8. 如需完成对 Dynamic NIC 属性的修改,请点击完成

  5. 如需保存配置,请点击保存

gcloud

如需向现有实例添加 Dynamic 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:Dynamic NIC 的 VLAN ID
  • PARENT_VNIC_NAME:父级 vNIC 的名称,例如 nic0
  • NETWORK:Dynamic NIC 所连接的网络
  • SUBNET:Dynamic NIC 所连接的子网

或者,您也可以在更新实例属性时向实例添加 Dynamic NIC。如需了解详情,请参阅更新实例属性

API

如需向现有实例添加 Dynamic 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:要向其中添加 Dynamic NIC 的实例的名称
  • REGION:包含实例的区域
  • SUBNET:Dynamic NIC 所连接的子网
  • PARENT_VNIC_NAME:父级 vNIC 的名称,例如 nic0
  • VLAN_ID:Dynamic NIC 的 VLAN ID

或者,您也可以在更新实例属性时向实例添加 Dynamic NIC。如需了解详情,请参阅更新实例属性

向 MIG 中的实例添加 Dynamic NIC

本部分介绍了如何通过创建新的实例模板并将配置应用于 MIG,向 MIG 中的实例添加 Dynamic NIC。不支持更新现有实例模板。

如需详细了解如何创建实例模板,请参阅创建实例模板。 如需查看现有实例模板,请参阅获取、列出和删除实例模板

控制台

  1. 转到实例模板页面。

    转到“实例模板”

  2. 点击您要复制和更新的实例模板。

  3. 点击创建类似模板

  4. 展开高级选项部分,然后展开网络部分。

  5. Dynamic Network Interface 部分中,点击添加 Dynamic Network Interface,然后执行以下操作:

    1. 接口类型字段中,选择 VPC

    2. 父网络接口字段中,选择要为其创建 Dynamic NIC 的父 vNIC。

    3. VLAN ID 字段中,输入 Dynamic NIC 的 VLAN ID。

    4. 对于网络子网,选择要使用的网络和子网。

    5. 为 Dynamic NIC 选择以下 IP 栈类型选项之一:

      • IPv4(单栈)
      • IPv4 和 IPv6(双栈)
      • IPv6(单栈)
    6. 对于具有 IPv4 地址的 Dynamic 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. 对于别名 IP 范围,请以 CIDR 表示法输入 IP 范围。 此范围必须是您所选子网 IP 范围中未使用的子范围。

        如需详细了解如何为虚拟机网络接口分配别名 IP 地址范围,请参阅配置别名 IP 地址范围

    7. 对于具有 IPv6 地址的 Dynamic NIC,请根据所连接子网的访问类型配置内部或外部 IPv6 地址范围。对于主要内部 IPv6 地址外部 IPv6 地址,请从以下选项中选择:

      • 临时(自动):自动分配新的临时 IPv6 地址范围
      • 临时(自定义):手动指定新的临时 IPv6 地址范围
      • 列表中预留的静态 IPv6 地址范围
      • 预留静态内部 IPv6 地址预留静态外部 IPv6 地址:用于预留并分配新的静态 IPv6 地址范围
    8. 如需完成对 Dynamic NIC 属性的修改,请点击完成

  6. 如需创建实例模板,请点击创建

  7. 按照相关步骤在 MIG 中应用新的虚拟机配置

    如果您想更新实例,但不想重启或重新创建它们,请将最少操作设置为 REFRESH。详情请参阅以下内容:

gcloud

  1. 如需创建添加了 Dynamic NIC 的新实例模板,请使用 gcloud compute instance-templates create 命令

    为现有实例模板中的每个网络接口包含 --network-interface 标志,并添加指定 vlan 键的新网络接口以创建 Dynamic NIC。

    以下示例在 nic0 下添加了一个 Dynamic NIC。您可以根据需要指定其他网络接口和属性。如需查看有关如何创建具有多个网络接口的实例的更多示例,请参阅创建具有多个网络接口的虚拟机

    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 中应用新的虚拟机配置

    如果您想更新实例,但不想重启或重新创建它们,请将最少操作设置为 REFRESH。详情请参阅以下内容:

API

  1. 如需创建会添加 Dynamic NIC 的新实例模板,请使用 instanceTemplates.insert 方法创建全球实例模板,或使用 regionInstanceTemplates.insert 方法创建区域级实例模板。

    networkInterfaces 字段中,指定现有实例模板中的每个网络接口,并添加包含 vlan 字段的新网络接口以创建 Dynamic NIC。

    以下示例在 nic0 下添加了一个 Dynamic NIC。您可以根据需要指定其他网络接口和属性。如需查看有关如何创建具有多个网络接口的实例的更多示例,请参阅创建具有多个网络接口的虚拟机

    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 中应用新的虚拟机配置

    如果您想更新实例,但不想重启或重新创建它们,请将最少操作设置为 REFRESH。详情请参阅以下内容:

为 Dynamic NIC 配置客机操作系统

本部分介绍了如何完成在向新实例或现有实例添加 Dynamic NIC 时所需的其他客机操作系统配置。

请从以下配置选项中选择一项:

配置选项 说明
配置 Dynamic NIC 的自动管理(推荐)

将客机代理用于 Dynamic NIC 的自动管理。

客机环境包含客机代理,该代理可在 Google Cloud 操作系统映像的 Linux 发行版上的根命名空间中自动安装和管理 VLAN 接口。

如果您配置 Dynamic NIC 的自动管理功能,请使用客机代理版本 20251115.00 或更高版本。虽然客机代理版本 20250204.02 中引入了对该功能的支持,但客机代理版本 20250901.0020251108.00 存在一个已知问题,即 Dynamic NIC 不会自动安装和管理。

手动配置客机操作系统

在客机操作系统中运行命令以安装 Dynamic NIC。

如果您使用此选项,则配置在实例重启后不会自动保留。如需使配置在重启后保留,请使用为您的 Linux 发行版配置永久性网络接口的推荐方法。例如,请参阅 NetworkConfiguration(适用于 Debian)和接口(适用于 Ubuntu)。

配置 Dynamic NIC 的自动管理

本部分介绍了如何使用客机代理配置 Dynamic NIC 的自动管理。

您只需为每个实例完成这些步骤一次。如果您向已完成这些步骤的某个实例添加了 Dynamic NIC,则无需重复执行这些步骤。

如需配置 Dynamic NIC 的自动管理,请执行以下操作:

  1. 使用 SSH 连接到实例

  2. 确保实例运行的客机代理为版本 20251115.00 或更高版本:

    1. 如需确定实例是否在运行客机代理,请运行为客机环境安装的软件包中列出的相应命令。

      1. 如果您的实例未运行客机代理,请安装客机环境

      2. 如果您的实例在运行客机代理,请更新客机环境

      安装或更新客机环境可确保您拥有最新版本的客机代理。您可以按照验证客机环境中的步骤确认版本。

  3. 配置客机代理以管理 Dynamic NIC:

    1. 打开或创建客机环境配置文件。

      edit /etc/default/instance_configs.cfg
      
    2. 将以下内容添加到配置文件中,然后保存更改并退出编辑器。

      [NetworkInterfaces]
      vlan_setup_enabled = true
      manage_primary_nic = true
      

      如需了解这些设置,请参阅以下内容:

      • vlan_setup_enabled = true:将客机代理配置为安装和管理 Dynamic NIC
      • manage_primary_nic = true:客机代理管理在 nic0 下创建的 Dynamic NIC 所需的额外设置

      如需详细了解如何修改客机代理配置文件,请参阅客机代理文档中的配置部分。

    3. 通过运行以下命令重启客机代理。或者,您可以重启实例。

      sudo systemctl restart google-guest-agent.service
      
  4. 列出实例上的网络接口,以查看客机代理是否安装了 Dynamic NIC。

    例如,以下命令会显示 Dynamic NIC 的名称(例如 a-gcp.ens4.11),其 VLAN ID 为 11,是作为 ens4 接口的子级创建的。

    sudo ip -d addr
    

手动配置客机操作系统

如需在实例的客机操作系统中手动配置 Dynamic NIC,请执行以下操作:

  1. 使用 SSH 连接到实例

  2. 如果实例在运行客机代理,请停用 Dynamic NIC 的自动管理。您可以使用为客机环境安装的软件包中列出的相应命令来确定实例是否在运行客机代理。

    如需停用 Dynamic 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. 对于您创建的每个 Dynamic NIC,请执行以下操作:

    1. 获取Dynamic 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.21/4 表示 nic1.4

    2. 在实例的客机操作系统中配置子接口。例如,在 Debian 虚拟机上运行以下命令:

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

后续步骤