创建机器映像


使用机器映像可以存储 Compute Engine 上运行的虚拟机实例的多个磁盘的所有配置、元数据、权限和数据。用于创建机器映像的虚拟机实例称为“来源虚拟机实例”。

如需了解何时以及如何使用机器映像,请参阅机器映像

本文档介绍了通过来源虚拟机实例创建机器映像的步骤。

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

    REST

    如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

      安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init

局限和限制

  • 您可以跨项目共享机器映像。不过,共享 VPC 网络不受支持。
  • 您最多可以每 10 分钟创建一个机器映像。如果您想要发出大量根据实例创建多个机器映像的请求,最多可以在 60 分钟内发出 6 个请求。
  • 您可以使用 Cloud Key Management Service (Cloud KMS)CSEK(客户提供的加密密钥)来保护机器映像。加密密钥用于保护磁盘的内容。不过,元数据不受保护。
  • 如果您使用 CSEK 来保护机器映像,则在生成机器映像期间,系统会存储所有磁盘数据的完整副本。在其他所有情况下,磁盘数据会存储在差分副本中。
  • 您无法通过以下来源虚拟机创建机器映像:

    • 挂接的磁盘超过 200 TB。
    • 没有挂接任何磁盘。
    • 挂接了任何 Hyperdisk Extreme 磁盘。

机器映像不支持的实例和磁盘属性

通过虚拟机实例创建机器映像或通过机器映像创建虚拟机实例时,系统不会保留或恢复以下实例和磁盘属性:

  • disks.architecture
  • disks.description
  • disks.labels
  • disks.locked
  • disks.multiWriter
  • disks.onUpdateAction
  • disks.provisionedIops
  • disks.shieldedInstanceInitialState
  • disks.sourceImage
  • disks.sourceImageEncryptionKey
  • disks.sourceInstantSnapshot
  • disks.sourceSnapshot
  • disks.sourceSnapshotEncryptionKey
  • privateIpv6GoogleAccess
  • resourceManagerTags
  • resourcePolicies
  • secure_tag
  • shieldedInstanceConfig

通过虚拟机创建机器映像

您可以使用 Google Cloud 控制台Google Cloud CLIREST 创建机器映像。

如需创建机器映像,您需要以下信息:

  • 您要创建的机器映像的名称。
  • 来源虚拟机实例的名称。
  • 来源虚拟机实例所在的可用区。
  • 可选的说明。
  • 可选的 storageLocation。 如果您没有指定位置,则默认存储位置为来源虚拟机实例的多区域 Cloud Storage 位置
  • 可选的加密密钥。您可以选择 Google 管理的密钥、Cloud Key Management Service (Cloud KMS) 密钥或 CSEK。如果未指定加密密钥,则系统会使用 Google 管理的密钥对机器映像进行加密。
  • 如果您想使用机器映像进行实例克隆和快照,请先移除实例特有的操作系统和应用信息,然后再通过实例生成机器映像。例如,对于 Windows 虚拟机实例,请使用 GCESysprep 为复制准备系统。

控制台

  1. 在 Google Cloud 控制台中,转到机器映像页面。

    转到机器映像

  2. 点击创建机器映像

  3. 为您的机器映像指定名称

  4. 可选:提供说明

  5. 选择来源虚拟机实例

  6. 可选:指定机器映像的存储位置。选择多区域单区域存储空间。如需详细了解位置,请参阅机器映像存储位置

  7. 可选:选择加密方法。

  8. 点击创建

gcloud

使用 gcloud compute machine-images create 命令可通过实例创建机器映像。

gcloud compute machine-images create MACHINE_IMAGE_NAME \
    --source-instance=SOURCE_VM_NAME

请替换以下内容:

  • MACHINE_IMAGE_NAME:您要创建的机器映像的名称。
  • SOURCE_VM_NAME:您要通过其创建映像的来源虚拟机实例的名称。

示例

例如,您可以使用以下 gcloud 命令通过一个名为 my-instance 的源实例创建一个名为 my-machine-image 的机器映像:

gcloud compute machine-images create my-machine-image  \
    --source-instance=my-instance

此过程需要几分钟的时间。创建机器映像后,您会获得类似于以下内容的输出:

Created [https://www.googleapis.com/compute/v1/projects/project-12345/global/machineImages/my-machine-image].
NAME               STATUS
my-machine-image   READY

REST

在 API 中,构建对 machineimages.insert 方法的 POST 请求。在请求正文中,添加以下 POST 请求:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/machineImages

{
  "name": "MACHINE_IMAGE_NAME",
  "sourceInstance": "SOURCE_INSTANCE_URL"
}

请替换以下内容:

  • PROJECT_ID项目 ID
  • MACHINE_IMAGE_NAME:您要创建的机器映像的名称。
  • SOURCE_INSTANCE_URL:您要用于创建机器映像的来源虚拟机实例的完整网址或部分网址。例如,如果您在名为 myProject 的项目中有一个名为 my-instance 的源实例。以下网址有效:

    • https://www.googleapis.com/compute/v1/projects/myProject/global/instances/my-instance
    • projects/myProject/global/instances/my-instance
    • global/instances/my-instance

后续步骤