Usar uma imagem gerenciada para criar um pool de imagens personalizadas

Para criar um pool de imagens personalizadas para VMs (máquinas virtuais) do seu pool de Lote, é possível usar uma imagem gerenciada para criar uma imagem da Galeria de Computação do Azure. Também há suporte para o uso de apenas uma imagem gerenciada, mas só para versões da API até o dia 01 de agosto de 2019.

Aviso

O suporte para criar um pool do Lote usando uma imagem gerenciada será 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 Lote. Para obter mais informações, confira o guia de migração.

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

Pré-requisitos

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

    • Use uma imagem personalizada exclusiva para cada pool que criar.
    • Para criar um pool com a imagem usando as APIs de Lote, especifique a ID de recurso da imagem, que tem a forma /subscriptions/xxxx-xxxxxx-xxxxx-xxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myImage.
    • O recurso de imagem gerenciada deve existir pelo tempo de vida do pool para permitir a expansão e pode ser removido após a exclusão do pool.
  • Autenticação do Microsoft Entra. A API do cliente do Lote deve usar a autenticação do Microsoft Entra. O suporte ao Lote do Azure da ID do Microsoft Entra está documentado em Autenticar as soluções de serviço do Lote com o Active Directory.

Preparar uma imagem gerenciada

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

  • Instantâneos de discos de dados e do SO de uma VM do Azure
  • Uma VM do Azure generalizada com discos gerenciados
  • Um VHD local generalizado carregado para a nuvem

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

Preparar uma VM

Se você estiver criando uma nova VM para a imagem, use uma imagem interna do Azure Marketplace com suporte no Lote como a imagem base para sua imagem gerenciada. Somente imagens internas podem ser usadas como uma imagem base. Para obter uma lista completa das referências de imagem do Azure Marketplace com suporte para o Lote do Azure, consulte Lista de Imagens com Suporte.

Observação

Você não pode usar uma imagem de terceiros que tenham licenças adicionais e termos de compra como sua imagem de base. Para obter informações sobre essas imagens do Marketplace, consulte as diretrizes par máquinas virtuais Linux ou Windows.

Para usar imagens de terceiros, você pode usar a f. 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 é 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 de script personalizado, na VM. Se a imagem contiver uma extensão pré-instalada, o Azure poderá ter problemas ao implantar o pool do Lote.
  • Ao usar discos de dados anexados, você precisa montar e formatar os discos de dentro de uma VM para usá-los.
  • Verifique se a imagem do sistema operacional base que você forneceu usa unidade temporária padrão. O agente do nó de Lote no momento espera unidade temporária padrão.
  • Verifique se o disco do sistema operacional não está criptografado.
  • Quando a VM estiver em execução, conecte-se a ela via RDP (para Windows) ou SSH (para Linux). Instale o software necessário ou copie os dados desejados.

Criar um instantâneo da VM

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

Criar uma imagem de um ou mais instantâneos

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

Criar um pool com base em uma imagem gerenciada

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

Observação

Verifique se a identidade usada para a autenticação do Microsoft Entra tem permissões para o recurso de imagem. Consulte Autenticar soluções do serviço do Lote no Active 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 do .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 do Gerenciamento do Lote

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 da solicitação

 {
   "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 sobre pools grandes

Se você planeja criar um pool com centenas de VMs ou mais usando uma imagem personalizada, é importante seguir as diretrizes anteriores para usar uma imagem criada 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 dedicada, 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, os nós de computação totais nos pools não poderão exceder os limites anteriores. Não recomendamos o uso de uma imagem ou do respectivo instantâneo subjacente para mais de um único pool.

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

  • Tempo limite de redimensionamento – se o pool contém um número fixo de nós (não dimensiona automaticamente), aumente propriedade resizeTimeout do pool para um valor como 20 ou 30 minutos. Se o seu pool não alcançar seu tamanho de destino dentro do período de tempo limite, execute outra operação de redimensionamento.

    Se você planejar um pool com mais de 300 nós de computação, você poderá precisar redimensionar o pool várias vezes para alcançar o tamanho de destino.

Usando a Galeria de Computação do Azure, crie pools maiores com suas imagens personalizadas, juntamente com mais réplicas de Imagem Compartilhada, juntamente com benefícios de desempenho aprimorados, como diminuição do tempo para que os nós fiquem prontos.

Considerações para o uso do Packer

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

Garanta que o recurso usado para criar a imagem gerenciada exista para os tempos de vida de qualquer pool que referencie a imagem personalizada. A impossibilidade de fazer isso pode resultar em falhas de alocação de pool e/ou em falhas de redimensionamento.

Se a imagem ou o recurso subjacente for removido, você poderá receber um erro semelhante a este: There was an error encountered while performing the last resize on the pool. Please try resizing the pool again. Code: AllocationFailed. Se você o obter 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óximas etapas