共享单租户节点组类似于本地单租户节点组。例如,共享节点组的费用相同,使用相同配额,并且也位于资源层次结构中的父项目下。
共享节点组和本地节点组之间的区别在于,您的组织中的其他项目可以在共享节点组中预配虚拟机 (VM) 实例。
跨多个项目或在整个组织中共享节点组可帮助您执行以下操作:
将您管理的节点组整合到一个项目中,然后与其他项目或整个组织共享这些节点
将各种项目的虚拟机合并到未充分利用的节点组后删除节点,从而降低费用
通过单个团队管理单租户节点
与较小的项目共享单租户节点,并保留这些项目之间的安全与访问权限控制边界
在同一项目中的节点组之间执行实时迁移
使用在节点组内迁移维护政策时,提高节点组的利用率并减少预留的维护节点的数量
下图展示了与其他项目共享的节点组,管理这些项目中的虚拟机的其他部门可以在共享节点组中预配虚拟机。
共享节点组的利用率优势
下表对使用本地节点组的项目和使用共享节点组的项目进行了比较。请注意,使用共享节点组的项目的 vCPU 利用率会降低。
项目配置 | 本地节点组 | 共享节点组 |
---|---|---|
项目 | 10 | 10 |
vCPU/项目 | 24 | 24 |
节点组 | 10 | 1 |
节点数/节点组 | 1 | 3 |
vCPU/节点 | 80 | 80 |
利用率/节点组 | 24 | 80 |
利用率过低/节点组 | 56 | 0 |
利用率过低的 vCPU 总数 | 10 x 56 = 560 个 vCPU | 1 x 0 = 0 个 vCPU |
共享节点组设置
Compute Engine 使用以下设置来共享节点组并在共享节点组中预配虚拟机:
您在创建或更新单租户节点组时配置的共享设置。如需指定是与其他项目还是与整个组织共享节点组,请使用 gcloud CLI 设置(
--share-setting
、--share-with
)或 REST 设置(shareSetting
、shareWith
)。默认
compute.googleapis.com/project
节点亲和性标签,供您在使用节点亲和性标签在共享节点组中预配虚拟机时使用。 如需了解其他默认节点亲和性标签,请参阅默认亲和性标签。
维护政策注意事项
当节点组使用在节点组内迁移维护政策时,Compute Engine 会为实时迁移事件至少预留 1 个节点,因此节点组必须至少有 2 个节点。您无法在预留节点中安排虚拟机,因此具有此维护政策的节点组通常总体利用率会较低。这使得需要在节点组内迁移维护政策的工作负载成为共享节点组的理想选择,因为它们通常可以从改进的利用率中获得最大的好处。
IAM 角色和权限
共享节点组时,请注意以下有关 IAM 角色和权限的信息:
如果节点组与项目共享,则任何能够在列出的项目或组织中创建虚拟机的用户都可以将这些项目中的虚拟机预配到共享节点组,而无需更改 IAM 角色或权限。
compute.soleTenantViewer
IAM 角色可让您列出和查看节点组 (gcloud CLI/REST)。您无法使用此角色修改节点组。拥有此角色或有权列出节点组的任何用户(无论他们在虚拟机上的 IAM 权限如何)都可以查看节点组中所有虚拟机的项目 ID、名称、机器类型以及有关本地 SSD 和 GPU 的信息。
限制
合规性制度限制:
- 任何有权列出节点组的用户(无论他们在虚拟机上的 IAM 权限如何)都可以查看节点组中所有虚拟机的项目 ID、名称和机器类型。因此,由于跨项目信息披露的风险,在共享节点组中预配了虚拟机的项目应受相同的合规性制度约束。
Google Cloud 控制台限制:
- 如果您无权查看共享节点组上的虚拟机,则这些虚拟机不会显示在 Google Cloud 控制台的单租户节点页面上的虚拟机列表中。
- 在单租户节点组页面上修改共享设置后,界面中的共享对象设置不会更新。如需查看更新后的共享对象设置,请转到单租户节点页面。
- 与组织中的所有项目或组织中的选定项目共享节点组后,您只能看到其所属项目中的共享节点组:您无法看到它获得共享的项目中的共享节点组。如需在共享节点组上预配虚拟机,请从共享该节点组的项目中转到虚拟机实例页面,然后修改单租户节点亲和性标签。
共享限制:
价格
共享节点组中的虚拟机不会产生额外费用,并且共享节点组本身也不会产生额外费用。如需详细了解单租户节点价格,请参阅单租户节点价格。
准备工作
- 在创建单租户节点组之前,创建单租户节点模板。
- 在单租户节点中预配虚拟机之前,请检查您的配额。根据您所预留节点的数量和大小,您可能需要申请更多配额。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
创建单租户节点组。如需了解详情,请参阅创建单租户节点组。
通过在配置共享设置中指定以下其中一项,来配置共享设置:
- 如需与组织中的所有项目共享节点组,请选择与组织中的所有项目共享此节点组。
- 如需与组织中的特定项目共享节点组,请选择与组织中的选定项目共享此节点组。
如果您不想共享节点组,请选择不与其他项目共享此节点组。
NODE_GROUP
:节点组的名称。ZONE
:要在其中创建节点组的可用区。NODE_TEMPLATE
:先前创建的节点模板的名称。SIZE
:节点组中的节点数。SHARE_SETTING
:节点组的共享设置。设置为projects
可与特定项目共享,或设置为organization
可与整个组织共享。PROJECTS
:要共享节点组的项目 ID 或项目编号的列表。只有在将SHARE_SETTING
设置为projects
时才需要。PROJECT
:要在其中创建节点组的项目的名称。ZONE
:要在其中创建节点组的可用区。NODE_GROUP
:节点组的名称。NODE_TEMPLATE
:先前创建的节点模板的名称。SIZE
:节点组中的节点数。SHARE_TYPE
:节点组的共享设置。设置为SPECIFIC_PROJECTS
可与特定项目共享,或设置为ORGANIZATION
可与整个组织共享。PROJECTS
:要共享节点组的项目 ID 或项目编号的列表。只有在将SHARE_TYPE
设置为SPECIFIC_PROJECTS
时才需要。在 Google Cloud 控制台中,切换到您已与其共享节点组的项目。
转到虚拟机实例页面。
点击创建实例。
在可用区中,选择共享节点组的可用区。
在机器配置 > 系列中,选择共享单租户节点组模板指定的机器类型。
展开高级选项部分。
展开单租户部分。
点击浏览。
选择选择项目并指定包含共享节点组的项目。
选择要在其中预配虚拟机的单租户节点组或该组中特定单租户节点。
VM_NAME
:要在共享节点组中创建的新单租户虚拟机的名称MACHINE_TYPE
:新单租户虚拟机的机器类型NODE_GROUP
:要在其中创建单租户虚拟机的共享节点组的名称NODE_PROJECT
:要在其中预配虚拟机的节点组所属的项目VM_NAME
:要使用亲和性标签在共享节点组中创建的单租户虚拟机的名称。MACHINE_TYPE
:要在共享节点组中创建的单租户虚拟机的机器类型。NODE_AFFINITY_FILE
:包含节点亲和性信息的.json
文件的名称。在节点亲和性文件中,将亲和性标签键设置为"compute.googleapis.com/project"
,运算符等于"IN"
,值等于包含节点组的项目。如需详细了解如何配置节点亲和性,请参阅配置节点亲和性标签。PROJECT
:节点组所属的项目的名称。ZONE
:节点组的可用区。VM_NAME
:要使用亲和性标签在共享节点组中创建的单租户虚拟机的名称。MACHINE_TYPE
:要在共享节点组中创建的单租户虚拟机的机器类型。KEY
:亲和性标签。设置为"compute.googleapis.com/project"
。OPERATOR
:亲和性标签运算符。设置为"IN"
。VALUE
:要在其中预配虚拟机的节点组所属的项目。使用项目名称或项目 ID 指定一个项目。在 Google Cloud 控制台中,转到单租户节点页面。
如需查看节点组的属性,请在名称列中点击节点组的名称。
PROJECT
:要查看其共享设置的节点组所属的项目的名称ZONE
:要查看其共享设置的节点组所在的可用区在 Google Cloud 控制台中,转到单租户节点页面。
在名称列中,点击节点组的名称。
如需与组织中的所有项目或组织中的选定项目共享节点组,请在概览 > 共享对象中,请点击修改 。
NODE_GROUP
:要更新其共享设置的节点组的名称。SHARE_SETTING
:节点组的共享设置。设置为projects
可与特定项目共享,或设置为organization
可与整个组织共享。PROJECTS
:要共享节点组的项目 ID 或项目编号的列表。只有在将SHARE_SETTING
设置为projects
时才需要。PROJECT
:要更新其共享设置的节点组所属的项目的名称。ZONE
:要更新其共享设置的节点组所在的可用区。NODE_GROUP
:要更新其共享设置的节点组的名称。SHARE_TYPE
:节点组的共享设置。设置为projects
可与特定项目共享,或设置为organization
可与整个组织共享。PROJECTS
:要共享节点组的项目 ID 或项目编号的列表。只有在将SHARE_SETTING
设置为SPECIFIC_PROJECTS
时才需要。在 Google Cloud 控制台中,转到单租户节点页面。
点击节点组的名称。
在概览 > 共享对象中,点击修改 。
如需停止共享,请选择不与其他项目共享此节点组。
PROJECT
:要停止共享的节点组所属的项目的名称ZONE
:要停止共享的节点组所在的可用区NODE_GROUP
:要停止共享的节点组的名称在 Google Cloud 控制台中,转到单租户节点页面。
在名称列中,点击节点组的名称。
点击删除。
PROJECT
:要删除的节点组所属的项目的名称ZONE
:要删除的节点组所在的可用区NODE_GROUP
:要删除的节点组的名称
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
创建新的节点组并共享该节点组
如需创建新的节点组并将其与其他项目或整个组织共享,请使用 Google Cloud 控制台、gcloud CLI 或 REST。
控制台
gcloud
如需创建共享节点组,请使用以下
gcloud compute sole-tenancy node-groups create
命令。gcloud compute sole-tenancy node-groups create NODE_GROUP \ --zone=ZONE \ --node-template=NODE_TEMPLATE \ --target-size=SIZE \ --share-setting=SHARE_SETTING \ --share-with=PROJECTS
替换以下内容:
REST
如需创建共享节点组,请使用以下
nodeGroups.insert
方法。POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups { ... "name": NODE_GROUP, "nodeTemplate": NODE_TEMPLATE, "size": SIZE, "shareSettings": { "shareType": SHARE_TYPE, "projectMap": { string: { "projectId": PROJECTS }, } } ... }
替换以下内容:
在共享节点组中预配单租户虚拟机
如需在共享节点组中预配单租户虚拟机,请使用 Google Cloud 控制台、gcloud CLI 或 REST。
控制台
gcloud
使用节点组名称在共享节点组中预配虚拟机
如需使用节点组名称在共享节点组中预配单租户虚拟机,请使用以下
gcloud compute instances create
命令。gcloud compute instances create VM_NAME \ --machine-type=MACHINE_TYPE \ --node-group=NODE_GROUP \ --node-project=NODE_PROJECT
替换以下内容:
使用节点亲和性文件在共享节点组中预配虚拟机
如需使用节点亲和性文件在共享节点组中预配单租户虚拟机,请使用以下
gcloud compute instances create
命令。gcloud compute instances create VM_NAME \ --machine-type=MACHINE_TYPE \ --node-affinity-file=NODE_AFFINITY_FILE
替换以下内容:
REST
如需使用节点亲和性文件在共享节点组中预配单租户虚拟机,请使用以下
nodeGroups.insert
方法。POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances { ... "name": VM_NAME, "machineType": MACHINE_TYPE, "scheduling": { ... "nodeAffinities": [ { "key": KEY, "operator": OPERATOR, "values": [ VALUE ] } ], ... }, ... }
替换以下内容:
如需详细了解如何配置节点亲和性,请参阅配置节点亲和性标签。
查看节点组的共享设置
如需查看节点组的共享设置,请使用 Google Cloud 控制台、gcloud CLI 或 REST。
控制台
gcloud
如需查看节点组的共享设置,请使用以下
gcloud compute sole-tenancy node-groups describe
命令。gcloud compute sole-tenancy node-groups describe NODE_GROUP
将
NODE_GROUP
替换为要查看其共享设置的节点组的名称。REST
如需查看节点组的共享设置,请使用以下
nodeGroups.get
方法。GET https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups
替换以下内容:
共享现有节点组
如需与其他项目或整个组织共享现有节点组,请使用 Google Cloud 控制台、gcloud CLI 或 REST。
控制台
gcloud
如需更新节点组的共享设置,请使用以下
gcloud compute sole-tenancy node-groups update
命令。gcloud compute sole-tenancy node-groups update NODE_GROUP \ --zone=ZONE \ --share-setting=SHARE_SETTING \ --share-with=PROJECTS
替换以下内容:
REST
如需更新节点组的共享设置,请使用以下
nodeGroups.patch
方法。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP { "shareSettings": { "shareType": SHARE_TYPE, "projectMap": { string: { "projectId": PROJECTS }, } } }
替换以下内容:
停止共享节点组
如需停止与其他项目或整个组织共享节点组,请使用 gcloud CLI 或 REST。
控制台
gcloud
如需停止与其他项目或整个组织共享节点组,请使用以下
gcloud compute sole-tenancy node-groups update
命令。gcloud compute sole-tenancy node-groups update NODE_GROUP \ --zone=ZONE \ --share-setting=local
将
NODE_GROUP
替换为要停止共享的节点组的名称。REST
如需停止与其他项目或整个组织共享节点组,请使用以下
nodeGroups.patch
方法。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP { "shareSettings": { "shareType": LOCAL } }
替换以下内容:
从所属项目中删除共享节点组
如需从所属项目中删除共享节点组,请使用 Google Cloud 控制台、gcloud CLI 或 REST。在删除节点组之前,请停止该节点组中运行的所有虚拟机。
控制台
gcloud
如需从所属项目中删除共享节点组,请使用以下
gcloud compute sole-tenancy node-groups delete
命令。gcloud compute sole-tenancy node-groups delete NODE_GROUP
将
NODE_GROUP
替换为要删除的节点组的名称。REST
如需从所属项目中删除共享节点组,请使用以下
nodeGroups.delete
方法。DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP
替换以下内容:
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-