Usar uma imagem gerenciada para criar um pool de imagens personalizado

Para criar um pool de imagens personalizado para as máquinas virtuais (VMs) do pool de lotes, você pode usar uma imagem gerenciada para criar uma imagem da Galeria de Computação do Azure. O uso de apenas uma imagem gerenciada também é suportado, mas apenas para versões de API até e incluindo 2019-08-01.

Aviso

O suporte para a criação de um pool de lotes usando uma imagem gerenciada está sendo desativado após 31 de março de 2026. Migre para hospedar imagens personalizadas na Galeria de Computação do Azure para usar na criação de um pool de imagens personalizado no Batch. Para obter mais informações, consulte o guia de migração.

Este tópico explica como criar um pool de imagens personalizado usando apenas uma imagem gerenciada.

Pré-requisitos

  • Um recurso de imagem gerenciado. Para criar um pool de máquinas virtuais usando uma imagem personalizada, você precisa ter ou criar um recurso de imagem gerenciado na mesma assinatura e região do Azure que a conta em lote. A imagem deve ser criada a partir de instantâneos do disco do sistema operacional (SO) da VM e, opcionalmente, de seus discos de dados anexados.

    • Use uma imagem personalizada exclusiva para cada pool criado.
    • Para criar um pool com a imagem usando as APIs de lote, especifique o ID do recurso da imagem, que é do formato /subscriptions/xxxx-xxxxxx-xxxxx-xxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myImage.
    • O recurso de imagem gerido tem de existir durante a duração do conjunto para permitir o aumento vertical e pode ser removido depois de o conjunto ser eliminado.
  • Autenticação do Microsoft Entra. A API do cliente Batch deve usar a autenticação do Microsoft Entra. O suporte do Azure Batch para Microsoft Entra ID está documentado em soluções de serviço Authenticate Batch com Ative Directory.

Preparar uma imagem gerenciada

No Azure, você pode preparar uma imagem gerenciada de:

  • Instantâneos do sistema operacional e dos discos de dados de uma VM do Azure
  • Uma VM do Azure generalizada com discos gerenciados
  • Um VHD local generalizado carregado na nuvem

Para dimensionar pools de lotes de forma confiável com uma imagem gerenciada, recomendamos criar a imagem gerenciada usando apenas o primeiro método: usando instantâneos dos discos da VM. As etapas a seguir mostram como preparar uma VM, tirar um instantâneo e criar uma imagem gerenciada a partir do instantâneo.

Preparar uma VM

Se estiver a criar uma nova VM para a imagem, utilize uma imagem do Azure Marketplace de primeira parte suportada pelo Batch como imagem base para a imagem gerida. Apenas imagens originais podem ser usadas como imagem base. Para obter uma lista completa das referências de imagens do Azure Marketplace suportadas pelo Azure Batch, consulte Listar imagens suportadas.

Nota

Não pode utilizar uma imagem de terceiros que tenha termos de licença e de compra adicionais como imagem base. Para obter informações sobre essas imagens do Marketplace, consulte as orientações para VMs Linux ou Windows .

Para usar imagens de terceiros, você pode usar a Galeria de Computação do Azure. Consulte Usar a Galeria de Computação do Azure para criar um pool de imagens personalizado para obter mais informações.

  • Verifique se a VM foi criada com um disco gerenciado. Essa é a configuração de armazenamento padrão quando você cria uma VM.
  • Não instale extensões do Azure, como a extensão Script Personalizado, na VM. Se a imagem contiver uma extensão pré-instalada, o Azure poderá encontrar problemas ao implantar o pool de lotes.
  • Ao usar discos de dados anexados, você precisa montar e formatar os discos de dentro de uma VM para usá-los.
  • Certifique-se de que a imagem base do SO fornecida utiliza a unidade temporária predefinida. O agente do nó Batch atualmente espera a unidade temporária padrão.
  • Certifique-se de que o disco do SO não está encriptado.
  • Quando a VM estiver em execução, conecte-se a ela via RDP (para Windows) ou SSH (para Linux). Instale qualquer software necessário ou copie os dados desejados.

Criar um instantâneo de VM

