自备许可


本文档介绍了 Google Cloud 如何支持在 Compute Engine 中使用具有专用硬件要求的自带许可 (BYOL)。在尝试将具备现有许可的映像引入 Google Cloud 之前,请查看您的许可条款及条件。

如果自带具有专用硬件要求的现有物理核心或物理处理器许可,则需要您自带媒体,并在与您的许可相符的硬件配置(例如单租户节点)上运行该媒体。您可以在任何支持单租户节点的区域中引入具备现有许可的映像;虽然您无需为引入具备现有许可的映像支付额外的费用,但仍必须根据您的协议支付许可费用。

许可场景(例如与具有 RHEL 或 SLES 的 Linux BYOS 相关的许可)以及 Microsoft 应用不需要单租户节点。如果您正在考虑自备来自 Microsoft 应用(例如 SharePoint Server 和 SQL Server)的许可,请使用 Microsoft 许可移动性

单租户节点是专门用于托管您项目的虚拟机 (VM) 实例的物理服务器。您可以配置单租户节点来支持各种工作负载要求,例如最大限度地减少物理服务器和核心数量的要求。请参阅您的许可协议,以确定哪些配置选项最适合您的工作负载。

为了支持自带许可并帮助您管理与您的许可相关的合规性要求,Google Cloud 提供了执行以下操作的相应工具:导入映像,使用单租户节点管理专用硬件上的虚拟机,最大限度地减少物理核心使用量,以及跟踪物理核心使用量以用于报告。

如需将具备现有许可的映像引入 Google Cloud,您必须执行以下操作:

  1. 根据您的许可协议准备映像。

  2. 激活您的许可。

  3. 导入虚拟磁盘文件并通过这些磁盘文件创建映像。

  4. 创建单租户节点模板。

  5. 根据节点模板创建单租户节点组。

  6. 使用导入的虚拟磁盘文件在该节点组上预配虚拟机。

  7. 跟踪虚拟机的许可使用情况。为了帮助您报告许可使用情况,Google 提供了一些工具来帮助您跟踪许可使用情况以及物理核心和处理器使用情况

  8. 向您的供应商报告许可使用情况。

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

准备工作

  • 查看节点组主机维护政策:对于自带许可 (BYOL),有两种主机维护政策选项可最大限度地减少用于许可的物理服务器数量。这些选项是 restart-in-placemigrate-within-node-group
  • 申请更多 CPU 配额:新项目获得的 CPU 配额为 72。请确保您有足够的 CPU 配额来支持您的节点组。例如,n1-node-96-624 节点类型包含 96 个 CPU,如果节点组使用最少数量的节点 (2),则 CPU 配额必须至少为 192。根据您的设置和工作负载的需求,您可能还需要为虚拟机或 IP 地址请求配额调整。
  • 启用 Cloud Build API:您必须启用 Cloud Build API,才能导入操作系统映像。启用此 API 时,Compute Engine 会向您的项目授予相应的 IAM 角色,以便您可以将映像导入项目。要列出向您的项目授予的角色,请使用 gcloud projects get-iam-policy 命令。如需了解如何向您的项目授予角色,请参阅管理对 Compute Engine 资源的访问权限
  • 启用 Cloud Logging API:如果您的许可协议要求您跟踪物理服务器使用情况,请启用此 API。启用此 API 后,您可以使用 BigQuery(Google 强烈推荐)导入和查看服务器使用情况信息,例如物理核心数。如需了解如何确定物理核心数,请参阅分析单租户节点使用率
  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

通过离线虚拟磁盘导入和创建映像

如需为虚拟机预配您的现有许可,您必须自备媒体。 基于付费映像的映像不符合自带许可 (BYOL) 的条件,因为付费映像需要 Google 的随用随付许可。如需了解高级映像,请参阅操作系统详细信息

如果您的本地环境中已有包含您所需软件配置或许可的虚拟磁盘(黄金磁盘或黄金映像),则导入虚拟磁盘工具可帮助您执行以下操作:

  1. 使用受支持的操作系统导入自定义虚拟磁盘,并根据这些磁盘创建映像。

  2. 设置适当的许可配置。

  3. 安装与 Google Cloud 兼容所需的软件包和驱动程序。

在为虚拟机导入虚拟磁盘文件之前,请从虚拟机内下载并运行预检工具,以确认文件中不存在不兼容性。此外,由于来自第三方的软件可能会干扰 Compute Engine 驱动程序的安装,因此 Google 建议您在导入映像前先移除第三方软件。

