本文档介绍了如何查看可用区中 Compute Engine 实例的物理位置(也称为拓扑)。如需在 Cluster Director 中查看集群的拓扑,请参阅查看集群拓扑。
创建 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)实例或指定了紧凑布置政策或工作负载政策的计算实例后,您可以查看计算实例彼此之间的物理位置。了解计算实例的邻近程度后,您可以调整应用或工作负载设计,以便在彼此最靠近的计算实例上运行对延迟时间敏感的作业。对于所有其他类型的计算实例,您可以在公开主机 ID 后查看它们所运行的主机的 ID。
准备工作
- 查看计算实例拓扑的术语。
-
选择标签页以了解您打算如何使用本页面上的示例:
控制台
当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。
gcloud
安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:
gcloud initREST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。
安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得查看计算实例拓扑所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含查看计算实例拓扑所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需查看计算实例拓扑,您需要具备以下权限:
-
查看计算实例的详细信息:针对项目的
compute.instances.get权限 -
查看计算实例列表:针对项目的
compute.instances.list权限
了解计算实例拓扑
如需了解集群中计算实例的物理位置,请在 Google Cloud 控制台中查看物理主机字段。如果您使用 gcloud CLI、Compute Engine API 或元数据键查询,请检查 physicalHostTopology 字段。这些字段包含以下子字段:
cluster:集群的全局名称。block:实例所在预留块的组织专用 ID。sub-block:实例所在子块的组织专用 ID。host:实例运行所在主机的组织专用 ID。
如需了解实例邻近度,请比较计算实例之间的物理主机或 physicalHostTopology 字段的值。计算实例共享的子字段越多,它们彼此间的距离就越近。
您还可以查看创建计算实例的预留的拓扑。预留和实例的 physicalHostTopology 字段显示相同的 block 和 cluster 字段。例如,当您查看特定预留块时,可以查看部署在该块中的所有计算实例的名称和子块。如需详细了解预留的拓扑,请参阅查看预留的拓扑。
查看计算实例拓扑
如需一次性查看多个正在运行的计算实例的物理位置,请使用 REST API。否则,请选择以下任一选项:
控制台
在 Google Cloud 控制台中,前往虚拟机实例页面。
在名称列中,点击要查看其详细信息的计算实例的名称。系统会显示一个包含计算实例详细信息的页面,并且详细信息标签页处于选中状态。
在基本信息部分,检查物理主机字段的值。
gcloud
如需查看正在运行的计算实例的物理位置,请使用带有 --flatten=resourceStatus.physicalHostTopology 标志的 gcloud compute instances describe 命令:
gcloud compute instances describe INSTANCE_NAME \
--flatten=resourceStatus.physicalHostTopology \
--zone=ZONE
替换以下内容:
INSTANCE_NAME:计算实例的名称。ZONE:计算实例所在的可用区。
输出类似于以下内容:
如果您可以查看计算实例的集群、块、子块和主机 ID,则输出类似于以下内容:
--- cluster: europe-west1-cluster-jfhb block: 3e3056e23cf91a5cb4a8621b6a52c100 subBlock: 0fc09525cbd5abd734342893ca1c083f host: 1215168a4ecdfb434fd4d28056589059如果您只能在公开主机后查看其 ID,则输出类似于以下内容:
--- cluster: null block: null subBlock: null host: 1215168a4ecdfb434fd4d28056589059
REST
如需查看正在运行的计算实例的物理位置,请发出以下 GET 请求之一。发出请求时,您必须添加 fields 查询参数,并指定仅显示计算实例的 name、machineType 和 physicalHostTopology 字段。您还必须添加 filter 查询参数,并指定仅列出正在运行的计算实例。
如需查看所有可用区中的实例列表,请使用
instances.aggregatedList方法GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING如需查看特定可用区中的实例列表,请使用
instances.list方法。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
替换以下内容:
PROJECT_ID:计算实例所在项目的 ID。ZONE:计算实例所在的可用区。
输出类似于以下内容:
如果您可以查看计算实例的集群、块、子块和主机 ID,则输出类似于以下内容:
{ "items": [ { "name": "vm-01", "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g", "resourceStatus": { "physicalHostTopology": { "cluster": "europe-west1-cluster-jfhb", "block": "3e3056e23cf91a5cb4a8621b6a52c100", "subBlock": "0fc09525cbd5abd734342893ca1c083f", "host": "1215168a4ecdfb434fd4d28056589059" } } }, { "name": "vm-02", "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g", "resourceStatus": { "physicalHostTopology": { "cluster": "europe-west1-cluster-jfhb", "block": "3e3056e23cf91a5cb4a8621b6a52c100", "subBlock": "1fc18636cbd4abd623553784ca2c174e", "host": "2326279b5ecdfc545fd5e39167698168" } } }, ... ] }如果您只能在公开主机计算实例后查看其 ID,则输出类似于以下内容:
{ "items": [ { "name": "vm-01", "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g", "resourceStatus": { "physicalHostTopology": { "cluster": null, "block": null, "subBlock": null, "host": "1215168a4ecdfb434fd4d28056589059" } } }, { "name": "vm-02", "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g", "resourceStatus": { "physicalHostTopology": { "cluster": null, "block": null, "subBlock": null, "host": "2326279b5ecdfc545fd5e39167698168" } } }, ... ] }
如果您想优化计算实例列表,请修改 filter 查询参数中的过滤表达式。
通过元数据键查询查看计算实例拓扑
如需通过查询 physical_host_topology 元数据键来查看正在运行的计算实例的物理位置,请选择以下选项之一:
Linux 实例
连接到您的 Linux 计算实例。
在 Linux 实例中,使用
curl工具创建查询。如需查询 Linux 实例上的physical_host_topology元数据键,请运行以下命令:user@myinst:~$ curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology输出类似于以下内容:
如果您可以查看计算实例的集群、块、子块和主机 ID,则输出类似于以下内容:
{ "cluster": "europe-west1-cluster-jfhb", "block": "3e3056e23cf91a5cb4a8621b6a52c100", "subBlock": "0fc09525cbd5abd734342893ca1c083f", "host": "1215168a4ecdfb434fd4d28056589059" }如果您只能在公开主机后查看其 ID,则输出类似于以下内容:
{ "cluster": null, "block": null, "subBlock": null, "host": "1215168a4ecdfb434fd4d28056589059" }
Windows 实例
连接到您的 Windows 计算实例。
在 Windows 实例中,使用
Invoke-RestMethod命令创建查询。 如需查询 Windows 实例上的physical_host_topology元数据键,请运行以下命令:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology") $value输出类似于以下内容:
如果您可以查看计算实例的集群、块、子块和主机 ID,则输出类似于以下内容:
{ "cluster": "europe-west1-cluster-jfhb", "block": "3e3056e23cf91a5cb4a8621b6a52c100", "subBlock": "0fc09525cbd5abd734342893ca1c083f", "host": "1215168a4ecdfb434fd4d28056589059" }如果您只能在公开主机后查看其 ID,则输出类似于以下内容:
{ "cluster": null, "block": null, "subBlock": null, "host": "1215168a4ecdfb434fd4d28056589059" }
后续步骤
了解如何管理主机事件: