本文說明如何查看 Spot VM 的即時可用性和預期正常運作時間。
建立Spot VM 前,您可以使用 advice.capacity API,查看多種機型和位置的即時可用性和預期正常運作時間。這項資訊有助於您執行下列操作:
減少資源可用性錯誤。查看哪些機器類型、地區或區域有可用容量後,您可以在建立 Spot VM 時指定這些設定。這麼做可降低發生資源可用性錯誤的機率。
針對搶占最佳化工作負載。比較不同機器設定和位置的預期正常運作時間,即可選擇最適合工作負載的設定。檢查這些因素可協助您設計及整理 Spot VM,避免搶占作業中斷工作負載。
如要瞭解如何比較不同機器類型和位置的穩定性和成本,請參閱「查看 Spot VM 的搶占率和價格」。
限制
傳送要求至 advice.capacity API 時,您無法查看 TPU 的可用性。
瞭解如何查看 Spot VM 的資源可用性
當您傳送要求至 advice.capacity API 時,輸出內容會顯示下列建議指標。這些指標的依據包括:您想讓 Spot VM 使用的機型、您想建立 Spot VM 的區域,以及所要求資源的即時供應情形和歷來先占率。
可取得分數:您建立點 VM 的要求成功機率,取決於您指定的 VM 數量和機器設定。詳情請參閱「Spot VM 的可取得性分數」。
預估正常運作時間:在 Compute Engine 先占 Spot VM 之前,大多數 Spot VM 預計可運作的最短時間。詳情請參閱「Spot VM 的預估正常運作時間」。
Spot VM 的可取得性分數
當您向 advice.capacity API 傳送要求時,輸出內容中的可取得性分數 (obtainability) 會指出您在一個或多個區域中,成功建立指定數量 Spot VM 的可能性。Compute Engine 會根據您要求資源的即時可用性,以及近期建立要求的成功率,計算這項分數。
可取得性分數範圍為 0.0 至 1.0,表示下列其中一種成功機率:
成功機率高 (
0.7至1.0):您很可能可以建立要求的 Spot VM。中等成功機率 (
0.4至0.6):您有中等機率可以建立要求的 Spot VM。如果您在 MIG 中大量建立 Spot VM 或建立目標大小的 Spot VM,則可能只會取得部分要求的 VM。成功機率低 (
0.0至0.3):您不太可能建立要求的 Spot VM。建議您檢查其他位置或機型是否有可用資源,或是使用其他佈建模式建立 VM。
Spot VM 的預估正常運作時間
當您傳送要求至 advice.capacity API 時,輸出內容中的預估正常運作時間 (estimatedUptime) 會指出,您指定數量的 Spot VM 預計在遭到搶占前,可運作的最短時間。Compute Engine 會根據指定機型和位置的過往和目前用量模式,計算這項正常運作時間。
Compute Engine 可將預估正常運作時間設為下列其中一個值:
60 分鐘 (3,600 秒):在 Compute Engine 先占 Spot VM 之前,大部分的 Spot VM 可能都會執行一小時。建立 VM,處理可容許中斷的長時間工作負載,例如批次工作負載。
10 分鐘 (600 秒):Compute Engine 先占 Spot VM 前,大部分的 Spot VM 可能會執行 10 分鐘。只為短期執行的工作或容錯工作負載建立 VM,並以短間隔儲存進度。
1 分鐘 (60 秒):在 Compute Engine 先占 Spot VM 之前,大部分的 Spot VM 可能都會執行一分鐘。建議您採取下列其中一項做法:
僅為非常短暫的作業、測試或非重要工作負載建立 VM。
在其他位置或使用不同機型檢查資源可用性。
使用其他佈建模型建立 VM。
最佳做法
為盡量確保使用 advice.capacity API 後能取得容量,建議您採取下列最佳做法:
比較不同機型的輸出內容:如果工作負載很彈性,請比較不同數量的 Spot VM 或機型選項。舉例來說,您可以比較 100 個
n1-standard-2機型 VM 的輸出內容,以及 50 個n1-standard-4機型 VM 的輸出內容。接著,您可以使用最能平衡可用性和預估正常運作時間的設定,建立 Spot VM,滿足工作負載需求。比較多個位置的輸出內容:如果工作負載可在多個區域或地帶執行,請檢查每個位置的可用性。舉例來說,如果兩個區域的預估正常運作時間相同,請在可取得性分數較高的區域中建立 Spot VM。
將 VM 分散至多個可用區:如果您指定
ANY或BALANCED的目標分配型態,advice.capacityAPI 可能會建議您在多個可用區建立 Spot VM。舉例來說,為了盡可能建立 100 個 Spot VM,輸出內容可能會建議您在一個可用區中建立 90 個 VM,在另一個可用區中建立 10 個 VM。
事前準備
- 根據預設,
advice.capacityAPI 的可用性和預期正常運作時間建議會包含 AI 區域。如要確保 API 建議您在 AI 可用區建立 VM 時,您可以在這些可用區建立 Spot VM,請 確認專案已啟用 AI 可用區。 -
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上您打算如何使用範例的分頁:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
- 設定預設地區和區域。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
必要的角色
如要取得查看 Spot VM 可用情形所需的權限,請要求管理員授予您專案的「Compute 檢視者 」(roles/compute.viewer) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備查看 Spot VM 可用性所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要查看 Spot VM 的可用性,必須具備下列權限:
-
如要查看 Spot VM 的可用性:
compute.advice.capacity在專案中
查看 Spot VM 的可用性
如要查看 Spot VM 的可用性,您必須指定位置、機器設定和要建立的 VM 數量。根據結果,您可以建立 Spot VM,或查看其他位置或機器設定的資源可用性。
視工作負載需求而定,請考慮下列事項:
如要同時查看多個機器系列、機器類型和區域/可用區的可用性,請使用 Google Cloud 控制台。
如要查看區域 MIG 中目標分配形狀的可用性,請使用 gcloud CLI 或 REST API。
如要查看 N1 GPU VM 的可用性,或預設未附加至機型的本機 SSD 磁碟,請使用 REST API。
如要查看 Spot VM 的可用性,請選取下列其中一個選項:
控制台
前往 Google Cloud 控制台的「容量建議」頁面。
在「篩選器」窗格中,完成下列步驟:
在「Location」(位置) 部分的「Region」(區域) 清單中,選取要查看 Spot VM 可用性的區域。
在「機器規格」部分,指定機器設定和要查看可用性的 Spot VM 數量:
在「機器家族」清單中,選取機器家族。
在「系列」清單中,選取最多三個機器系列。
在「機型」清單中,選取最多五種機型。
在「Number of VMs」(VM 數量) 欄位中,輸入 Spot VM 的數量。
選用:預設會隱藏資源有限的區域。如要查看這些區域,請取消勾選「隱藏可用性受限的區域」核取方塊。
按一下「搜尋」。
gcloud
如要查看 Spot VM 的可用性,請使用 gcloud beta compute advice capacity 指令:
gcloud beta compute advice capacity \
--provisioning-model=SPOT \
--instance-selection-machine-types=MACHINE_TYPES \
--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE \
--size=SIZE \
--region=REGION
更改下列內容:
MACHINE_TYPES:以半形逗號分隔的機型清單,您要查看這些機型的可用性,例如n2-standard-2,n2-standard-4。最多可指定五種機器類型。TARGET_DISTRIBUTION_SHAPE:您要求資源的發布情形。根據要執行的工作負載類型和要建立 VM 的可用區,指定下列其中一個值:ANY:您想根據可用性,在一或多個區域中建立 Spot VM。為批次工作負載指定這個值。ANY_SINGLE_ZONE:您只想根據可用性,在單一區域中建立 Spot VM。如果工作負載需要 VM 之間進行大量通訊,例如 AI 或高效能運算 (HPC) 工作負載,請指定這個值。BALANCED:您想根據可用性,在一或多個區域中建立 Spot VM,並讓 Compute Engine 盡可能在各區域平均分配 VM。指定這個值,盡量減少可用區故障對高可用性服務或批次工作負載的影響。
SIZE:要建立的 Spot VM 數量。REGION:要查看 Spot VM 可用性的區域。如要指定以半形逗號分隔的區域清單,而非地區,請將--region旗標換成--zones旗標。
輸出結果會與下列內容相似:
recommendations:
- scores:
obtainability: 0.9
estimatedUptime: 600s
- shards:
- instanceCount: 90
machineType: n2-standard-2
provisioningModel: SPOT
zone: https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a
- instanceCount: 10
machineType: n2-standard-4
provisioningModel: SPOT
zone: https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-c
REST
如要查看 Spot VM 的可用性,請對 beta advice.capacity 方法發出 POST 要求。
舉例來說,如要查看某個區域中兩種機型的可用性,請提出下列要求。每個要求最多可查看五種機器類型的可用性。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/advice/capacity
{
"instanceProperties": {
"scheduling": {
"provisioningModel": "SPOT"
}
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"MACHINE_SELECTION_1": {
"machineTypes": [
"MACHINE_TYPE_1"
]
},
"MACHINE_SELECTION_2": {
"machineTypes": [
"MACHINE_TYPE_2"
]
}
}
},
"distributionPolicy": {
"targetShape": "TARGET_DISTRIBUTION_SHAPE"
},
"size": SIZE
}
更改下列內容:
PROJECT_ID:專案的 ID。REGION:要查看 Spot VM 可用性的區域。如要查看指定區域內特定區域的供應情形,請在要求內容中加入distributionPolicy.zones陣列欄位。舉例來說,如要查看兩個區域中閒置 VM 的可用性,請將zones陣列新增至distributionPolicy欄位,如下所示:"zones": [ { "zone": "zones/ZONE_1" }, { "zone": "zones/ZONE_2" } ]將
ZONE_1和ZONE_2替換為您要查看 Spot VM 可用性的兩個區域。MACHINE_SELECTION_1和MACHINE_SELECTION_2:機型選取項目的名稱。舉例來說,請分別指定selection-1和selection-2。MACHINE_TYPE_1和MACHINE_TYPE_2:您要查看可用性的機器類型。請根據機器類型,記下下列事項:N1 機器類型:如要將 GPU 附加至 N1 Spot VM,請在
MACHINE_SELECTION_1或MACHINE_SELECTION_2欄位中加入guestAccelerators欄位,如下所示:"guestAccelerators": [ { "acceleratorCount": ACCELERATOR_COUNT, "acceleratorType": "ACCELERATOR_TYPE" } ]更改下列內容:
ACCELERATOR_COUNT:要附加至 N1 Spot VM 的 GPU 數量。ACCELERATOR_TYPE:支援 N1 機器系列的 GPU 型號。
沒有預設本機 SSD 磁碟的機器類型:如要將本機 SSD 磁碟連接至 Spot VM,請在
MACHINE_SELECTION_1或MACHINE_SELECTION_2欄位中加入disks欄位。針對要附加的每個本機 SSD 磁碟,重複type欄位並設為SCRATCH。舉例來說,如要附加兩個本機 SSD 磁碟,請加入下列內容:"disks": [ { "type": "SCRATCH" }, { "type": "SCRATCH" } ]
TARGET_DISTRIBUTION_SHAPE:您要求資源的發布情形。根據要執行的工作負載類型和要建立 VM 的可用區,指定下列其中一個值:ANY:您想根據可用性,在一或多個區域中建立 Spot VM。為批次工作負載指定這個值。ANY_SINGLE_ZONE:您只想根據可用性,在單一區域中建立 Spot VM。如果工作負載需要 VM 之間進行大量通訊,例如 AI 或 HPC 工作負載,請指定這個值。BALANCED:您想根據可用性,在一或多個區域中建立 Spot VM,而 Compute Engine 會盡可能在各區域平均分配 VM。指定這個值,盡量減少可用區故障對高可用性服務或批次工作負載的影響。
SIZE:要建立的 Spot VM 數量。
輸出結果會與下列內容相似:
{
"recommendations": [
{
"scores": {
"estimatedUptime": "600s",
"obtainability": 0.9
},
"shards": [
{
"instanceCount": 90,
"machineType": "n2-standard-2",
"provisioningModel": "SPOT",
"zone": "https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a"
},
{
"instanceCount": 10,
"machineType": "n2-standard-4",
"provisioningModel": "SPOT",
"zone": "https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-c"
}
]
}
]
}
後續步驟
瞭解如何建立及使用 Spot VM。
進一步瞭解 Spot VM 最佳做法。