使用受控映像建立自定義映射集區

若要為 Batch 集區的虛擬機 (VM) 建立自定義映射集區,您可以使用受控映射來建立 Azure 計算資源庫映像。 也支援只使用受控映射,但僅適用於最高且包含 2019-08-01 的 API 版本。

警告

在 2026 年 3 月 31 日之後,即將淘汰使用受控映射建立 Batch 集區的支援。 請移轉至在 Azure 計算資源庫中裝載自定義映像,以用於在 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 驗證。 Microsoft Entra ID 的 Azure Batch 支援記載於 使用 Active Directory 驗證 Batch 服務解決方案中。

準備受控映像

在 Azure 中,您可以從下列項目準備受控映射:

  • Azure VM OS 和數據磁碟的快照集
  • 具有受控磁碟的一般化 Azure VM
  • 上傳至雲端的一般化內部部署 VHD

若要使用受控映像可靠地調整 Batch 集區,建議您只使用第一種方法建立受控映射:使用 VM 磁碟的快照集。 下列步驟示範如何準備 VM、擷取快照集,以及從快照集建立受控映射。

準備 VM

如果您要為映像建立新的 VM,請使用 Batch 所支援的第一方 Azure Marketplace 映射作為受控映像的基底映射。 只有第一方映像可以做為基底映像。 若要取得 Azure Batch 所支援之 Azure Marketplace 映像參考的完整清單,請參閱 列出支援的映像

注意

您無法使用具有額外授權和購買條款的第三方映像作為基礎映像。 如需這些 Marketplace 映像的相關信息,請參閱 LinuxWindows VM 的指引。

若要使用第三方映射,您可以使用 Azure 計算資源庫。 如需詳細資訊,請參閱 使用 Azure 計算資源庫建立自定義映射集區

  • 確定 VM 是使用受控磁碟建立的。 這是當您建立 VM 時的預設記憶體設定。
  • 請勿在 VM 上安裝 Azure 擴充功能,例如自定義腳本擴充功能。 如果映像包含預安裝的擴充功能,Azure 可能會在部署 Batch 集區時遇到問題。
  • 使用連結的數據磁碟時,您必須從 VM 內掛接和格式化磁碟,才能使用這些磁碟。
  • 請確定您提供的基底 OS 映射會使用預設暫存磁碟驅動器。 Batch 節點代理程式目前預期預設暫存磁碟驅動器。
  • 確定 OS 磁碟未加密。
  • VM 執行之後,請透過 RDP(適用於 Windows)或 SSH 連線到 VM(適用於 Linux)。 安裝任何必要的軟體或複製所需的數據。

建立 VM 快照集

快照集是 VHD 的完整唯讀複本。 若要建立 VM OS 或資料磁碟的快照集,您可以使用 Azure 入口網站 或命令行工具。 如需建立快照集的步驟和選項,請參閱 VM指引。

從一或多個快照集建立映像

若要從快照集建立受控映射,請使用 Azure 命令行工具,例如 az image create 命令。 您可以藉由指定 OS 磁碟快照集,以及選擇性地指定一或多個數據磁碟快照集來建立映像。

從受控映像建立集區

找到受控映像的資源標識符之後,請從該映像建立自定義映射集區。 下列步驟說明如何使用 Batch 服務或 Batch Management 建立自定義映像集區。

注意

請確定您用於 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 Management 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 的集區,請務必遵循上述指引,使用從 VM 快照集建立的映像。

另請注意下列考慮:

  • 大小限制 - 當您使用自定義映射時,Batch 會將集區大小限製為 2500 個專用計算節點,或 1000 個現成節點

    如果您使用相同的映像(或以相同基礎快照為基礎的多個映射)來建立多個集區,集區中的計算節點總數不能超過上述限制。 不建議針對多個集區使用映像或其基礎快照集。

    如果您設定具有 輸入NAT集區的集區,可能會降低限制。

  • 重設大小逾時 - 如果您的集區包含固定數目的節點(不會自動調整),請增加集區 resizeTimeout 屬性的值,例如 20-30 分鐘。 如果您的集區未在逾時期間內達到其目標大小,請執行另一個 重設大小作業

    如果您規劃的集區有 300 個以上的計算節點,您可能需要多次調整集區的大小,才能達到目標大小。

藉由使用 Azure 計算資源庫,您可以使用自定義映像建立較大的集區,以及更多共用映射複本,以及改善的效能優點,例如節點準備就緒的時間減少。

使用 Packer 的考慮

使用 Packer 直接建立受控映射資源,只能使用使用者訂用帳戶模式 Batch 帳戶來完成。 針對 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 映射。

下一步