要使用您自己的许可启动虚拟机,请导入一个包含您要使用的操作系统的虚拟磁盘。您可以从 Cloud Storage 存储桶和本地工作站导入虚拟磁盘。从本地工作站导入虚拟磁盘文件时,映像导入工具会将映像文件上传到 Cloud Storage,并在必要时创建新的 Cloud Storage 存储桶。然后,导入工具会将该映像文件复制到 Compute Engine 并通过虚拟磁盘文件创建可启动映像。

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

控制台

  1. 转到映像页面。

    转到“映像”

  2. 点击创建映像

  3. 为映像指定名称。

  4. 来源下,选择虚拟磁盘(VMDK、VHD)

  5. Cloud Storage 文件下,选择浏览并浏览到要导入的映像的 Cloud Storage 位置。

  6. 虚拟磁盘上的操作系统下,选择要导入的映像的操作系统。

  7. 确保安装客机软件包处于选中状态,以便要导入的映像可启动。

  8. 展开许可密钥选项。在操作系统许可下,选择使用您自己的许可密钥

  9. 点击创建以导入映像。

gcloud

运行 gcloud compute images import 可以导入虚拟磁盘文件并通过该虚拟磁盘文件创建磁盘映像:

gcloud compute images import IMAGE_NAME \
    --source-file VMDK_NAME \
    --byol

请替换以下内容:

  • IMAGE_NAME:为通过虚拟磁盘文件创建的映像指定的名称。
  • VMDK_NAME:要用于导入和创建映像的虚拟磁盘的名称。您可以从以下位置导入 VMDK 文件:

    • 本地文件:如果要从本地文件导入,请使用该文件的绝对路径或相对路径。根据虚拟磁盘的大小和网络连接的速度,上传操作可能需要运行几十分钟。
    • Cloud Storage:如果从 Cloud Storage 导入,Cloud Storage 存储桶必须与您导入虚拟文件位于同一项目中磁盘,并且您必须将文件的完整路径指定为 gs://BUCKET_NAME/OBJECT_NAME。将 BUCKET_NAME 替换为 Cloud Storage 存储桶的名称,将 OBJECT_NAME 替换为 Cloud Storage 对象的名称。

激活许可

在确认您导入的是兼容的操作系统后,您需要负责检查您的许可协议是否允许您自带许可,以及您是否有权使用 Google 提供的客机操作系统映像和许可导入环境。此外,您还需要负责根据您的许可协议为导入操作准备客机操作系统映像。

如需激活许可,请使用具有多个激活密钥 (MAK) 的启动脚本,或配置对组织的 Microsoft 密钥管理服务的访问权限。您无法向已具有 Compute Engine 许可服务器的现有许可激活映像。

导入映像并激活许可后,请根据导入的映像将虚拟机预配到单租户节点上。

创建单租户节点模板

导入映像后,创建单租户节点模板。您将使用此节点模板创建在其中运行映像的单租户节点组。

节点模板页面不会列出模板的区域和可用区,但必须在您创建节点模板所在区域内的可用区中创建节点组。如需创建模板,必须先创建节点组,但只需完成直到选择区域和可用区为止的步骤。之后,您可以根据需要创建模板,而无需继续创建节点组(如果您不想创建的话)。

您可以在创建模板时,在单租户节点模板中设置节点亲和性标签。

控制台

  1. 转到单租户节点页面。

    转到“单租户节点”

  2. 点击创建节点组

  3. 为节点组输入名称

  4. 为节点组选择区域可用区

    记下您使用的区域和可用区。当您稍后创建基于此节点模板的节点组时,节点组必须位于您创建节点模板的区域内的可用区中。

  5. 节点模板属性下,选择创建节点模板

  6. 创建节点模板对话框中,指定名称节点类型本地 SSDGPU 加速器

  7. CPU 过度使用下,选择是否启用 CPU 过度使用。

  8. 可选:在亲和性标签下,点击添加亲和性标签,将键值对添加为节点亲和性标签

  9. 点击创建以完成节点模板的创建。

  10. 点击取消以取消创建节点组。

gcloud

使用 gcloud compute sole-tenancy node-templates create 可以创建单租户节点模板。

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
    --node-type NODE_TYPE \
    --region REGION

