Compartilhar via


Atualizar propriedades do pool do Lote

Ao criar um pool do Lote do Azure, você especifica determinadas propriedades que definem a configuração do pool. Exemplos incluem especificar o tamanho da VM, a imagem da VM a ser usada, a configuração de rede virtual e as 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 atinge o fim da vida útil.

Algumas, mas não todas as propriedades do 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 do pool e exemplos.

Dica

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

Propriedades do pool atualizáveis

O Lote fornece vários métodos para atualizar propriedades em um pool. Selecionar qual API usar determina o conjunto de propriedades do pool que podem ser atualizadas, bem como o comportamento da atualização.

Observação

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

Plano de Gerenciamento: Pool – Atualizar

O caminho recomendado para atualizar as propriedades do pool é utilizar o Pool – atualizar API como parte da API ou SDK do Plano de Gerenciamento de Lote. Essa API fornece a maneira mais abrangente e flexível de atualizar as propriedades do pool. O uso desta API permite a atualização seletiva das propriedades do pool apenas no plano de gerenciamento e a capacidade 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 Lote para atualizar as propriedades do pool, conforme descrito nesta seção.

Como essa operação é uma 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 não modificados.

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 seja tamanho zero para que o novo valor entre em vigor são:

  • applicationPackages
  • certificados
  • metadados
  • scaleSettings
  • startTask

Se houver nós ativos quando o pool for atualizado com essas propriedades, a reinicialização de nós de computação ativa 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 seja de tamanho zero de nós a serem aceitos como parte da solicitação de atualização.

Você também pode usar Pool – Criar de 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 seja especificada na solicitação será removida ou definida com o padrão associado.

Exemplo: Atualizar especificação de imagem da VM

O exemplo a seguir mostra como atualizar uma configuração de imagem de VM do pool por meio do SDK do 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 de uma imagem de VM do pool e o modo de comunicação do nó de destino para ser simplificado 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 da solicitação

{
    "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 de seleção. A API disponível é a Pool - Atualizar Propriedades API como parte da API do Plano de Dados do Lote ou SDK.

A API de Propriedades de Atualização permite selecionar a atualização das propriedades do pool, conforme especificado na documentação. Essa solicitação substitui totalmente as propriedades existentes, portanto, todas as propriedades que não são especificadas na solicitação são removidas.

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

  • applicationPackageReferences
  • certificateReferences
  • startTask

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

Perguntas Frequentes

  • 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, o pool pode ser reduzido horizontalmente para zero nós para refletir as propriedades modificadas.

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

Sim, mas você não deveria. Embora o Lote não proíba a mutação da coleção com nós ativos, recomendamos evitar isso, pois isso leva à inconsistência na coleção de identidades se o pool for dimensionado. Recomendamos atualizar essa propriedade somente quando o pool for dimensionado como zero. Para obter mais informações, consulte o artigo Configurar identidades gerenciadas.

Próximas etapas