本文說明如何建立及執行使用執行個體彈性的批次工作。執行個體彈性功能可讓您指定多個機器類型,並選擇性地為這些類型排序,允許作業在這些機器類型上執行。
為工作允許更多機型,即可運用執行個體彈性來提高資源取得性,也就是資源可用於執行工作的機率。如要進一步瞭解如何為工作負載選擇適用的可用性功能,請參閱「提升資源可用性」。舉例來說,使用執行個體彈性可協助您執行下列操作:
事前準備
- 如果您是第一次使用 Batch,請先參閱「開始使用 Batch」,並完成專案和使用者的必要條件,啟用 Batch。
-
如要取得建立作業所需的權限,請要求管理員授予您下列 IAM 角色:
- 專案的「批次工作編輯者」 (
roles/batch.jobsEditor) - 服務帳戶使用者 (
roles/iam.serviceAccountUser) 在作業的服務帳戶上,預設為預設的 Compute Engine 服務帳戶
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
- 專案的「批次工作編輯者」 (
限制
如果工作使用執行個體彈性,則適用下列所有限制:
允許工作使用的機型越多,資源取得性就越高。
工作無法指定
FLEX_START佈建模式或RESERVATION_BOUND佈建模式。工作無法使用明確指定的預留項目。(
reservation欄位必須為未定義或設為NO_RESERVATION)。明確指定的預留項目包含
RESERVATION_BOUND佈建模式的所有預留項目,以及STANDARD佈建模式的部分預留項目。這些功能本質上不相容,因為只有預留項目的機型才能成功建立執行個體。每個工作最多可選取 50 個執行個體。
工作中的每個執行個體選取項目都必須有不重複的名稱、不重複的等級,以及一或多個不重複的機器類型。
機型不得重複;每個作業的執行個體選取項目只能包含一種機型。
每個工作最多可從執行個體選取項目中,選取 200 個不重複的機器類型。
在同一個執行個體選取項目中指定多個機器類型是選用功能,但如果您想要取得更多資源,就必須這麼做。
- 只有在某個等級的執行個體選取項目有多個機型時,Batch 才會嘗試選取一或多個可取得性最高的機型。舉例來說,如果您希望工作使用較不容易遭到先占的 Spot VM,或是希望工作有更多執行個體可平行執行工作,就必須選取這個選項。
- 否則,如果某個等級的執行個體選取項目只有一種機型,執行個體彈性只會協助避免資源可用性錯誤。
工作不得包含
machineType欄位,且系統會忽略工作指定的任何執行個體範本機型。您必須確認為作業指定的每個屬性,都與每個允許的機型相容。否則,工作可能會在提交後因無法建立例項而失敗。舉例來說,建議您確認職缺的下列屬性至少與所有機器類型相容:
- 位置 (如已指定,則為
allowedLocations[]欄位;否則為location) - 每個工作使用的運算資源 (
computeResource欄位) - 磁碟和映像檔 (
volumes[]欄位、disk[]欄位和bootDisk欄位) - 網路 (
network欄位) 所有其他執行個體屬性 (
instances[]子欄位):- 最低 CPU 平台 (
minCpuPlatform欄位) - 佈建模型 (
provisioningModel欄位) - GPU (
accelerators[]欄位)
- 最低 CPU 平台 (
- 位置 (如已指定,則為
您無法為 Batch 工作覆寫磁碟和最低 CPU 平台。所有機型都會使用您指定的值 (位於
policy子欄位或執行個體範本中),如果未指定,則會使用最高優先順序執行個體選取項目中的機型預設值。因此,建議您採取下列做法:確認開機磁碟類型與每個允許的機型相容。總而言之,第 4 代和更新的機型不支援永久磁碟,第 2 代和更舊的機型不支援 Hyperdisk,而第 3 代和更舊的機型預設使用永久開機磁碟。
除非您已確認每個允許的機型都支援最低 CPU 平台或選用磁碟,否則請勿指定。
建立可使用多個機型的工作
如要建立工作,並允許使用多種機型,請選取下列其中一種方法。
gcloud
如要使用 Google Cloud CLI 建立工作時設定多個機器類型,請完成下列步驟:
在 JSON 檔案中指定工作設定詳細資料時,請在
allocationPolicy欄位中加入instanceFlexibilityPolicy欄位和子欄位。instanceFlexibilityPolicy欄位支援選取一或多個執行個體,每個執行個體都有專屬名稱、專屬等級,以及一或多個機器類型清單。"allocationPolicy":{ "instanceFlexibilityPolicy":{ "instanceSelections":{ "INSTANCE_SELECTION_NAME":{ "rank": RANK, "machineTypes": [MACHINE_TYPES] } } } }更改下列內容:
INSTANCE_SELECTION_NAME:執行個體選取作業的名稱。如果工作有多個例項選項,請確保這項工作中的每個名稱都是專屬的。RANK:選用:代表這個執行個體選取優先順序的整數,值為零或大於零,其中最低值代表最高優先順序。如未指定,預設值為0(最高優先順序)。如果工作有多個執行個體選項,請確保這項工作中的每個等級都是專屬的。MACHINE_TYPES:以半形逗號分隔的一或多個機器類型清單,以字串形式表示,用於選取這個執行個體。每個作業的執行個體選取項目只能包含一個機型。舉例來說,三個機器類型的清單可以寫成如下:"