Aktualizowanie właściwości puli usługi Batch

Podczas tworzenia puli usługi Azure Batch należy określić określone właściwości definiujące konfigurację puli. Przykłady obejmują określanie rozmiaru maszyny wirtualnej, obrazu maszyny wirtualnej do użycia, konfiguracji sieci wirtualnej i ustawień szyfrowania. Jednak może być konieczne zaktualizowanie właściwości puli wraz z ewolucją obciążenia lub gdy obraz maszyny wirtualnej osiągnie koniec cyklu życia.

Niektóre, ale nie wszystkie, z tych właściwości puli można załatać lub zaktualizować, aby dostosować do tych sytuacji. Ten artykuł zawiera informacje na temat aktualizowalnych właściwości puli, oczekiwanych zachowań przy aktualizacji właściwości puli oraz przykładów.

Napiwek

Niektóre właściwości puli można zaktualizować tylko za pomocą interfejsów API płaszczyzny zarządzania usługi Batch lub zestawów SDK, korzystając z uwierzytelniania Entra. Aby te operacje były dostępne, należy zainstalować lub użyć odpowiedniego interfejsu API lub zestawu SDK .

Właściwości puli z możliwością aktualizacji

Usługa Batch udostępnia wiele metod aktualizowania atrybutów na puli. Wybór interfejsu API, który ma zostać użyty, określa zestaw właściwości puli, które można zaktualizować, oraz sposób ich aktualizacji.

Uwaga

Jeśli chcesz zaktualizować właściwości puli, które nie są częścią następujących interfejsów API aktualizacji lub poprawek, należy ponownie utworzyć pulę, aby odzwierciedlić żądany stan.

Warstwa zarządzania: pula — aktualizacja

Zalecaną ścieżką aktualizowania właściwości puli jest użycie interfejsu API Pool - Update w ramach API lub SDK płaszczyzny zarządzania Batch. Ten interfejs API oferuje najbardziej pełny i elastyczny sposób na aktualizację właściwości puli. Użycie tego interfejsu API umożliwia selektywne aktualizowanie właściwości puli w zakresie płaszczyzny zarządzania oraz daje możliwość modyfikowania innych właściwości, które w przeciwnym razie byłyby niezmienne przy użyciu interfejsów API płaszczyzny danych.

Ważne

Należy użyć wersji 2024-07-01 lub nowszej Batch Management Plane API do aktualizowania właściwości puli, zgodnie z opisem w tej sekcji.

Ponieważ ta operacja jest operacją PATCH, są aktualizowane tylko właściwości puli określone w żądaniu. Jeśli właściwości nie są określone w ramach żądania, istniejące wartości pozostają niezmodyfikowane.

Niektóre właściwości można zaktualizować tylko wtedy, gdy pula nie ma w niej aktywnych węzłów lub gdy całkowita liczba węzłów obliczeniowych w puli wynosi zero. Właściwości, które nie wymagają, aby rozmiar puli był zerowy dla nowej wartości, są następujące:

  • pakiety aplikacji
  • certyfikaty
  • metadane
  • ustawienia skalowania
  • rozpocznij zadanie

Jeśli istnieją aktywne węzły po zaktualizowaniu puli przy użyciu tych właściwości, ponowne uruchomienie aktywnych węzłów obliczeniowych może być wymagane, aby zmiany zaczęły obowiązywać. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją dotyczącą poszczególnych właściwości puli.

Wszystkie inne właściwości puli z możliwością aktualizacji wymagają, aby pula miała rozmiar zero węzłów, aby mogła zostać uwzględniona w żądaniu aktualizacji.

Możesz również użyć Pool - Create API, aby zaktualizować wybrane właściwości, ale ponieważ operacja to PUT, żądanie w pełni zastępuje wszystkie istniejące właściwości. W związku z tym każda właściwość, która nie jest określona w żądaniu, zostanie usunięta lub ustawiona ze skojarzonym ustawieniem domyślnym.

Przykład: Aktualizowanie specyfikacji obrazu maszyny wirtualnej

Na poniższym przykładzie pokazano, jak zaktualizować konfigurację obrazu VM puli za pomocą zestawu SDK płaszczyzny zarządzania C#.

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

Przykład: Aktualizowanie rozmiaru maszyny wirtualnej i trybu komunikacji węzła docelowego

W poniższym przykładzie pokazano, jak za pomocą interfejsu API REST uprościć aktualizację rozmiaru obrazu maszyny wirtualnej puli oraz trybu komunikacji węzła docelowego.

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

Treść żądania

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

Płaszczyzna danych: Pula: właściwości poprawek lub aktualizacji

Płaszczyzna danych (Data Plane) umożliwia albo stosowanie poprawek, albo aktualizowanie wybranych właściwości puli. Dostępne jest API Pool - Aktualizacja Właściwości jako część Batch Data Plane API lub SDK.

Interfejs API Właściwości Aktualizacji umożliwia wybrane aktualizowanie właściwości puli zgodnie z opisem w dokumentacji. To żądanie w pełni zastępuje istniejące właściwości, dlatego wszystkie właściwości, które nie zostały określone w żądaniu, zostaną usunięte.

Aby zmiany zaczęły obowiązywać dla następujących właściwości, należy ponownie uruchomić węzły obliczeniowe:

  • odwołaniaDoPakietówAplikacji
  • odwołania do certyfikatów
  • rozpocznij zadanie

Aby zaktualizować właściwość targetNodeCommunicationMode, należy zmienić rozmiar puli na zero aktywnych węzłów.

Często zadawane pytania

  • Czy muszę wykonać inne operacje po zaktualizowaniu właściwości puli, gdy pula ma aktywne węzły?

Tak, w przypadku właściwości puli, które można zaktualizować za pomocą aktywnych węzłów, istnieją właściwości, które wymagają ponownego uruchomienia węzłów obliczeniowych. Alternatywnie można zmniejszyć liczbę węzłów w puli do zera, aby odzwierciedlić zmodyfikowane właściwości.

  • Czy mogę zmodyfikować w puli kolekcję tożsamości zarządzanych, gdy pula ma aktywne węzły?

Tak, ale nie powinieneś. Chociaż usługa Batch nie zabrania mutacji kolekcji aktywnych węzłów, zalecamy unikanie takiego działania, ponieważ prowadzi to do niespójności w kolekcji identyfikatorów, jeśli pula jest rozbudowywana. Zalecamy aktualizować tę właściwość tylko wtedy, gdy pula jest pusta. Aby uzyskać więcej informacji, zobacz artykuł Konfigurowanie tożsamości zarządzanych .

Następne kroki