Compute Engine 提供了预定义机器类型,可供您在创建虚拟机实例时使用。预定义机器类型中的 vCPU 数量和内存量是预先设置的,按固定价格计费。 如果预定义虚拟机不能满足您的需求,您可以使用自定义虚拟化硬件设置创建虚拟机实例。具体来说,您可以创建具有自定义 vCPU 数量和内存量的虚拟机实例,实际上就是使用自定义机器类型。只有 N 和 E 机器系列的通用机器家族提供自定义机器类型。自定义机器类型不适用于 C 和 Tau 机器系列。您可以在 N4、N2、N2D、E2 或 N1 机器类型上创建自定义虚拟机。
自定义虚拟机非常适合以下场景:
- 不适合预定义虚拟机类型的工作负载。
- 工作负载需要更高的处理能力或更多的内存,但又不需要更高级别的机器类型所提供的全面升级。
- 具有每 CPU 软件许可费用的工作负载。自定义 vCPU 数量,以避免因未使用的处理能力而产生的许可费用,或匹配可用的软件许可数量。
准备工作
- 阅读机器系列文档。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
Go
如需在本地开发环境中使用本页面上的 Go 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
Java
如需在本地开发环境中使用本页面上的 Java 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
Node.js
如需在本地开发环境中使用本页面上的 Node.js 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
PHP
如需在本地开发环境中使用本页面上的 PHP 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
Python
如需在本地开发环境中使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。 如需了解详情,请参阅身份验证文档中的为本地开发环境设置 ADC。
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 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色可提供创建具有自定义机器类型的虚拟机所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建具有自定义机器类型的虚拟机需要以下权限:
-
为现有虚拟机添加扩展内存:针对虚拟机的
compute.instances.setMachineType
权限 -
创建具有自定义机器类型的虚拟机:
- 针对项目的
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
权限
- 针对项目的
限制
- 如果您的虚拟机具有本地 SSD 磁盘,则无法更改 vCPU 和内存配置。
- 扩展内存适用于 N4、N2、N2D 和 N1 自定义机器类型。预定义机器类型和 E2 自定义机器类型不支持扩展内存。
- 您可以向每种机器类型添加的内存量存在上限。
- 您必须以 256 MB 为增量指定内存。
- 扩展内存不符合基于资源的承诺使用折扣 (CUD) 的条件。
自定义机器类型价格
Google 根据虚拟机使用的 vCPU 数量和内存时长收取自定义虚拟机的使用费用。这与预定义机器类型的计费方式不同。自定义机器类型的按需价格还包含相当于预定义机器类型按需价格 5% 的附加费。
使用自定义机器类型时,如果每个 vCPU 的内存量不超过默认数量,则按照机器家族自定义机器类型的价格收费。E2 自定义机器类型和 E2 共享核心自定义机器类型具有相同的价格方案。
如果您使用您的承诺来运行自定义机器类型,则 Compute Engine 会按承诺价格收取 5% 的附加费。Compute Engine 会根据您运行这些自定义机器类型虚拟机的那部分和持续时间在承诺的基础上收取此附加费。
如需了解相关信息,请参阅各机器系列的虚拟机实例价格。
自定义虚拟机与其他实例一样,最低按 1 分钟收取起步费,但针对自定义机器类型的持续使用折扣的计算方式有所不同。如需了解详情,请参阅自定义虚拟机的持续使用折扣。
扩展内存价格
对于高于默认量的内存,Compute Engine 会根据机器家族扩展自定义内存价格对扩展内存收费。扩展内存的价格不同于低于默认阈值的内存价格。
扩展内存的价格会因区域而异。使用扩展内存运行的实例与其他实例一样,也按 1 分钟收取起步费。扩展内存也符合持续使用折扣的条件。
向机器类型添加扩展内存
默认情况下,每种机器类型都具有特定数量的内存,具体取决于机器系列。对于某些工作负载,此内存量可能不够用。您可以支付额外的费用,为每个 vCPU 提供超出默认限制的更多内存。这称为扩展内存。
借助扩展内存,您可以为自定义机器类型指定内存量,而不受每个 vCPU 的限制。您可以指定扩展内存量(不超过机器系列的限制),而不是使用基于指定 vCPU 数量的默认内存大小。
机器系列 | vCPU 限制 | 内存上限 |
---|---|---|
N4 | 80 | 640 GB |
N2 | 80 | 864 GB |
N2D | 96 | 768 GB |
N1 | 96 | 624 GB |
如果您需要更多内存,请使用一种内存优化机器类型。
确定您是否需要扩展内存
某些工作负载需要超出每个 vCPU 的默认容量的内存,才能实现最佳效果。基于内存中高性能分析数据库的工作负载,包括关系型数据库和 NoSQL 数据库,如 MS SQL Server、MongoDB 和 MemcacheD/Redis,都属于这一类。操作系统和软件堆栈的基于 vCPU 的许可也使得选择最佳虚拟机内存配置对于预定义的机器类型更具挑战性。使用扩展内存,您可以添加虚拟机所需的尽可能多的内存,以实现最佳性价比。
以 GB 或 MB 表示内存
在 Google Cloud 工具和文档中,机器类型的内存以千兆字节 (GB) 为单位计算,其中 1 GB 为 230 个字节。这种计量单位也称为吉比字节 (GiB)。将内存从 GB 转换成 MB 时,1 GB = 1024 MB。
在 API 中,内存必须以 MB 为单位提供。如果您使用 Google Cloud CLI,则可以 GB 或 MB 为单位提供虚拟机的总内存。但是,gcloud CLI 要求内存值必须为整数,因此您不能提供浮点值。例如,如需表示 5.75 GB 内存,请将其转换为以 MB 为单位的数值。在此例中,5.75 GB 为 5888 MB。
创建运行自定义机器类型的虚拟机
在创建自定义虚拟机实例之前,请务必阅读用于创建此机器类型的自定义规范。在 Google Cloud 控制台中,转到创建实例页面。
在机器配置窗格中,执行以下操作:
- 选择您要在其中托管实例的区域和可用区。
- 选择通用。
- 在系列列表中,选择一个机器系列以创建自定义机器;N4、N2、N2D、E2 和 N1 提供自定义机器类型。
- 在机器类型部分中,选择自定义。
- 如需指定实例的 vCPU 数量和内存量,请拖动滑块或在文本框中输入值。在您更改 vCPU 数量和内存量时,控制台会显示实例的预估费用。
可选:指定其他配置选项。如需了解详情,请参阅实例创建期间的配置选项。
要创建并启动该实例,请点击创建。
将 gcloud compute instances create
命令与 --machine-type
选项结合使用来创建自定义机器。
gcloud compute instances create INSTANCE_NAME \
--machine-type=MACHINE_TYPE -NUMBER_OF_VCPUS -AMOUNT_OF_MEMORY_MB
替换以下内容:
- INSTANCE_NAME:实例名称
- MACHINE_TYPE:机器类型,例如 N2
- NUMBER_OF_VCPUS:vCPU 的数量
- AMOUNT_OF_MEMORY_MB:内存大小(以 MB 或 GB 为单位)
以下示例在可用区 us-central1-a
中使用配备了 48 个 vCPU 和 310 GB 内存的 N2 机器类型:
gcloud compute instances create example-instance \
--zone=us-central1-a --machine-type=n2-custom-48-317440
或者,您可以使用以下自定义选项指定自定义机器类型:--custom-cpu
、--custom-memory
、--custom-vm-type
和 --custom-extensions
。如需配置扩展内存(允许您指定比内存与 vCPU 最大比率还要高的内存量),请增加 AMOUNT_OF_MEMORY_MB
的值并将 -ext
附加到机器类型名称中。
gcloud compute instances create INSTANCE_NAME \
--custom-cpu=NUMBER_OF_VCPUS \
--custom-memory=NUMBER_OF_MB \
--custom-vm-type=MACHINE_TYPE \
--custom-extension
替换以下内容:
- INSTANCE_NAME:实例名称
- NUMBER_OF_VCPUS:vCPU 的数量
- NUMBER_OF_MB:内存大小(以 MB 或 GB 为单位)
- MACHINE_TYPE:机器类型,例如 N2
以下示例是具有 48 个 vCPU 和 310 GB 内存的 N2 自定义机器类型(使用 Google Cloud CLI 选项)。
gcloud compute instances create example-instance \
--custom-cpu=48 --custom-memory=317440 --custom-extension --custom-vm-type=n2
如果使用 --custom-memory
选项,请以 GB 或 MB 为单位指定总内存量。该属性必须是整数,因此,如果要指定 0.25 GB 的内存增量,请将该值转换为以 MB 为单位的数值。
对于 E2 共享核心自定义机器类型,请使用相同的 gcloud compute instances create
命令并添加共享核心机器大小:micro
、small
或 medium
。
vCPU 和内存受限。
gcloud compute instances create INSTANCE_NAME \
--machine-type=MACHINE_TYPE -AMOUNT_OF_MEMORY_MB
替换以下内容:
- INSTANCE_NAME:实例名称
- MACHINE_TYPE:E2 small
- AMOUNT_OF_MEMORY_MB:内存大小(以 MB 或 GB 为单位)
以下示例是一个具有 0.5 个 vCPU 和 2.25 GB 内存的 E2 共享核心小型自定义机器类型。
gcloud compute instances create example-instance \
--machine-type=e2-custom-small-2304
- 在 Google Cloud 控制台中,转到虚拟机实例页面。
- 点击创建实例。
- 指定所需的参数。
- 在页面顶部或底部,点击等效代码,然后点击 Terraform 标签页以查看 Terraform 代码。
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Go API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Java API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Node.js API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Python API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
使用 instances.insert
方法构造实例创建请求并指定自定义 machineType
值。请以 MB 为单位提供内存。
- 对于 N1 机器系列,请从自定义开始。
- 对于 E2 共享核心,NUMBER_OF_CPUs 为
micro
、small
或medium
。 - 如需启用扩展内存,请在机器类型末尾添加
-ext
。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
请求正文示例
{
"name": "exampleinstance",
"machineType": "zones/us-central1-a/machineTypes/n2-custom-16-107520",
"disks": [
{
"boot": true,
"diskSizeGb": 10,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-11"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
```
在创建实例期间添加扩展内存
如需创建具有扩展内存的虚拟机实例,请执行以下操作:在 Google Cloud 控制台中,转到创建实例页面。
在机器配置窗格中,执行以下操作:
- 在可用区列表中,选择您要在其中托管此虚拟机的可用区。系列列表已过滤,以仅包含所选可用区中可用的机器类型系列。
- 选择通用。
- 在系列列表中,选择 N4、N2、N2D、N1 以创建自定义机器类型。
- 如需指定 vCPU 数量,请拖动核心数滑块或在相应字段中输入值。
- 如需添加扩展内存,请选择扩展内存。如需指定机器类型的内存量,请拖动内存滑块或在相应字段中输入值。在您修改 vCPU 数量和内存量时,控制台会显示虚拟机的估算费用。
可选:指定其他配置选项。如需了解详情,请参阅实例创建期间的配置选项。
要创建并启动该虚拟机,请点击创建。
将 gcloud compute instances create
命令与 --machine-type
选项结合使用来创建自定义机器。
gcloud compute instances create INSTANCE_NAME \
--machine-type=MACHINE_TYPE -NUMBER_OF_VCPUS -AMOUNT_OF_MEMORY_MB
替换以下内容:
- INSTANCE_NAME:实例名称
- MACHINE_TYPE:机器类型,例如 N2
- NUMBER_OF_VCPUS:vCPU 的数量
- AMOUNT_OF_MEMORY_MB:内存大小(以 MB 或 GB 为单位)
以下示例在可用区 us-central1-a
中使用配备了 48 个 vCPU 和 310 GB 内存的 N2 机器类型:
gcloud compute instances create example-instance \
--zone=us-central1-a --machine-type=n2-custom-48-317440
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Go API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Java API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Node.js API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Python API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
借助 instances.insert
方法,您可以像创建具有自定义内存的实例一样构造您的实例创建请求。指定 machineType
值时,请添加 -ext
(表示扩展内存):
- 对于所有自定义机器类型,请附加
-ext
来扩展内存,直至达到该特定机器家族所描述的上限。
zones/ZONE /machineTypes//MACHINE_TYPE -NUMBER_OF_CPUS -AMOUNT_OF_MEMORY -ext
替换以下内容:
- ZONE:机器位置
- MACHINE_TYPE:机器类型,例如 N2 或 E2 small
- NUMBER_OF_CPUS:vCPU 数量
- AMOUNT_OF_MEMORY_MB:内存大小(以 MB 为单位)
例如,以下代码指定了具有 2 个 vCPU 和 20 GB 内存的 N2 机器类型。请注意,您必须将内存转换为 MB:
zones/ZONE /machineTypes/n2-custom-2-20480-ext
向现有的虚拟机实例添加扩展内存
如需向使用自定义机器类型的现有实例添加更多内存,您必须先停止实例。实例停止后,请完成以下步骤,以向虚拟机添加更多内存。在 Google Cloud 控制台中,转到虚拟机实例页面。
从虚拟机列表中选择您要修改的已停止虚拟机。
点击页面顶部的修改。
在机器配置中,选择通用。
在机器类型部分中,选择自定义。
选择所需的 vCPU 数量。
如需添加扩展内存,请选择扩展内存,然后指定所需的内存量。
保存更改。
使用 gcloud compute instances stop
命令停止虚拟机。然后,将 gcloud compute instances set-machine-type
命令与 --custom-memory
和 --custom-extensions
选项结合使用来修改机器的资源。
保存更改并重启虚拟机。
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Go 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Go API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Java API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Node.js API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
试用此示例之前,请按照《Compute Engine 快速入门:使用客户端库》中的 Python 设置说明进行操作。 如需了解详情,请参阅 Compute Engine Python API 参考文档。
如需向 Compute Engine 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
使用 instances.stop
方法,然后使用 instances.setMachineType
方法修改机器类型资源。
停止实例后,请根据您的更改修改 machineTypes
选项。
{
"name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
... }
替换以下内容:
+ INSTANCE_NAME : The name of the VM
+ ZONE : The zone where your VMs reside
+ MACHINE_TYPE : The name of the VM
后续步骤
- 详细了解机器系列。
- 创建虚拟机后,逐步完成教程以开始使用虚拟机实例。
- 了解如何连接到您的虚拟机实例。