使用受控映像建立自訂映像集區
若要建立 Batch 集區虛擬機器 (VM) 的自訂映像集區,請使用受控映像建立 Azure Compute Gallery 映像。 也支援只使用受控映像,但僅適用於截至 2019-08-01 (含) 為止的 API 版本。
警告
在 2026 年 3 月 31 日之後,即將淘汰使用受控映像建立 Batch 集區的支援。 請移轉至在 Azure Compute Gallery 中裝載自訂映像,以用於在 Batch 中建立自訂映像集區。 如需詳細資訊,請參閱移轉指南。
本主題說明如何只使用一個受控映像來建立自訂映像集區。
必要條件
受控映像資源。 若要使用自訂映像來建立虛擬機器集區,您必須在與 Batch 帳戶相同的 Azure 訂用帳戶和區域中,擁有或建立受控映像資源。 建議從 VM 作業系統 (OS) 磁碟的快照集建立映像,然後選擇是否連結資料磁碟。
- 針對您建立的每個集區使用唯一的自訂映像。
- 若要使用 Batch API 以映像建立集區,請指定映像的資源識別碼,其形式為
/subscriptions/xxxx-xxxxxx-xxxxx-xxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myImage
。 - 受控映像資源應該在集區存留期內都存在,以供集區調升規模,並可在刪除集區之後移除。
Microsoft Entra 驗證。 Batch 用戶端 API 必須使用 Microsoft Entra 驗證。 Azure Batch 對於 Microsoft Entra ID 的支援記載於使用 Active Directory 驗證 Batch 服務解決方案中。
準備受控映像
在 Azure 中,您可以從下列來源準備受控映像:
- Azure VM OS 和資料磁碟的快照集
- 具有受控磁碟的一般化 Azure VM
- 已上傳至雲端的一般化內部部署 VHD
若要使用受控映像來可靠地調整 Batch 集區,建議「只」使用第一個方法建立受控映像:使用 VM 磁碟的快照集。 下列步驟說明如何準備 VM、建立快照集,然後從快照集建立受控映像。
準備 VM
如果您要為映像建立新的 VM,請使用 Batch 支援的第一方 Azure Marketplace 映像,作為受控映像的基礎映像。 只有第一方映像可以作為基礎映像。 若要取得 Azure Batch 所支援之 Azure Marketplace 映像參考的完整清單,請參閱 列出支援的映像。
注意
您無法使用具有額外授權和購買條款的第三方映像作為您的基礎映像。 如需這些 Marketplace 映像的相關信息,請參閱 Linux 或 Windows VM 的指引。
若要使用第三方映射,您可以使用 Azure 計算資源庫。 如需詳細資訊,請參閱 使用 Azure 計算資源庫建立自定義映射集區 。
- 請確定以受控磁碟建立 VM。 當您建立 VM 時,這是預設的儲存體設定。
- 不要在 VM 上安裝 Azure 延伸模組,例如自訂指令碼延伸模組。 如果映像包含預先安裝的延伸模組,則 Azure 在部署 Batch 集區時可能會遇到問題。
- 使用連結的資料磁碟時,您必須在 VM 內掛接並格式化磁碟,才能使用這些磁碟。
- 確定您提供的基本 OS 映像使用預設的暫存磁碟機。 Batch 節點代理程式目前需要有預設的暫存磁碟機。
- 確定 OS 磁碟未加密。
- 一旦 VM 開始執行之後,請透過 RDP (適用於 Windows) 或 SSH (適用於 Linux) 向它連線。 安裝任何必要的軟體或複製所需的資料。
建立 VM 快照集
快照集是完整的 VHD 唯讀複本。 若要建立 VM OS 或資料磁碟的快照集,請使用 Azure 入口網站或命令列工具。 如需建立快照集的步驟和選項,請參閱 VM 的指引。
從一或多個快照集建立映像
若要從快照集建立受控映像,請使用 Azure 命令列工具,例如 az image create 命令。 您可以指定 OS 磁碟快照集,以及視需要指定一或多個資料磁碟快照集,來建立映像。
從受控映像建立集區
找到受控映像的資源識別碼之後,請從該映像建立自訂映像集區。 下列步驟示範如何使用 Batch 服務或 Batch 管理來建立自訂映像集區。
注意
請確定您用於 Microsoft Entra 驗證的身分識別具有映像資源的權限。 請參閱使用 Active Directory 驗證 Batch 服務解決方案。
在集區的存留期內,受控映像的資源必須存在。 如果刪除基礎資源,則無法調整集區。
Batch 服務 .NET SDK
private static VirtualMachineConfiguration CreateVirtualMachineConfiguration(ImageReference imageReference)
{
return new VirtualMachineConfiguration(
imageReference: imageReference,
nodeAgentSkuId: "batch.node.windows amd64");
}
private static ImageReference CreateImageReference()
{
return new ImageReference(
virtualMachineImageId: "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/images/{image definition name}");
}
private static void CreateBatchPool(BatchClient batchClient, VirtualMachineConfiguration vmConfiguration)
{
try
{
CloudPool pool = batchClient.PoolOperations.CreatePool(
poolId: PoolId,
targetDedicatedComputeNodes: PoolNodeCount,
virtualMachineSize: PoolVMSize,
virtualMachineConfiguration: vmConfiguration);
pool.Commit();
}
Batch 管理 REST API
REST API URI
PUT https://management.azure.com/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Batch/batchAccounts/{account name}/pools/{pool name}?api-version=2020-03-01
要求本文
{
"properties": {
"vmSize": "{VM size}",
"deploymentConfiguration": {
"virtualMachineConfiguration": {
"imageReference": {
"id": "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/images/{image name}"
},
"nodeAgentSkuId": "{Node Agent SKU ID}"
}
}
}
}
大型集區的考量
如果您打算使用自訂映像來建立含有數百個或更多 VM 的集區,請務必依照先前的指導方針,使用從 VM 快照集建立的映像。
另請注意下列考量:
大小限制 - 使用自訂映像時,Batch 會將集區大小限制在 2500 個專用計算節點,或 1000 個現成節點。
如果您使用同一個映像 (或以相同基礎快照集為基礎的多個映像) 來建立多個集區,則集區中的計算節點總數不可超過上述限制。 我們不建議將一個映像或其基礎快照集用於多個集區。
如果您使用輸入 NAT 集區來設定集區,則可能會降低限制。
調整逾時 - 如果您的集區包含固定數目的節點 (不自動調整規模),請將集區的 resizeTimeout 屬性值提高到 20-30 分鐘之類的值。 如果您的集區在逾時期間內未達到其目標大小,請執行另一個調整大小作業。
如果您規劃的集區含有超過 300 個計算節點,您可能需要多次調整集區大小,才能達到目標大小。
藉由使用 Azure Compute Gallery,您可以使用自訂映像建立較大的集區,以及更多共用映像複本,以及改善的效能優點,例如節點準備就緒的時間減少。
使用 Packer 的考量
只有透過使用者訂用帳戶模式 Batch 帳戶,才能使用 Packer 直接建立受控映像資源。 若為 Batch 服務模式帳戶,您必須先建立 VHD,然後將 VHD 匯入至受控映像資源。 根據集區配置模式而定 (使用者訂用帳戶或 Batch 服務),建立受控映像資源的步驟會有所不同。
如有任何集區參考自訂映射,在這些集區的存留期內,請確定用來建立受控映像的資源始終存在。 否則,可能會導致集區配置失敗和/或調整大小失敗。
如果移除映像或基礎資源,您可能會收到類似下列的錯誤:There was an error encountered while performing the last resize on the pool. Please try resizing the pool again. Code: AllocationFailed
。 如果您收到此錯誤,請確定未移除基礎資源。
如需使用 Packer 建立 VM 的詳細資訊,請參閱使用 Packer 建立 Linux 映像或使用 Packer 組建 Windows 映像。
下一步
- 了解如何使用 Azure Compute Gallery 建立自訂集區。
- 如需更深入的 Batch 概觀,請參閱 Batch 服務工作流程和資源。