本文档介绍了如何创建灵活启动的虚拟机 (VM) 实例。灵活启动虚拟机最多可运行 7 天,有助于您以折扣价获取 GPU 等高需求资源。这些功能使灵活启动型虚拟机成为运行短时工作负载(例如模型微调和批处理推理)的经济高效的解决方案。
如需详细了解灵活启动虚拟机的关键特征,包括创建此类虚拟机时需要满足的要求和限制,请参阅灵活启动虚拟机简介。
准备工作
-
根据您要使用的机器类型,查看以下配置要求之一:
- 对于加速器优化机器类型(A4X 或 G4 除外),请参阅创建挂接 GPU 的实例概览。
- 对于 H4D 机器类型,请参阅创建使用 Cloud RDMA 的实例。
-
如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
gcloud
-
安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:
gcloud init
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
- Set a default region and zone.
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。
安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:
gcloud init
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得创建灵活启动型虚拟机所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。此预定义角色包含创建灵活启动型虚拟机所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建灵活启动型虚拟机需要以下权限:
-
针对项目的
compute.instances.create
权限 -
使用自定义映像创建虚拟机:针对映像的
compute.images.useReadOnly
权限 -
使用快照创建虚拟机:针对快照的
compute.snapshots.useReadOnly
权限 -
使用实例模板创建虚拟机:针对实例模板的
compute.instanceTemplates.useReadOnly
权限 -
为虚拟机指定子网:针对项目或所选子网的
compute.subnetworks.use
权限 -
为虚拟机指定静态 IP 地址:针对项目的
compute.addresses.use
权限 -
在使用 VPC 网络时为虚拟机分配外部 IP 地址:针对项目或所选子网的
compute.subnetworks.useExternalIp
权限 -
为虚拟机分配旧版网络:针对项目的
compute.networks.use
权限 -
使用旧版网络时为虚拟机分配外部 IP 地址:针对项目的
compute.networks.useExternalIp
权限 -
为虚拟机设置虚拟机实例元数据:针对项目的
compute.instances.setMetadata
权限 -
为虚拟机设置标记:针对虚拟机的
compute.instances.setTags
权限 -
为虚拟机设置标签:针对虚拟机的
compute.instances.setLabels
权限 -
为虚拟机设置要使用的服务账号:针对虚拟机的
compute.instances.setServiceAccount
权限 -
为虚拟机创建新磁盘:针对项目的
compute.disks.create
权限 -
以只读或读写模式挂接现有磁盘:针对磁盘的
compute.disks.use
权限 -
以只读模式挂接现有磁盘:针对磁盘的
compute.disks.useReadOnly
权限
创建灵活启动型虚拟机
如需创建 Flex-start 虚拟机,请选择以下选项之一:
gcloud
如需创建灵活启动型虚拟机,请将
gcloud compute instances create
命令与以下标志搭配使用:--request-valid-for-duration
标志--provisioning-model=FLEX_START
标志--instance-termination-action
标志--max-run-duration
标志--maintenance-policy=TERMINATE
标志--reservation-affinity=none
标志
如需创建灵活启动型虚拟机,请运行以下命令:
gcloud compute instances create VM_NAME \ --machine-type=MACHINE_TYPE \ --zone=ZONE \ --request-valid-for-duration=VALID_FOR_DURATION \ --provisioning-model=FLEX_START \ --instance-termination-action=TERMINATION_ACTION \ --max-run-duration=RUN_DURATION \ --maintenance-policy=TERMINATE \ --reservation-affinity=none
替换以下内容:
VM_NAME
:新虚拟机的名称。MACHINE_TYPE
:要用于 Flex-start 虚拟机的机器类型。如果您指定了 G2 或 N1 机器类型,请考虑以下事项:对于 G2 机器类型,您可以选择指定要用于图形密集型工作负载的 NVIDIA RTX 虚拟工作站 (vWS)。为此,请在命令中添加
--accelerator
标志,如下所示:--accelerator=count=VWS_ACCELERATOR_COUNT,type=nvidia-l4-vws
将
VWS_ACCELERATOR_COUNT
替换为工作负载所需的 NVIDIA RTX vWS 数量。对于 N1 机器类型,您必须指定要挂接到虚拟机的 GPU 的数量和类型。否则,创建虚拟机会失败。如需将 GPU 挂接到 N1 虚拟机,请在命令中添加
--accelerator
标志,如下所示:--accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
替换以下内容:
NUMBER_OF_ACCELERATORS
:要挂接到 N1 虚拟机的 GPU 数量。ACCELERATOR_TYPE
:N1 虚拟机支持的 GPU 模型。
ZONE
:您要在其中创建虚拟机的可用区。 如需验证您指定的机器类型在您要创建虚拟机的可用区中是否可用,请参阅可用区域和可用区。VALID_FOR_DURATION
:等待预配所请求资源的最长时间,格式为数字后跟单位(s
、m
、h
或d
)。例如,值30m
表示 30 分钟的时间,值1h2m3s
表示 1 小时 2 分 3 秒的时间。根据工作负载的可用区要求,我们建议您指定以下时长之一,以提高虚拟机创建请求的成功率:如果您的工作负载要求您在特定可用区中创建虚拟机,请指定 90 秒 (
90s
) 到 2 小时 (2h
) 之间的时长。时长越长,您获得资源的机会就越大。如果虚拟机可以在区域内的任何可用区中运行,请指定零秒的时长 (
0s
)。此值表示 Compute Engine 仅在资源立即可用的情况下才分配资源。如果创建请求因资源不可用而失败,请在其他可用区中重试该请求。
TERMINATION_ACTION
:指示在虚拟机运行时长结束时,是停止还是删除虚拟机。请指定以下某个值:如需停止虚拟机,请执行以下操作:
STOP
如需删除虚拟机,请执行以下操作:
DELETE
RUN_DURATION
:虚拟机在被 Compute Engine 删除之前运行的最长时间,格式为数字后跟单位(s
、m
、h
或d
)。该值必须介于 10 分钟和 7 天之间。
REST
如需创建灵活启动的虚拟机,请向
instances.insert
方法发出POST
请求。在请求正文中,添加以下字段:params.requestValidForDuration
字段。设置为
FLEX_START
的scheduling.provisioningModel
字段。scheduling.instanceTerminationAction
字段。scheduling.maxRunDuration
字段。设置为
TERMINATE
的scheduling.onHostMaintenance
字段。将
reservationAffinity.consumeReservationType
设置为NO_RESERVATION
。
如需创建灵活启动型虚拟机,请发出
POST
请求,如下所示:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot": true } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "params": { "requestValidForDuration": { "seconds": VALID_FOR_DURATION } }, "scheduling": { "provisioningModel": "FLEX_START", "instanceTerminationAction": "TERMINATION_ACTION", "maxRunDuration": { "seconds": RUN_DURATION }, "onHostMaintenance": "TERMINATE" }, "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" } }
替换以下内容:
PROJECT_ID
:要在其中创建虚拟机的项目的 ID。ZONE
:您要在其中创建虚拟机的可用区。 如需验证某个机器类型在您要创建虚拟机的可用区中是否可用,请参阅可用区域和可用区。VM_NAME
:新虚拟机的名称。MACHINE_TYPE
:要用于 Flex-start 虚拟机的机器类型。如果您指定了 G2 或 N1 机器类型,请考虑以下事项:对于 G2 机器类型,您可以选择指定要用于图形密集型工作负载的 NVIDIA RTX 虚拟工作站 (vWS)。为此,请在请求正文中添加
guestAccelerators
字段,如下所示:"guestAccelerators": [ { "acceleratorCount": VWS_ACCELERATOR_COUNT, "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/nvidia-l4-vws" } ]
将
VWS_ACCELERATOR_COUNT
替换为工作负载所需的 NVIDIA RTX vWS 数量。对于 N1 机器类型,您必须指定要挂接到虚拟机的 GPU 的数量和类型。否则,创建虚拟机会失败。如需将 GPU 挂接到 N1 虚拟机,请在请求正文中添加
guestAccelerators
字段,如下所示:"guestAccelerators": [ { "acceleratorCount": ACCELERATOR_COUNT, "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/ACCELERATOR_TYPE" } ]
替换以下内容:
NUMBER_OF_ACCELERATORS
:要挂接到 N1 虚拟机的 GPU 数量。ACCELERATOR_TYPE
:N1 虚拟机支持的 GPU 模型。
IMAGE_PROJECT
:映像所属的映像项目;例如debian-cloud
。如需详细了解支持的映像项目,请参阅公共映像。IMAGE
:指定以下其中一项:VALID_FOR_DURATION
:等待虚拟机完成预配的最长时间(以秒为单位)。根据工作负载的可用区要求,我们建议您指定以下时长之一,以提高虚拟机创建请求的成功率:如果您的工作负载要求您在特定可用区中创建虚拟机,请指定 90 秒 (
90
) 到 2 小时 (7200
) 之间的时长。时长越长,您获得资源的机会就越大。如果虚拟机可以在区域内的任何可用区中运行,请指定零秒的时长 (
0
)。此值表示 Compute Engine 仅在资源立即可用的情况下才分配资源。如果创建请求因资源不可用而失败,请在其他可用区中重试该请求。
TERMINATION_ACTION
:指示在虚拟机运行时长结束时,是停止还是删除虚拟机。请指定以下某个值:如需停止虚拟机,请执行以下操作:
STOP
如需删除虚拟机,请执行以下操作:
DELETE
RUN_DURATION
:虚拟机在被 Compute Engine 删除之前运行的最长时间(以秒为单位)。该值必须介于 600 秒(10 分钟)到 604,800 秒(7 天)之间。
后续步骤
自行试用
如果您是 Google Cloud 新手,请创建一个账号来评估 Compute Engine 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
免费试用 Compute Engine如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-09-23。
-