默认情况下,Compute Engine 实例使用 IPv4 地址创建。您可以选择创建使用 IPv6 地址的计算实例。同时具有 IPv4 和 IPv6 配置的计算实例称为双栈实例。IPv6 地址是网络接口上配置的任何 IPv4 地址的补充。
如果 Compute Engine 实例连接到的子网配置了 IPv6 范围,则您可以在该实例上配置 IPv6 地址。
计算实例上的任何网络接口都可以配置 IPv6 地址。如需详细了解如何配置多个网络接口,请参阅多个网络接口。
实例网络接口的栈类型决定了它可以连接到的子网类型:
- 仅 IPv4 的网络接口可以连接到双栈子网和仅 IPv4 的子网。
- 双栈网络接口可以连接到双栈子网。
- 仅 IPv6 的网络接口可以连接到双栈子网和仅 IPv6 子网(预览版)。
此外,子网的 IPv6 访问类型配置决定了该子网是具有内部还是外部 IPv6 范围。已连接的实例会从子网继承 IPv6 访问权限类型。
如需详细了解 IPv6 地址,请参阅 IPv6 概览。
限制
- 仅 IPv6 的实例(预览版)仅支持 Ubuntu 和 Debian 操作系统。
准备工作
- 您必须先创建网络和子网,然后才能创建计算实例。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
-
所需的角色
如需获得创建具有 IPv6 地址的实例所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
执行此任务所需的权限
您必须拥有以下权限才能执行此任务:
- 针对项目的
compute.instances.create
权限 - 使用自定义映像创建虚拟机:针对映像的
compute.images.useReadOnly
权限 - 使用快照创建虚拟机:针对快照的
compute.snapshots.useReadOnly
权限 - 使用实例模板创建虚拟机:针对实例模板的
compute.instanceTemplates.useReadOnly
权限 - 为虚拟机分配旧版网络:针对项目的
compute.networks.use
权限 - 为虚拟机指定静态 IP 地址:针对项目的
compute.addresses.use
权限 - 使用旧版网络时为虚拟机分配外部 IP 地址:针对项目的
compute.networks.useExternalIp
权限 - 为虚拟机指定子网:针对项目或所选子网的
compute.subnetworks.use
权限 - 在使用 VPC 网络时为虚拟机分配外部 IP 地址:针对项目或所选子网的
compute.subnetworks.useExternalIp
权限 - 为虚拟机设置虚拟机实例元数据:针对项目的
compute.instances.setMetadata
权限 - 为虚拟机设置标记:针对虚拟机的
compute.instances.setTags
权限 - 为虚拟机设置标签:针对虚拟机的
compute.instances.setLabels
权限 - 为虚拟机设置要使用的服务账号:针对虚拟机的
compute.instances.setServiceAccount
权限 - 为虚拟机创建新磁盘:针对项目的
compute.disks.create
权限 - 以只读或读写模式挂接现有磁盘:针对磁盘的
compute.disks.use
权限 - 以只读模式挂接现有磁盘:针对磁盘的
compute.disks.useReadOnly
权限
创建双栈实例
如需创建具有内部 IPv4 地址和外部 IPv6 地址的实例,请将计算实例连接到双栈子网。
如果您使用共享 VPC,并且想要创建连接到共享子网的双栈实例,请参阅共享 VPC 文档中的创建实例。
转到创建实例页面。
如果出现提示,请选择您的项目并点击继续。系统随即会显示创建实例页面,并显示机器配置窗格。
在机器配置窗格中,执行以下操作:
- 在名称字段中,指定实例的名称。如需了解详情,请参阅为资源命名。
- 可选:在可用区字段中,为此实例选择可用区。 选择一个区域中包含已配置 IPv6 范围的子网的可用区。
为您的实例选择机器家族。然后,Google Cloud 控制台会显示适用于所选机器家族的机器系列。以下机器家族选项可供选择:
- 通用
- 计算优化
- 内存优化
- 存储优化
- GPU 数量
在系列列中,选择实例的机器系列。
在机器类型部分中,为实例选择机器类型。
在导航菜单中,点击网络。在显示的网络窗格中,执行以下操作:
在网络接口部分中,点击网络接口以展开并修改它。
对于网络和子网,请选择已配置 IPv6 范围的网络和子网。
对于 IP 栈类型,请选择 IPv4 和 IPv6(双栈)。
在主要内部 IPv4 地址字段中,选择以下选项之一:
- 如需分配新的临时 IPv4 内部地址,请选择临时。
- 如需分配现有的静态外部 IP 地址,请从列表中选择预留的 IPv4 地址的名称。
- 如需创建并分配新的静态内部 IPv4 地址,请选择预留静态内部 IPv4 地址。
可选:对于外部 IPv4 地址,选择以下选项之一:
- 如需分配临时外部 IPv4 地址,请选择临时。
- 如需创建没有外部 IPv4 地址的实例,请选择无。
- 如需分配现有的静态外部 IP 地址,请从列表中选择预留的 IPv4 地址的名称。
- 如需创建并分配新的静态外部 IPv4 地址,请选择预留静态外部 IPv4 地址。
可选:如需配置外部 IPv6 地址,请针对外部 IPv6 地址,选择以下选项之一:
- 如需分配新的临时外部 IPv6 地址,请选择自动分配。
- 如需分配现有的静态外部 IP 地址,请从列表中选择预留的 IPv6 地址的名称。
- 如需创建并分配新的静态外部 IPv6 地址,请选择预留静态外部 IPv6 地址。
如需完成网络接口的修改,请点击完成。
可选:如需配置其他网络接口,请点击添加网络接口,然后针对网络窗格重复上述步骤。
可选:指定其他配置选项。如需了解详情,请参阅实例创建期间的配置选项。
要创建并启动该实例,请点击创建。
使用 gcloud compute instances create
命令来创建实例。
gcloud compute instances createINSTANCE_NAME \ --subnet=SUBNET_NAME \ --zone=ZONE \ --stack-type=IPV4_IPV6
替换以下内容:
INSTANCE_NAME
:实例的名称SUBNET_NAME
:要将实例连接到的子网;子网必须具有 IPv6 子网范围ZONE
:要在其中部署实例的区域
- 选择一个映像。请记下映像或映像系列的名称以及包含该映像的项目的名称。
使用
instances.insert
方法通过映像系列或特定版本的操作系统映像创建实例:在使用任何请求数据之前,请先进行以下替换:
:要在其中创建实例的项目的 ID。PROJECT_ID
:要在其中创建实例的可用区。ZONE
:如果使用自定义机器类型,请指定包含要用于新实例的自定义机器类型的可用区;否则,请指定要用于创建实例的可用区。MACHINE_TYPE_ZONE
:新实例的预定义或自定义机器类型,例如MACHINE_TYPE n4-standard-2
:新实例的名称INSTANCE_NAME
:子网所在的区域REGION
:双栈子网SUBNET
:可选:包含映像的映像项目IMAGE_PROJECT
(可选):指定以下其中一项:IMAGE
HTTP 方法和网址:
POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /zones/ZONE /instances请求 JSON 正文:
{ "machineType": "zones/
MACHINE_TYPE_ZONE /machineTypes/MACHINE_TYPE ", "name": "INSTANCE_NAME ", "networkInterfaces": [ { "subnetwork": "regions/REGION /subnetworks/SUBNET ", "stackType": "IPV4_IPV6" } ], "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT /global/images/IMAGE " }, "boot": true } ], }如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为
request.json
的文件中,然后执行以下命令:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /zones/ZONE /instances"PowerShell (Windows)
将请求正文保存在名为
request.json
的文件中,然后执行以下命令:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /zones/ZONE /instances" | Select-Object -Expand Content您应该收到类似以下内容的 JSON 响应:
{ "kind": "compute#operation", "id": "9216044482154695709", "name": "operation-1739207409646-62dccc7d7bc58-d1350b42-64fdb7f7", "zone": "https://www.googleapis.com/compute/{api_version}/projects/`
PROJECT_ID `/zones/`ZONE `", "operationType": "insert", "targetLink": "https://www.googleapis.com/compute/{api_version}/projects/`PROJECT_ID `/zones/`ZONE `/instances/`INSTANCE_NAME `", "targetId": "2679381553616227357", "status": "RUNNING", "user": "USER_ID ", "progress": 0, "insertTime": "2025-02-10T09:10:10.551-08:00", "startTime": "2025-02-10T09:10:10.551-08:00", "selfLink": "https://www.googleapis.com/compute/{api_version}/projects/`PROJECT_ID `/zones/`ZONE `/operations/operation-1565289606387-58f9f62f5989c-e582f586-6d22f38" "kind": "compute#operation" }
创建仅限 IPv6 的实例
如需创建仅限 IPv6 的实例,请按照本部分中的步骤操作。
对于具有单个网络接口的 Compute Engine 实例,该实例可以具有内部或外部 IPv6 地址,具体取决于其接口连接到的网络的访问类型。您必须创建一个自定义模式虚拟私有云 (VPC) 网络,其中包含具有 IPv6 地址范围的子网。
您必须先创建以下内容,然后才能创建同时使用内部和外部 IPv6 地址的多 NIC 虚拟机实例:
- 内部网络和子网:启用了 IPv6 ULA 的自定义模式 VPC 网络、具有 IPv6 地址范围的子网,以及将访问类型设为
internal
。 - 外部网络和子网:第二个自定义模式 VPC 网络、第二个具有 IPv6 地址范围的子网,以及设置为
external
的访问类型。
创建实例时,您需要配置两个网络接口,一个连接到具有内部 IPv6 地址范围的子网,另一个连接到具有外部地址范围的子网。
如果您使用共享 VPC,并且想要创建连接到共享子网的仅 IPv6 实例,请参阅共享 VPC 文档中的创建实例。
转到创建实例页面。
如果出现提示,请选择您的项目并点击继续。系统随即会显示创建实例页面,并显示机器配置窗格。
在机器配置窗格中,执行以下操作:
- 在名称字段中,指定实例的名称。如需了解详情,请参阅为资源命名。
- 可选:在可用区字段中,为此实例选择可用区。选择一个区域中包含已配置 IPv6 范围的子网的可用区。
为您的实例选择机器家族。然后,Google Cloud 控制台会显示适用于所选机器家族的机器系列。以下机器家族选项可供选择:
- 通用
- 计算优化
- 内存优化
- 存储优化
- GPU 数量
在系列列中,选择实例的机器系列。
在机器类型部分中,为实例选择机器类型。
在导航菜单中,点击网络。在显示的网络窗格中,执行以下操作:
在网络接口部分中,点击网络接口以展开并修改它。
对于网络和子网,请选择已配置 IPv6 范围的网络和子网。
子网的 IPv6 访问权限类型决定了实例是接收内部 IPv6 地址还是外部 IPv6 地址。如需分配内部 IPv6 地址,您必须选择使用为此 VPC 网络配置 ULA 内部 IPv6 范围选项创建的网络。否则,您只能配置外部 IPv6 地址。
对于 IP 栈类型,选择 IPv6(单栈)。
如果您选择的子网的访问类型为
Internal
,则在主要内部 IPv6 地址字段中,选择以下选项之一:- 如需分配新的临时 IPv6 地址,请选择自动分配 (96)
- 如需分配现有的静态内部 IP 地址,请从列表中选择预留的 IPv6 地址的名称。
- 如需创建并分配新的静态内部 IPv6 地址,请选择预留静态内部 IPv6 地址。
如果您选择的子网的访问类型为
External
,则对于外部 IPv6 地址,请选择以下选项之一:- 如需分配新的临时外部 IPv6 地址,请选择自动分配。
- 如需分配现有的静态外部 IP 地址,请从列表中选择预留的 IPv6 地址的名称。
- 如需创建并分配新的静态外部 IPv6 地址,请选择预留静态外部 IPv6 地址。
如需完成网络接口的修改,请点击完成。
可选:如需添加其他 IPv6 地址,请执行以下操作:
- 选择添加网络接口。
- 对网络窗格重复此任务中的前面步骤。
可选:指定其他配置选项。如需了解详情,请参阅实例创建期间的配置选项。
要创建并启动该实例,请点击创建。
使用 gcloud beta compute instances create
命令创建实例。如需同时分配内部和外部 IPv6 地址,您必须创建至少具有两个网络接口的实例。
gcloud beta compute instances createINSTANCE_NAME \ --zoneZONE \ --machine-type=MACHINE_TYPE \ --create-disk=boot=yes,image='projects/IMAGE_PROJECT /global/images/IMAGE ',size=SIZE \ --network-interface=subnet=SUBNET_INTERNAL_NAME ,stack-type=IPV6_ONLY \ --network-interface=subnet=SUBNET_EXTERNAL_NAME ,stack-type=IPV6_ONLY,ipv6-network-tier=PREMIUM
替换以下内容:
INSTANCE_NAME
:实例的名称ZONE
:在其中创建实例的可用区,例如europe-west1-b
。实例的区域是根据地区推断出来的。MACHINE_TYPE
:可选:新实例的机器类型,预定义或自定义例如n4-standard-2
。IMAGE_PROJECT
:可选:包含映像的映像项目IMAGE
(可选):指定以下其中一项:SIZE
:可选:新磁盘的大小。 值必须为整数。默认的测量单位为 GiB。SUBNET_INTERNAL_NAME
:为内部 IP 地址配置的子网的名称,以便与实例搭配使用。SUBNET_EXTERNAL_NAME
:为外部 IP 地址配置的子网名称,以便与实例搭配使用。
- 选择一个映像。请记下映像或映像系列的名称以及包含该映像的项目的名称。
使用
instances.insert
方法通过映像系列或特定版本的操作系统映像创建实例:在使用任何请求数据之前,请先进行以下替换:
:要在其中创建实例的项目的 ID。PROJECT_ID
:要在其中创建实例的可用区。ZONE
:如果使用自定义机器类型,请指定包含要用于新实例的自定义机器类型的可用区;否则,请指定要用于创建实例的可用区。MACHINE_TYPE_ZONE
:新实例的预定义或自定义机器类型,例如MACHINE_TYPE n4-standard-2
。
:新实例的名称INSTANCE_NAME
:子网所在的区域REGION
:仅限 IPv6 的子网。此子网的网络必须具有SUBNET_INTERNAL INTERNAL
访问权限类型,并且已启用 IPv6 ULA。
:仅限 IPv6 的子网。此子网的网络必须具有SUBNET_EXTERNAL INTERNAL
访问权限类型。
:可选:包含映像的映像项目IMAGE_PROJECT
(可选):指定以下其中一项:IMAGE
HTTP 方法和网址:
POST https://compute.googleapis.com/compute/beta/projects/
PROJECT_ID /zones/ZONE /instances请求 JSON 正文:
{ "machineType": "zones/
MACHINE_TYPE_ZONE /machineTypes/MACHINE_TYPE ", "name": "INSTANCE_NAME ", "networkInterfaces": [ { "subnetwork": "regions/REGION /subnetworks/SUBNET_INTERNAL ", "stackType": "IPV6_ONLY" }, { "subnetwork": "regions/REGION /subnetworks/SUBNET_EXTERNAL ", "stackType": "IPV6_ONLY" } ], "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT /global/images/IMAGE " }, "boot": true } ] }如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为
request.json
的文件中,然后执行以下命令:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://compute.googleapis.com/compute/beta/projects/PROJECT_ID /zones/ZONE /instances"PowerShell (Windows)
将请求正文保存在名为
request.json
的文件中,然后执行以下命令:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://compute.googleapis.com/compute/beta/projects/PROJECT_ID /zones/ZONE /instances" | Select-Object -Expand Content您应该收到类似以下内容的 JSON 响应:
{ "kind": "compute#operation", "id": "9216044482154695709", "name": "operation-1739207409646-62dccc7d7bc58-d1350b42-64fdb7f7", "zone": "https://www.googleapis.com/compute/beta/projects/`
PROJECT_ID `/zones/`ZONE `", "operationType": "insert", "targetLink": "https://www.googleapis.com/compute/beta/projects/`PROJECT_ID `/zones/`ZONE `/instances/`INSTANCE_NAME `", "targetId": "2679381553616227357", "status": "RUNNING", "user": "USER_ID ", "progress": 0, "insertTime": "2025-02-10T09:10:10.551-08:00", "startTime": "2025-02-10T09:10:10.551-08:00", "selfLink": "https://www.googleapis.com/compute/beta/projects/`PROJECT_ID `/zones/`ZONE `/operations/operation-1565289606387-58f9f62f5989c-e582f586-6d22f38" "kind": "compute#operation" }