Freigeben über


Aktualisieren von Batch-Pooleigenschaften

Wenn Sie einen Azure Batch-Pool erstellen, geben Sie bestimmte Eigenschaften an, die die Konfiguration des Pools definieren. Beispiele hierfür sind die Angabe der VM-Größe, des zu verwendenden VM-Images, der Konfiguration des virtuellen Netzwerks und der Verschlüsselungseinstellungen. Möglicherweise müssen Sie jedoch Pooleigenschaften aktualisieren, wenn sich Ihre Workload im Laufe der Zeit weiterentwickelt oder wenn ein VM-Image das Ende der Lebensdauer erreicht.

Einige, aber nicht alle dieser Pooleigenschaften können gepatcht oder aktualisiert werden, um diese Situationen zu berücksichtigen. Dieser Artikel enthält Informationen zu aktualisierbaren Pooleigenschaften, erwartetem Verhalten für Pooleigenschaftenaktualisierungen und Beispiele.

Tipp

Einige Pooleigenschaften können nur mithilfe der Batch-Verwaltungsebenen-APIs oder SDKs mithilfe der Entra-Authentifizierung aktualisiert werden. Sie müssen die entsprechende API oder das SDK installieren oder verwenden, damit diese Vorgänge verfügbar sind.

Aktualisierbare Pooleigenschaften

Batch stellt mehrere Methoden zum Aktualisieren von Eigenschaften in einem Pool bereit. Die Auswahl der zu verwendenden API bestimmt den Satz von Pooleigenschaften, die aktualisiert werden können, sowie das Updateverhalten.

Hinweis

Wenn Sie Pooleigenschaften aktualisieren möchten, die nicht Teil der folgenden Update- oder Patch-APIs sind, müssen Sie den Pool neu erstellen, um den gewünschten Zustand widerzuspiegeln.

Verwaltungsebene: Pool – Update

Der empfohlene Pfad zum Aktualisieren von Pooleigenschaften ist die Verwendung der Pool – Update-API als Teil der Batch-Verwaltungsebenen-API oder des SDKs. Diese API bietet die umfassendste und flexibelste Möglichkeit zum Aktualisieren von Pooleigenschaften. Mithilfe dieser API können selektiv nur Pooleigenschaften der Verwaltungsebene aktualisiert und andere Eigenschaften aktualisiert werden, die andernfalls über Datenebenen-APIs unveränderlich wären.

Wichtig

Sie müssen die API-Version 2024-07-01 oder neuer der Batch-Verwaltungsebenen-API zum Aktualisieren von Pooleigenschaften verwenden, wie in diesem Abschnitt beschrieben.

Da es sich bei diesem Vorgang um einen PATCH handelt, werden nur in der Anforderung angegebene Pooleigenschaften aktualisiert. Wenn Eigenschaften nicht als Teil der Anforderung angegeben werden, bleiben die vorhandenen Werte unverändert.

Einige Eigenschaften können nur aktualisiert werden, wenn der Pool keine aktiven Knoten enthält oder die Gesamtanzahl der Computeknoten im Pool Null ist. Die Eigenschaften, die nicht erfordern, dass die Poolgröße Null sein muss, damit der neue Wert wirksam wird:

  • applicationPackages
  • Zertifikate
  • Metadaten
  • scaleSettings
  • Aufgabe starten

Wenn es aktive Knoten gibt, wenn der Pool mit diesen Eigenschaften aktualisiert wird, ist möglicherweise ein Neustart aktiver Computeknoten erforderlich, damit Änderungen wirksam werden. Weitere Informationen finden Sie in der Dokumentation zu den einzelnen Pooleigenschaften.

Für alle anderen aktualisierbaren Pooleigenschaften muss der Pool die Größe null Knoten aufweisen, damit er als Teil der Anforderung zum Aktualisieren akzeptiert wird.

Sie können auch die Pool – Create-API verwenden, um diese ausgewählten Eigenschaften zu aktualisieren, aber da der Vorgang ein PUT-Vorgang ist, ersetzt die Anforderung alle vorhandenen Eigenschaften vollständig. Daher wird jede Eigenschaft, die nicht in der Anforderung angegeben ist, entfernt oder auf den zugeordneten Standardwert festgelegt.

Beispiel: Aktualisieren der VM-Imagespezifikation

Das folgende Beispiel zeigt, wie Sie eine VM-Poolimagekonfiguration über das C#-SDK der Verwaltungsebene aktualisieren:

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

Beispiel: Aktualisieren der VM-Größe und des Kommunikationsmodus für Zielknoten

Das folgende Beispiel zeigt, wie Sie eine VM-Poolimagegröße und einen Zielknotenkommunikationsmodus aktualisieren, damit sie über die REST-API vereinfacht werden:

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

Anforderungstext

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

Datenebene: Pool – Patch oder Update Properties

Die Datenebene bietet die Möglichkeit, ausgewählte Pooleigenschaften zu patchen oder zu aktualisieren. Die verfügbare API ist die Pool – API zum Aktualisieren von Eigenschaften als Teil der Batch Data-Plane-API oder des SDK.

Die Update Properties-API ermöglicht die selektive Aktualisierung der Pooleigenschaften, wie in der Dokumentation angegeben. Diese Anforderung ersetzt die vorhandenen Eigenschaften vollständig, daher wird jede Eigenschaft, die nicht in der Anforderung angegeben ist, entfernt.

Rechenknoten müssen neu gestartet werden, damit Änderungen für die folgenden Attribute wirksam werden:

  • applicationPackageReferences
  • Zertifikatreferenzen
  • Aufgabe starten

Der Pool muss für Aktualisierungen der targetNodeCommunicationMode-Eigenschaft auf null aktive Knoten verkleinert werden.

Häufig gestellte Fragen

  • Muss ich nach dem Aktualisieren von Pooleigenschaften andere Vorgänge ausführen, während der Pool über aktive Knoten verfügt?

Ja, für Pooleigenschaften, die mit aktiven Knoten aktualisiert werden können, gibt es ausgewählte Eigenschaften, für die Computeknoten neu gestartet werden müssen. Alternativ kann der Pool auf null Knoten herunterskaliert werden, um die geänderten Eigenschaften widerzuspiegeln.

  • Kann ich die Sammlung verwalteter Identitäten im Pool ändern, während der Pool über aktive Knoten verfügt?

Ja, aber du solltest nicht. Auch wenn Batch das Ändern der Sammlung mit aktiven Knoten nicht verbietet, wird empfohlen, dies zu vermeiden, da dies zu Inkonsistenzen in der Identitätssammlung führt, wenn der Pool aufskaliert wird. Es wird empfohlen, diese Eigenschaft nur zu aktualisieren, wenn die Größe des Pools Null ist. Weitere Informationen finden Sie im Artikel zum Konfigurieren verwalteter Identitäten.

Nächste Schritte