自备许可

本页面介绍了如何在 Google Cloud 中使用自带许可 (BYOL)。 在部署具备现有许可的映像之前,请先阅读自带许可的概览。

要将具有专用硬件要求的物理核心或物理处理器许可部署到 Google Cloud 中,请使用单租户节点。在单租户节点上,您的虚拟机可在专用于您的项目的硬件上运行,并且物理核心使用受限。

部署具备现有许可的映像时必须满足以下要求:

  1. 导入虚拟磁盘文件并创建映像
  2. 创建单租户节点模板
  3. 基于节点模板创建单租户节点组
  4. 使用导入的虚拟磁盘文件在节点组上预配虚拟机

如果您需要支持服务或对许可有疑问,请联系您的许可转销商。如果您需要支持服务或对将具备现有许可的映像部署到 Google Cloud 有疑问,请联系 Google Cloud 支持团队

准备工作

  1. 申请更多 CPU 配额:确保您有足够的 CPU 配额来支持您的节点组。您需要为每个不同的节点类型申请更多配额,如果您购买了承诺使用折扣,则需要为承诺使用的 CPU 申请增加配额。根据您的设置和工作负载的需求,您可能还需要为虚拟机或 IP 地址申请配额调整。

  2. 启用 Cloud Build API:您必须启用 Cloud Build API,才能导入操作系统映像。启用此 API 时,Compute Engine 会向您的项目授予相应的 IAM 角色,以便您可以将映像导入项目。要列出向您的项目授予的角色,请使用 gcloud projects get-iam-policy 命令。如需了解如何向您的项目授予角色,请参阅管理对 Compute Engine 资源的访问权限

  3. 启用 Cloud Logging API:如果您的许可协议要求您跟踪物理服务器使用情况,请启用此 API。启用此 API 后,您可以使用 BigQuery(Google 强烈推荐)导入和查看服务器使用情况信息,例如物理核心数。如需了解如何确定物理核心数,请参阅确定服务器使用情况

导入虚拟磁盘文件并创建映像

在为虚拟机导入虚拟磁盘文件之前,请从虚拟机内下载并运行预检工具,以确认文件中不存在不兼容性

要使用您自己的许可启动虚拟机,请导入一个包含您要使用的操作系统的虚拟磁盘。您可以使用 gcloud 命令行工具导入文件,此工具支持从 Cloud Storage 存储分区和本地工作站导入虚拟磁盘。

导入虚拟磁盘文件时,映像导入工具会将映像文件上传到 Cloud Storage,并在必要时创建新的 Cloud Storage 存储分区。然后,导入工具会将文件复制到 Compute Engine 并通过虚拟磁盘文件创建映像。

如果您正在本地工作站上托管虚拟磁盘文件,则映像导入工具会将文件上传到 Cloud Storage 存储分区,然后将映像导入 Compute Engine。

如需映像导入工具的完整说明,请参阅导入虚拟磁盘

gcloud

  1. 运行以下命令以导入虚拟磁盘文件并创建映像:

    gcloud compute images import image-name  --source-file file-name  --os os
    

    替换以下内容:

    • image-name:为映像指定的名称。

    • file-name:本地托管或存储在 Cloud Storage 中的虚拟磁盘文件。

      • 如果您的虚拟磁盘是本地文件:请使用绝对路径或相对路径。在这种情况下,上传操作可能需要数十分钟才会运行,具体取决于虚拟磁盘的大小和网络连接的速度。

      • 如果您的虚拟磁盘文件存储在 Cloud Storage 中:请以 gs://bucket-name/object-name 格式指定文件的完整路径,并且该文件必须存在于导入过程所使用项目所在的存储分区中。

    • ossource-file 的操作系统。必须是以下其中一项:

      • rhel-6-byol
      • rhel-7-byol
      • rhel-8-byol
      • sles-12-byol
      • sles-15-byol
      • windows-2012-byol
      • windows-2012r2-byol
      • windows-2016-byol
      • windows-2019-byol
      • windows-7-x64-byol
      • windows-7-x86-byol
      • windows-8-x64-byol
      • windows-8-x86-byol
      • windows-10-x64-byol
      • windows-10-x86-byol
  2. 创建映像后,您可以与项目或组织外部的用户共享映像

    gcloud projects add-iam-policy-binding project-id  --member user:user-email  --role roles/compute.imageUser
    

    替换以下内容:

    • project-id:要授予访问权限的映像所在项目的项目 ID。
    • user-email:要与其共享映像的用户的电子邮件。

    如需了解如何访问共享映像,请参阅访问共享映像

  3. 存储在 Cloud Storage 上的文件和 Compute Engine 中的映像会产生费用。确认映像已正确导入并且已作为虚拟机正常启动后,您可以从 Cloud Storage 中删除虚拟磁盘文件。

创建单租户节点模板

创建节点模板作为您的节点组的基础。

gcloud

gcloud compute sole-tenancy node-templates create template-name --node-type node-type --region region --server-binding server-binding

替换以下内容:

  • template-name:您要创建的节点模板的名称。
  • node-type:此模板的节点类型。例如,选择 n2-node-80-640 节点类型可创建一个具有 80 个 vCPU 和 624 GB 内存的节点。

  • region:要在其中创建节点模板的区域。

  • server-binding:使用此模板的节点的服务器绑定政策。根据您的许可类型,设置为以下其中一项:

    • restart-node-on-any-server
    • restart-node-on-minimal-servers

API