替换以下内容:

  • TEMPLATE_NAME:要创建的节点模板的名称。
  • NODE_TYPE:节点组中的节点的单租户节点类型。节点组中的所有节点都相同,并通过节点模板指定的参数创建。
  • REGION:要在其中创建节点模板的区域。

REST

使用 nodeTemplates.insert 可以创建单租户节点模板。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/nodeTemplates

{
   "name": "TEMPLATE_NAME",
   "nodeType": "NODE_TYPE"
   "nodeAffinityLabels": {
      "KEY": "VALUE"
   }
}

请替换以下内容:

  • PROJECT_ID:您的项目的 ID。
  • REGION:要在其中创建节点模板的区域。
  • TEMPLATE_NAME:要创建的节点模板的名称。
  • NODE_TYPE:节点组中的节点的单租户节点类型。节点组中的所有节点都相同,并通过节点模板指定的参数创建。
  • "KEY": "VALUE":以英文逗号分隔的亲和性标签(表示为键值对)列表。您只能在创建节点模板时为节点模板指定亲和性标签。

创建单租户节点组

如需根据节点模板创建节点组,节点组必须位于您创建节点模板所在区域内的可用区中。单租户节点组会继承单租户节点模板指定的属性。单租户节点组具有您必须指定的其他值。对于自带许可 (BYOL),请根据许可要求考虑主机维护政策的不同选项:

  • 如果许可是按物理核心分配的,请使用 restart-in-placemigrate-within-node-group 主机维护政策,以最大限度地减少使用的物理服务器数量。
  • 如果许可根据用户/设备分配,模型通常用于虚拟桌面许可,则使用 default 主机维护政策。这些许可并非按物理核心分配,因此不需要特殊的主机维护政策来限制物理服务器用量。

控制台

  1. 转到单租户节点页面。

    转到“单租户节点”

  2. 点击创建节点组

  3. 节点组属性下,输入节点组的名称

  4. 为节点组选择区域可用区

    如果您在该区域或可用区有可用的模板,则在您点击继续后,模板将列在节点模板属性下。

  5. 点击继续

  6. 节点模板属性下,选择节点组所基于的节点模板。节点组必须位于您创建节点模板所在区域内的可用区中,因此,在为节点组选择模板时,请从包含您要创建节点组所在可用区的区域中选择模板。如果不存在节点模板,您可以创建节点模板

  7. 点击继续

  8. 配置自动扩缩下,将自动扩缩模式设置为下列值之一。如需了解详情,请参阅自动扩缩节点组

    • 开启:让系统自动向节点组添加节点或从中移除节点。
    • 仅横向扩容:在需要额外容量时向节点组添加节点。
    • 关闭:手动管理节点组的大小。
  9. 指定节点组的节点数下限。如果您启用了节点组自动扩缩器,请指定节点组的大小范围(最小和最大节点数),或指定该组的节点数。您可以稍后手动更改任一值。

  10. 点击继续

  11. 可选:在配置维护设置下,将维护政策设置为以下值之一。借助维护政策,您可以配置节点组上的虚拟机在主机维护事件期间的行为。如需了解详情,请参阅主机维护政策

    • 默认
    • 就地重新启动
    • 在节点组内迁移
  12. 点击创建

gcloud

使用 gcloud compute sole-tenancy node-groups create命令 可以创建单租户节点组。

gcloud 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:节点组的维护政策。将维护政策设为以下某个值。如果未设置任何值,则使用 default 作为维护政策。

    • default
    • migrate-within-node-group
    • restart-in-place

REST

使用 nodeGroups.insert 可以创建单租户节点组。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups?initialNodeCount=GROUP_SIZE

{
  "nodeTemplate": "/regions/REGION/nodeTemplates/TEMPLATE_NAME",
  "name": "GROUP_NAME",
  "maintenancePolicy": "MAINTENANCE_POLICY"
}

替换以下内容:

  • PROJECT_ID:要在其中创建节点组的项目的 ID。
  • ZONE:要在其中创建节点组的可用区。此项必须与节点模板位于同一区域。
  • GROUP_SIZE:节点组的初始大小。节点组自动扩缩器会自动管理单租户节点组的大小,您也可以手动管理大小。
  • REGION:节点模板所在的区域。
  • TEMPLATE_NAME:要根据其创建节点组的节点模板的名称。
  • GROUP_NAME:要创建的单租户节点组的名称。
  • MAINTENANCE_POLICY:节点组的维护政策。将维护政策设为以下某个值。如果未设置任何值,则使用 DEFAULT 作为维护政策。

    • DEFAULT
    • RESTART_IN_PLACE
    • MIGRATE_WITHIN_NODE_GROUP

