本文說明如何查看可用區中 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 控制台中啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
必要的角色
如要取得查看 Compute 執行個體拓撲所需的權限,請要求管理員授予您專案的Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備查看運算執行個體拓撲所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要查看運算執行個體拓撲,必須具備下列權限:
-
如要查看運算執行個體的詳細資料:
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 控制台的「VM instances」(VM 執行個體) 頁面。
在「名稱」欄中,按一下要查看詳細資料的運算執行個體名稱。系統會顯示 Compute 執行個體詳細資料頁面,並選取「Details」(詳細資料) 分頁。
在「Basic information」(基本資訊) 區段中,查看「Physical host」(實體主機) 欄位的值。
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 Compute 執行個體。
在 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" }
後續步驟
瞭解如何管理主機事件: