本文說明如何查看 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。如果您大量建立 Spot VM,或在目標大小為 MIG 的情況下建立 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 可用性的區域。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 供應情形,請在要求內容中加入 zones 欄位。
後續步驟
瞭解如何建立及使用 Spot VM。
進一步瞭解 Spot VM 最佳做法。