预配单租户虚拟机

在节点组上预配虚拟机并指定其主机维护政策。请注意以下要求:

  • 如需在具有 restart-in-place 主机维护政策的节点组中预配,请确保虚拟机具有主机维护选项的值 TERMINATE
  • 如需在具有 migrate-within-node-group 维护政策的节点组中预配,请确保虚拟机以具有 node-group-name 亲和性标签的单个节点组为目标,并且它不是以具有 node-name 亲和性标签的单个节点为目标。任何类型的主机维护选项都有效,但建议使用 MIGRATE

控制台

如果您在模板中有节点亲和性标签,则可以使用代管式实例组 (MIG) 创建多个虚拟机,并在单租户节点设置下指定节点亲和性标签,或者通过节点组详细信息页面创建各个虚拟机:

  1. 转到单租户节点页面。

    转到“单租户节点”

  2. 点击要在其中预配虚拟机的节点组的名称

  3. 通过执行以下操作之一可以在单租户节点上创建虚拟机:

    • 如需在单租户节点组中的任意位置创建虚拟机,请点击创建实例
    • 如需在特定单租户节点上创建虚拟机,请点击单租户节点组的名称,然后点击单租户节点的名称,再点击创建实例
  4. 配置单租户虚拟机。由于您已选择节点组或特定节点,因此区域可用区节点亲和性标签已经由模板指定。

  5. 通过指定机器系列系列机器类型来选择机器配置。选择与单租户节点类型对应的系列

  6. 为单租户虚拟机选择启动磁盘,即之前导入的虚拟磁盘映像。

  7. 选择管理标签页:

    • 可用性政策 > 主机维护时下,选择虚拟机的重启行为。
    • 自动重启下,选择启用(推荐)停用
  8. 点击创建

gcloud

使用 gcloud compute instances create 命令可以在单租户节点组上预配单租户虚拟机。

gcloud compute instances create VM_NAME \
    --machine-type MACHINE_TYPE
    --image IMAGE_NAME \
    --zone ZONE \
    --node-group GROUP_NAME \
    RESTART_BEHAVIOR \
    --maintenance-policy MAINTENANCE_POLICY

替换以下内容:

  • VM_NAME:要创建的虚拟机的名称。
  • MACHINE_TYPE:新虚拟机的机器类型。
  • IMAGE_NAME:要用于创建虚拟机的映像。 这是在导入过程中创建的映像。
  • ZONE:要在其中创建虚拟机的可用区。
  • GROUP_NAME:要在其中预配虚拟机的节点组的名称。
  • RESTART_BEHAVIOR:此虚拟机的重启行为。将重启行为设为以下某个值:

    • --restart-on-failure
    • --no-restart-on-failure
  • MAINTENANCE_POLICY:维护事件期间的虚拟机行为。将维护政策设为以下某个值:

    • MIGRATE
    • TERMINATE

REST

使用 instances.insert 方法可以在单租户节点组上预配单租户虚拟机。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/VM_ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "/zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "scheduling": {
    "nodeAffinities": [
      {
        "key": "node-group",
        "operator": "IN",
        "values": [
        "GROUP_NAME"
        ]
      }
    ],
    "onHostMaintenance": "MAINTENANCE_POLICY",
    "automaticRestart": "AUTOMATIC_RESTART"
  },
  "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:要在其中创建虚拟机的可用区。
  • VM_NAME:新虚拟机的名称。
  • MACHINE_TYPE_ZONE:机器类型所在的可用区。
  • MACHINE_TYPE:要在其中预配虚拟机的机器类型。
  • GROUP_NAME:要在其中预配虚拟机的节点组的名称。
  • MAINTENANCE_POLICY:维护事件期间的虚拟机行为,设置为 MIGRATETERMINATE
  • AUTOMATIC_RESTART:指定在 Compute Engine 停止虚拟机时,虚拟机是否自动重启。默认值为 true
  • NETWORK:虚拟机所连接网络的名称。
  • SUBNETWORK:虚拟机所连接子网的名称。
  • IMAGE_PROJECT:来源映像所属的映像项目。
  • IMAGE_FAMILY:来源映像的映像系列。

后续步骤