Um instantâneo é uma cópia completa e somente leitura de um VHD. Para criar um instantâneo de um sistema operacional de VMs ou discos de dados, você pode usar o portal do Azure ou as ferramentas de linha de comando. Para conhecer as etapas e opções para criar um instantâneo, consulte as orientações para VMs.

Criar uma imagem a partir de um ou mais instantâneos

Para criar uma imagem gerenciada a partir de um instantâneo, use as ferramentas de linha de comando do Azure, como o comando az image create . Você pode criar uma imagem especificando um instantâneo de disco do sistema operacional e, opcionalmente, um ou mais instantâneos de disco de dados.

Criar um pool a partir de uma imagem gerenciada

Depois de encontrar o ID de recurso da imagem gerenciada, crie um pool de imagens personalizado a partir dessa imagem. As etapas a seguir mostram como criar um pool de imagens personalizado usando o Serviço de Lote ou o Gerenciamento de Lotes.

Nota

Verifique se a identidade usada para a autenticação do Microsoft Entra tem permissões para o recurso de imagem. Consulte Autenticar soluções de serviço em lote com o Ative Directory.

O recurso para a imagem gerenciada deve existir durante o tempo de vida do pool. Se o recurso subjacente for excluído, o pool não poderá ser dimensionado.

SDK .NET do Serviço de Lote

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();
    }

API REST de Gestão de Lotes

URI da API REST

 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

Corpo do Pedido

 {
   "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}"
       }
     }
   }
 }

Considerações para piscinas grandes

Se você planeja criar um pool com centenas de VMs ou mais usando uma imagem personalizada, é importante seguir as orientações anteriores para usar uma imagem criada a partir de um instantâneo de VM.

Observe também as seguintes considerações:

  • Limites de tamanho - O lote limita o tamanho do pool a 2500 nós de computação dedicados, ou 1000 nós spot, quando você usa uma imagem personalizada.

    Se você usar a mesma imagem (ou várias imagens com base no mesmo instantâneo subjacente) para criar vários pools, o total de nós de computação nos pools não poderá exceder os limites anteriores. Não recomendamos o uso de uma imagem ou seu instantâneo subjacente para mais de um único pool.

    Os limites podem ser reduzidos se você configurar o pool com pools NAT de entrada.

  • Tempo limite de redimensionamento - Se o pool contiver um número fixo de nós (não dimensionar automaticamente), aumente a propriedade resizeTimeout do pool para um valor como 20 a 30 minutos. Se o pool não atingir o tamanho desejado dentro do período de tempo limite, execute outra operação de redimensionamento.

    Se você planeja um pool com mais de 300 nós de computação, talvez seja necessário redimensioná-lo várias vezes para atingir o tamanho de destino.

Usando a Galeria de Computação do Azure, você pode criar pools maiores com suas imagens personalizadas, juntamente com mais réplicas de Imagem Compartilhada, juntamente com benefícios de desempenho aprimorados, como tempo reduzido para os nós ficarem prontos.

Considerações sobre o uso do Packer

A criação de um recurso de imagem gerenciado diretamente com o Packer só pode ser feita com contas em lote do modo de assinatura do usuário. Para contas de modo de serviço em lote, você precisa criar um VHD primeiro e, em seguida, importar o VHD para um recurso de imagem gerenciado. Dependendo do modo de alocação do pool (assinatura do usuário ou serviço em lote), as etapas para criar um recurso de imagem gerenciado variam.

Verifique se o recurso usado para criar a imagem gerenciada existe durante os tempos de vida de qualquer pool que faça referência à imagem personalizada. A falha em fazê-lo pode resultar em falhas de alocação de pool e/ou falhas de redimensionamento.

Se a imagem ou o recurso subjacente for removido, você poderá receber um erro semelhante a: There was an error encountered while performing the last resize on the pool. Please try resizing the pool again. Code: AllocationFailed. Se você receber esse erro, verifique se o recurso subjacente não foi removido.

Para obter mais informações sobre como usar o Packer para criar uma VM, consulte Criar uma imagem do Linux com o Packer ou Criar uma imagem do Windows com o Packer.

Próximos passos