默认情况下,每个实例只有一个网络接口,该接口决定实例使用的 VPC 网络。您可以创建具有多个网络接口的实例,但每个接口都必须连接到不同的 VPC 网络。每个网络都必须至少有一个子网,该子网定义了可分配给实例的 IPv4 或 IPv6 地址范围。
如需了解详情,请参阅以下页面:
- 创建实例时分配的 IP 地址:IP 地址
- 创建双栈或仅 IPv6(预览版)实例:为实例和实例模板配置 IPv6
默认情况下, Google Cloud 会为每个项目创建一个名为 default
的自动模式 VPC 网络。如需使用其他网络,或者您在自动模式下或自定义模式 VPC 网络中手动创建的子网,则必须在创建实例并配置网络接口时指定子网。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
针对项目的
compute.instances.create
权限 -
为实例指定子网:针对项目或所选子网的
compute.subnetworks.use
权限 -
在使用 VPC 网络时为实例分配外部 IP 地址:针对项目或所选子网的
compute.subnetworks.useExternalIp
权限 - 如果您没有指定网络或子网,Compute Engine 会使用默认 VPC 网络和与实例位于同一区域的自动子网。
- 如果您未指定网络,Compute Engine 会根据指定的子网推断网络。
- 如果您指定了网络,则必须指定子网,并且此子网必须属于同一个网络。否则,实例创建将失败。
在 Google Cloud 控制台中,前往创建实例页面。
如果出现提示,请选择您的项目并点击继续。
系统随即会显示创建实例页面,并显示机器配置窗格。
在机器配置窗格中,执行以下操作:
- 在名称字段中,为实例指定名称。如需了解详情,请参阅资源命名惯例。
可选:在可用区字段中,为此实例选择一个可用区。
默认选择为任意。如果您不更改此默认选择,Google 会根据机器类型和可用性为您自动选择可用区。
为您的实例选择机器系列。然后, Google Cloud 控制台会显示适用于您所选机器族的机器系列。您可以使用以下机器家族选项:
- 通用
- 计算优化
- 内存优化
- 存储优化
- GPU 数量
在系列列中,选择实例的机器系列。
如果您在上一步中选择了 GPU 作为机器系列,请选择所需的 GPU 类型。然后,系统会为所选 GPU 类型自动选择机器系列。
在机器类型部分中,为您的实例选择机器类型。
在导航菜单中,点击网络。在显示的网络窗格中,执行以下操作:
如需允许 HTTP 或 HTTPS 流量流向实例,请前往防火墙部分,然后选择允许 HTTP 流量或允许 HTTPS 流量。
Compute Engine 会向您的实例中添加网络标记,并创建对应的入站防火墙规则,该规则允许
tcp:80
(HTTP) 或tcp:443
(HTTPS) 上的所有传入流量。网络标记可将防火墙规则与实例相关联。如需了解详情,请参阅 Cloud 新一代防火墙文档中的防火墙规则概览。如需指定网络接口详细信息,请前往网络接口部分,然后点击添加网络接口。
在随即显示的新建网络接口部分中,执行以下操作:
- 在网络字段中,选择包含您创建的子网的 VPC 网络。
- 在子网列表中,选择实例要使用的子网。
- 在 IP 栈类型字段中,为网络接口选择 IP 栈类型。
- 如需确认网络接口详细信息,请点击完成。
可选:指定其他配置选项。如需了解详情,请参阅实例创建期间的配置选项。
要创建并启动该实例,请点击创建。
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
使用 Google Cloud CLI,按照从公共映像创建实例或从快照创建实例的相同说明操作,并在运行
gcloud compute instances create
命令时添加本部分中所示的网络标志:gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --machine-type=MACHINE_TYPE \ --create-disk=boot=yes,image=projects/IMAGE_PROJECT/global/images/IMAGE,size=SIZE \ --network=NETWORK_NAME \ --subnet=SUBNET_NAME \ --stack-type=STACK_TYPE \ --private-network-ip=INTERNAL_IPV4_ADDRESS \ --address=EXTERNAL_IPV4_ADDRESS \ --nic-type=GVNIC
替换以下内容:
INSTANCE_NAME
:计算实例的名称ZONE
:实例创建所在的可用区,例如europe-west1-b
。实例的区域是根据地区推断出来的。MACHINE_TYPE
(可选):用于实例的机器类型。IMAGE_PROJECT
:可选:包含映像的映像项目IMAGE
:可选:指定以下其中一项:SIZE
:可选:新磁盘的大小。 值必须为整数。默认的测量单位为 GiB。NETWORK_NAME
(可选):网络的名称SUBNET_NAME
:要与实例搭配使用的子网的名称。如需查看网络中的子网列表,请使用
gcloud compute networks subnets list
命令。STACK_TYPE
(可选):网络接口的堆栈类型。STACK_TYPE
必须是IPV4_ONLY
、IPV4_IPV6
或IPV6_ONLY
(预览版)之一。默认值为IPV4_ONLY
。INTERNAL_IPV4_ADDRESS
:可选:您希望计算实例在目标子网中使用的内部 IPv4 地址。如果您不需要特定 IP 地址,请省略此标志。如需指定内部 IPv6 地址,请改用标志
--internal-ipv6-address
。EXTERNAL_IPV4_ADDRESS
:可选:要与网络接口搭配使用的静态外部 IPv4 地址。您之前必须已预留外部 IPv4 地址。执行下列其中一项操作:- 指定子网中的有效 IPv4 地址。
- 如果您不希望网络接口具有外部 IP 地址,请改用标志
--network-interface=no-address
。 - 如果您希望接口接收临时外部 IP 地址,请指定
address=''
。
如需指定外部 IPv6 地址,请改用标志
--external-ipv6-address
。
- 在 Google Cloud 控制台中,前往虚拟机实例页面。
- 点击创建实例。
- 指定所需的参数。
- 在页面顶部或底部,点击等效代码,然后点击 Terraform 标签页以查看 Terraform 代码。
PROJECT_ID
:要在其中创建虚拟机的项目的 IDZONE
:要在其中创建虚拟机的可用区MACHINE_TYPE_ZONE
:包含新虚拟机将使用的机器类型的可用区MACHINE_TYPE
:新虚拟机的预定义或自定义机器类型VM_NAME
:新虚拟机的名称IMAGE_PROJECT
:包含映像的项目
例如,如果您将debian-10
指定为映像系列,请将debian-cloud
指定为映像项目。IMAGE
:指定以下其中一项:IMAGE
:公共映像的特定版本例如,
"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
IMAGE_FAMILY
:映像系列此项表示通过最新的未弃用的操作系统映像创建虚拟机。例如,如果您指定
"sourceImage": "projects/debian-cloud/global/images/family/debian-10"
,则 Compute Engine 会通过Debian 10
映像系列中最新版本的操作系统映像创建虚拟机。
NETWORK_NAME
(可选):您要用于虚拟机的 VPC 网络。您可以指定default
来使用默认网络。REGION
:指定子网所在的区域。此值必须与虚拟机位于同一区域。SUBNET_NAME
:要使用的子网的名称STACK_TYPE
(可选):网络接口的堆栈类型。 您可以指定IPV4_ONLY
、IPV4_IPV6
或IPV6_ONLY
(预览版)之一。默认值为IPV4_ONLY
。ENABLE_SECURE_BOOT
(可选):如果您选择了支持安全强化型虚拟机功能的映像,则 Compute Engine 会默认启用虚拟可信平台模块 (vTPM) 和完整性监控。默认情况下,Compute Engine 不会启用安全启动。如果为
enableSecureBoot
指定true
,则 Compute Engine 会创建一个启用了所有三项安全强化型虚拟机功能的虚拟机。在 Compute Engine 启动您的虚拟机后,如需修改安全强化型虚拟机选项,您必须停止该虚拟机。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得创建具有特定子网的实例所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。此预定义角色包含创建具有特定子网的实例所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需创建使用特定子网的实例,您需要具备以下权限:
使用要求
在子网中创建实例时,请考虑以下规则:
您必须先创建要使用的子网,然后再创建实例。如需了解详情,请参阅创建和管理 VPC 网络。
在特定子网中创建实例
如需在特定子网中创建实例,请按以下步骤操作:
控制台
gcloud
Terraform
如需在特定子网中创建实例,您可以使用
google_compute_instance
资源。如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
如需生成 Terraform 代码,您可以使用 Google Cloud 控制台中的等效代码组件。Go
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Go API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Java API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Node.js API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Python API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST
按照
REST
说明通过公共映像或快照创建实例,但在请求正文中指定subnet
字段。POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances { "machineType":"zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name":"VM_NAME
", "disks":[ { "initializeParams":{ "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot":true } ], "networkInterfaces":[ { "network":"global/networks/NETWORK_NAME", "subnetwork":"regions/REGION/subnetworks/SUBNET_NAME", "stackType":"STACK_TYPE" } ], "shieldedInstanceConfig":{ "enableSecureBoot":"ENABLE_SECURE_BOOT" } }替换以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-01-21。
-