POST https://www.googleapis.com/compute/beta/projects/project-id/regions/region/nodeTemplates

{
   "name": "template-name",
   "nodeType": "node-type"
   "nodeAffinityLabels": {
      "key": "value"
   },
   "serverBinding":
   {
     "type": "server-binding"
   }
}

替换以下内容:

  • project-id:项目的 ID。
  • template-name:您要创建的节点模板的名称。
  • node-type:此模板的节点类型。例如,选择 n2-node-80-640 节点类型可创建一个具有 80 个 vCPU 和 624 GB 内存的节点。

  • key:value:以英文逗号分隔的亲和性标签列表。请注意,只有在创建节点模板时才会设置亲和性标签

  • region:要在其中创建节点模板的区域。

  • server-binding:使用此模板的节点的服务器绑定政策。根据您的许可类型,设置为以下其中一项:

    • RESTART_NODE_ON_ANY_SERVER
    • RESTART_NODE_ON_MINIMAL_SERVER

通过节点模板创建节点组

通过之前创建的节点模板创建节点组,并指定虚拟机维护政策

gcloud

gcloud beta compute sole-tenancy node-groups create group-name  --node-template template-name  --target-size group-size  --zone zone  --maintenance-policy maintenance-policy

替换以下内容:

  • group-name:要创建的节点组的名称。
  • template-name:用以创建节点组的节点模板的名称。
  • group-size:节点组的初始大小。
  • zone:要在其中创建节点组的地区。
  • maintenance-policy:节点组的维护政策。设置为以下其中一项:
    • migrate-within-node-group
    • restart-in-place
    • default

API

POST https://www.googleapis.com/compute/beta/projects/project-id/zones/zone/nodeGroups?initialNodeCount=target-size

{
  "nodeTemplate": "/regions/region/nodeTemplates/template-name",
  "name": "group-name",
  "maintenancePolicy": "maintenance-policy"
}

替换以下内容:

  • project-id:要在其中创建节点组的项目的 ID。
  • zone:要在其中创建节点组的地区。必须和您使用的节点模板位于同一区域中。
  • target-size:要在组中创建的节点数。
  • region:节点模板所在的区域。
  • template-name:您要用于创建此组的节点模板的名称。
  • group-name:新节点组的名称。
  • maintenance-policy:节点组的维护政策。设置为以下其中一项:
    • MIGRATE_WITHIN_NODE_GROUP
    • RESTART_IN_PLACE
    • DEFAULT

在节点组上预配虚拟机

在节点组上预配虚拟机,并指定虚拟机的重启行为。如果您先前为您的节点组指定在维护事件期间重启同一节点组内的托管虚拟机,则在该节点组上创建新虚拟机实例时,请指定新虚拟机执行以下操作之一:

  • 由于维护事件,在重启后迁移。
  • 在同一主机上终止然后重启。如果同一主机不可用,则预配新服务器,并且不会重复使用之前主机的物理 ID。

gcloud

gcloud compute instances create vm-name  --custom-cpu num-cpus  --custom-memory gb-memory  --image image-name  --zone zone  --node-group group-name  restart-behavior  --maintenance-policy maintenance-policy

替换以下内容:

  • vm-name:您要创建的虚拟机的名称。
  • num-cpus:新虚拟机上的 CPU 数量。
  • gb-memory:新虚拟机上的内存量(以 GB 为单位)。
  • image-name:用以创建此虚拟机的映像的名称。
  • zone:要在其中创建虚拟机的地区。
  • group-name:要在其中预配虚拟机的节点组的名称。
  • restart-behavior:此虚拟机的重启行为。 指定以下其中一项:
    • --restart-on-failure
    • --no-restart-on-failure
  • maintenance-policy:维护事件期间的虚拟机行为。根据具体场景指定以下其中一项:
    • MIGRATE
    • TERMINATE

API

POST https://www.googleapis.com/compute/v1/projects/project-id/zones/vm-zone/instances

{
  "machineType": "/zones/machine-type-zone/machineTypes/custom-num-cpus-mb-memory",
  "name": "vm-name",
  "scheduling": {
    "nodeAffinities": [
      {
        "key": "node-group",
        "operator": "IN",
        "values": [
        "group-name"
        ]
      }
    ],
    "onHostMaintenance": "maintenance-policy",
    "automaticRestart": "restart-behavior"
  },
  "networkInterfaces": [
    {
     "network": "/global/networks/network",
     "subnetwork": "/regions/region/subnetworks/subnetwork"
    }
  ],
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "/projects/image-project/global/images/family/image-family"
       }
    }
  ]
}

替换以下内容:

  • project-id:要在其中创建虚拟机的项目的 ID。
  • vm-zone:要在其中创建虚拟机的地区。
  • machine-type-zone:包含机器类型的地区。
  • num-cpus:新虚拟机上的 CPU 数量。
  • mb-memory:新虚拟机上的内存量(以 MB 为单位)。
  • vm-name:新虚拟机的名称。
  • group-name:要在其中创建此虚拟机的节点组的名称。
  • maintenance-policy:此虚拟机的维护行为。根据您的场景,设置为以下其中一项:
    • MIGRATE
    • TERMINATE
  • restart-behavior:此虚拟机的重启行为。 默认值为 true
  • network:虚拟机所连接网络的名称。
  • subnetwork:虚拟机所连接子网的名称。
  • image-project:包含来源映像的映像项目。
  • image-family:来源映像的映像系列。

后续步骤