Partilhar via


Atualizar propriedades do grupo de lotes

Ao criar um pool de Lotes do Azure, você especifica determinadas propriedades que definem a configuração do pool. Os exemplos incluem a especificação do tamanho da VM, da imagem da VM a ser usada, da configuração de rede virtual e das configurações de criptografia. No entanto, talvez seja necessário atualizar as propriedades do pool à medida que sua carga de trabalho evolui ao longo do tempo ou se uma imagem de VM atingir o fim da vida útil.

Algumas, mas não todas, dessas propriedades de pool podem ser corrigidas ou atualizadas para acomodar essas situações. Este artigo fornece informações sobre propriedades de pool atualizáveis, comportamentos esperados para atualizações de propriedades de pool e exemplos.

Gorjeta

Algumas propriedades do pool só podem ser atualizadas usando as APIs ou SDKs do Batch Management Plane com a autenticação do Entra. Você precisará instalar ou usar a API ou SDK apropriado para que essas operações estejam disponíveis.

Propriedades do pool atualizáveis

O Batch fornece vários métodos para atualizar as propriedades num pool. A seleção de qual API usar determina o conjunto de propriedades do pool que podem ser atualizadas, bem como o comportamento de atualização.

Nota

Se desejar atualizar as propriedades do pool que não fazem parte das seguintes APIs de Atualização ou Patch, você deverá recriar o pool para refletir o estado desejado.

Plano de Gerenciamento: Pool - Atualização

O caminho recomendado para atualizar as propriedades do pool é utilizar a API Pool - Update como parte da API ou SDK da Plataforma de Gestão de Lotes. Essa API fornece a maneira mais abrangente e flexível de atualizar as propriedades do pool. O uso desta API permite selecionar a atualização das propriedades do pool exclusivamente no plano de gestão e a possibilidade de atualizar outras propriedades que, de outra forma, seriam imutáveis por meio das APIs do plano de dados.

Importante

Você deve usar a API versão 2024-07-01 ou mais recente da API do Plano de Gerenciamento de Lotes para atualizar as propriedades do pool, conforme descrito nesta seção.

Como essa operação é um PATCH, somente as propriedades do pool especificadas na solicitação são atualizadas. Se as propriedades não forem especificadas como parte da solicitação, os valores existentes permanecerão inalterados.

Algumas propriedades só podem ser atualizadas quando o pool não tem nós ativos ou quando o número total de nós de computação no pool é zero. As propriedades que não exigem que o pool tenha o tamanho zero para que o novo valor entre em vigor são:

  • pacotes de aplicações
  • certificados
  • metadados
  • configurações de escala
  • startTask

Se houver nós ativos quando o pool for atualizado com essas propriedades, a reinicialização dos nós de computação ativos poderá ser necessária para que as alterações entrem em vigor. Para obter mais informações, consulte a documentação de cada propriedade de pool individual.

Todas as outras propriedades de pool atualizáveis exigem que o pool tenha nós de tamanho zero para serem aceitos como parte da solicitação de atualização.

Você também pode usar Pool - Create API para atualizar essas propriedades selecionadas, mas como a operação é um PUT, a solicitação substitui totalmente todas as propriedades existentes. Portanto, qualquer propriedade que não esteja especificada na solicitação é removida ou definida com o padrão associado.

Exemplo: Atualizar especificação de imagem de VM

O exemplo a seguir mostra como atualizar uma configuração de imagem de VM de pool por meio do SDK C# do Plano de Gerenciamento:

public async Task UpdatePoolVmImage()
{
     // Authenticate
     var clientId = Environment.GetEnvironmentVariable("CLIENT_ID");
     var clientSecret = Environment.GetEnvironmentVariable("CLIENT_SECRET");
     var tenantId = Environment.GetEnvironmentVariable("TENANT_ID");
     var subscriptionId = Environment.GetEnvironmentVariable("SUBSCRIPTION_ID");
     ClientSecretCredential credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
     ArmClient client = new ArmClient(credential, subscriptionId);

     // Get an existing Batch account
     string resourceGroupName = "<resourcegroup>";
     string accountName = "<batchaccount>";
     ResourceIdentifier batchAccountResourceId = BatchAccountResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, accountName);
     BatchAccountResource batchAccount = client.GetBatchAccountResource(batchAccountResourceId);

     // get the collection of this BatchAccountPoolResource
     BatchAccountPoolCollection collection = batchAccount.GetBatchAccountPools();

     // Update the pool
     string poolName = "mypool";
     BatchAccountPoolData data = new BatchAccountPoolData()
     {
         DeploymentConfiguration = new BatchDeploymentConfiguration()
         {
             VmConfiguration = new BatchVmConfiguration(new BatchImageReference()
             {
                 Publisher = "MicrosoftWindowsServer",
                 Offer = "WindowsServer",
                 Sku = "2022-datacenter-azure-edition-smalldisk",
                 Version = "latest",
             },
             nodeAgentSkuId: "batch.node.windows amd64"),
         },
     };

     ArmOperation<BatchAccountPoolResource> lro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, poolName, data);
     BatchAccountPoolResource result = lro.Value;

     BatchAccountPoolData resourceData = result.Data;
     Console.WriteLine($"Succeeded on id: {resourceData.Id}");
}

Exemplo: Atualizar o tamanho da VM e o modo de comunicação do nó de destino

O exemplo a seguir mostra como atualizar o tamanho da imagem de uma VM de pool e simplificar o modo de comunicação do nó de destino por meio da API REST:

PATCH https://management.azure.com/subscriptions/<subscriptionid>/resourceGroups/<resourcegroupName>/providers/Microsoft.Batch/batchAccounts/<batchaccountname>/pools/<poolname>?api-version=2024-07-01

Corpo do Pedido

{
    "type": "Microsoft.Batch/batchAccounts/pools",
    "parameters": {
        "properties": {
            "vmSize": "standard_d32ads_v5",
            "targetNodeCommunicationMode": "simplified"
        }
    }
}

Plano de dados: Pool - Propriedades de patch ou atualização

O Plano de Dados oferece a capacidade de corrigir ou atualizar as propriedades do pool selecionado. A API disponível é a API Pool - Update Properties , como parte da Batch Data Plane API ou SDK.

A API Update Properties permite selecionar a atualização das propriedades do pool conforme especificado na documentação. Essa solicitação substitui totalmente as propriedades existentes, portanto, qualquer propriedade que não esteja especificada na solicitação é removida.

Os nós de computação devem ser reinicializados para que as alterações entrem em vigor para as seguintes propriedades:

  • referências de pacotes de aplicação
  • referências de certificado
  • startTask

O pool deve ser redimensionado para zero nós ativos para atualizações da propriedade targetNodeCommunicationMode.

FAQs

  • Preciso executar outras operações depois de atualizar as propriedades do pool enquanto o pool tem nós ativos?

Sim, para propriedades de pool que podem ser atualizadas com nós ativos, há propriedades selecionadas que exigem que os nós de computação sejam reinicializados. Como alternativa, pode-se reduzir o tamanho do pool para zero nós, de modo a refletir as propriedades modificadas.

  • Posso modificar a coleção de identidade gerenciada no pool enquanto o pool tiver nós ativos?

Sim, mas não deve. Embora o Batch não proíba a mutação da coleção com nós ativos, recomendamos evitar fazê-lo, pois isso leva a inconsistência na coleta de identidade se o pool for expandido. Recomendamos atualizar essa propriedade somente quando o pool tiver tamanho zero. Para obter mais informações, consulte o artigo Configurar identidades gerenciadas.

Próximos passos