向实例添加 Dynamic NIC
本页面介绍了如何向现有虚拟机实例添加 Dynamic Network Interface (NIC)。如需了解如何创建新实例,请参阅创建具有多个网络接口的虚拟机。
准备工作
在向实例添加 Dynamic NIC 之前,请执行以下操作:
添加 Dynamic NIC
本部分介绍了如何向实例添加 Dynamic NIC。
添加 Dynamic NIC 时,您可能会观察到传播延迟。此延迟通常为几秒钟,但在极少数情况下,可能会达到一分钟。
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 IDPARENT_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 配置客机操作系统
本部分介绍了如何完成在向新实例或现有实例添加 Dynamic NIC 时所需的其他客机操作系统配置。
请从以下配置选项中选择一项:
配置选项 | 说明 |
---|---|
配置 Dynamic NIC 的自动管理(推荐) | 将 Google 客机代理用于 Dynamic NIC 的自动管理。 客机环境包含 Google 客机代理,该代理可在 Google Cloud 操作系统映像的 Linux 发行版上的根命名空间中自动安装和管理 VLAN 接口。Google 客机代理版本 20250204.02 及更高版本支持此功能。 |
手动配置客机操作系统 | 在客机操作系统中运行命令以安装 Dynamic NIC。 如果您使用此选项,则配置在实例重启后不会自动保留。如需使配置在重启后保留,请使用为您的 Linux 发行版配置永久性网络接口的推荐方法。例如,请参阅 NetworkConfiguration(适用于 Debian)和接口(适用于 Ubuntu)。 |
配置 Dynamic NIC 的自动管理
本部分介绍了如何使用 Google 客机代理配置 Dynamic NIC 的自动管理。
您只需为每个实例完成这些步骤一次。如果您向已完成这些步骤的某个实例添加了 Dynamic NIC,则无需重复执行这些步骤。
如需配置 Dynamic NIC 的自动管理,请执行以下操作:
使用 SSH 连接到实例。
确保实例运行的 Google 客机代理为版本 20250204.02 或更高版本:
如需确定实例是否在运行 Google 客机代理,请运行为客机环境安装的软件包中列出的相应命令。
安装或更新客机环境可确保您拥有最新版本的 Google 客机代理。您可以按照验证客机环境中的步骤确认版本。
配置 Google 客机代理以管理 Dynamic NIC:
打开或创建客机环境配置文件。
edit /etc/default/instance_configs.cfg
将以下内容添加到配置文件中,然后保存更改并退出编辑器。
[NetworkInterfaces] vlan_setup_enabled = true manage_primary_nic = true
如需了解这些设置,请参阅以下内容:
vlan_setup_enabled = true
:将 Google 客机代理配置为安装和管理 Dynamic NICmanage_primary_nic = true
:Google 客机代理管理在nic0
下创建的 Dynamic NIC 所需的额外设置
如需详细了解如何修改客机代理配置文件,请参阅 Google 客机代理文档中的配置部分。
通过运行以下命令重启客机代理。或者,您可以重启实例。
sudo systemctl restart google-guest-agent.service
列出实例上的网络接口,以查看 Google 客机代理是否安装了 Dynamic NIC。
例如,以下命令会显示 Dynamic NIC 的名称(例如
a-gcp.ens4.11
),其 VLAN ID 为11
,是作为ens4
接口的子级创建的。sudo ip -d addr
手动配置客机操作系统
如需在实例的客机操作系统中手动配置 Dynamic NIC,请执行以下操作:
使用 SSH 连接到实例。
如果实例在运行 Google 客机代理,请停用 Dynamic NIC 的自动管理。您可以使用为客机环境安装的软件包中列出的相应命令来确定实例是否在运行 Google 客机代理。
如需停用 Dynamic NIC 的自动管理,请执行以下操作:
打开或创建客机环境配置文件。
edit /etc/default/instance_configs.cfg
将以下内容添加到配置文件中,然后保存更改并退出编辑器。
[NetworkInterfaces] vlan_setup_enabled = false manage_primary_nic = false
如需详细了解如何修改客机代理配置文件,请参阅 Google 客机代理文档中的配置部分。
通过运行以下命令重启客机代理。或者,您可以重启实例。
sudo systemctl restart google-guest-agent.service
对于您创建的每个 Dynamic NIC,请执行以下操作:
获取父级 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
。在实例的客机操作系统中配置子接口。例如,在 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 名称,例如eth1
或ens4
IP_ADDRESS
:您创建的 Dynamic NIC 的 IP 地址VLAN_ID
:您为 Dynamic NIC 分配的 VLAN IDMAC_ADDRESS
:您在上一步中获得的 MAC 地址