Delen via


Extensies gebruiken met Batch-pools

Extensies zijn kleine applicaties die de configuratie en installatie na het inrichten op Batch compute knooppunten vergemakkelijken. U kunt een van de toegestane extensies selecteren en deze installeren op de rekenknooppunten zodra ze worden ingericht. Daarna kan de extensie de beoogde bewerking uitvoeren.

U kunt de livestatus controleren van de extensies die u gebruikt en de informatie ophalen die ze retourneren om detectie-, correctie- of diagnostische mogelijkheden na te streven.

Prerequisites

  • Pools met extensies moeten gebruikmaken van configuratie van virtuele machines.
  • Het type CustomScript-extensie is gereserveerd voor de Azure Batch-service en kan niet worden overschreven.
  • Sommige extensies hebben mogelijk beheerde identiteit op poolniveau nodig die toegankelijk is in de context van een rekenknooppunt om goed te kunnen functioneren. Zie het configureren van beheerde identiteiten in Batch-pools , indien van toepassing voor de extensies.

Tip

Extensies kunnen niet worden toegevoegd aan een bestaande pool. Pools moeten opnieuw worden gemaakt om extensies toe te voegen, te verwijderen of bij te werken.

Ondersteunde extensies

De volgende extensies kunnen momenteel worden geïnstalleerd bij het maken van een Batch-pool:

U kunt ondersteuning aanvragen voor andere uitgevers en/of extensietypen door een ondersteuningsaanvraag te openen.

Een pool met extensies maken

In het volgende voorbeeld wordt een Batch-pool met Linux-/Windows-knooppunten gemaakt die gebruikmaakt van de Azure Key Vault-extensie.

REST API-URI

 PUT https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Batch/batchAccounts/<batchaccountName>/pools/<batchpoolName>?api-version=2021-01-01

Verzoekinhoud voor Linux-knooppunt

{
  "name": "test1",
  "type": "Microsoft.Batch/batchAccounts/pools",
  "properties": {
    "vmSize": "STANDARD_D2S_V5",
    "taskSchedulingPolicy": {
      "nodeFillType": "Pack"
    },
    "deploymentConfiguration": {
      "virtualMachineConfiguration": {
        "imageReference": {
          "publisher": "Canonical",
          "offer": "ubuntu-24_04-lts",
          "sku": "server",
          "version": "latest"
        },
        "nodeAgentSkuId": "batch.node.ubuntu 24.04",
        "extensions": [
          {
            "name": "secretext",
            "type": "KeyVaultForLinux",
            "publisher": "Microsoft.Azure.KeyVault",
            "typeHandlerVersion": "3.0",
            "autoUpgradeMinorVersion": true,
            "settings": {
              "secretsManagementSettings": {
                "pollingIntervalInS": "300",
                "certificateStoreLocation": "/var/lib/waagent/Microsoft.Azure.KeyVault",
                "requireInitialSync": true,
                "observedCertificates": [
                  "https://testkvwestus2.vault.azure.net/secrets/authsecreat"
                ]
              },
              "authenticationSettings": {
                "msiEndpoint": "http://169.254.169.254/metadata/identity",
                "msiClientId": "885b1a3d-f13c-4030-afcf-9f05044d78dc"
              }
            },
            "protectedSettings": {}
          }
        ]
      }
    },
    "scaleSettings": {
      "fixedScale": {
        "targetDedicatedNodes": 1,
        "targetLowPriorityNodes": 0,
        "resizeTimeout": "PT15M"
      }
    }
  },
  "identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ACR/providers/Microsoft.ManagedIdentity/userAssignedIdentities/testumaforpools": {}
    }
  }
}

Aanvraagbody voor Windows-knooppunt

{
    "name": "test1",
    "type": "Microsoft.Batch/batchAccounts/pools",
    "properties": {
        "vmSize": "STANDARD_D4S_V5",
        "taskSchedulingPolicy": {
            "nodeFillType": "Pack"
        },
        "deploymentConfiguration": {
            "virtualMachineConfiguration": {
                "imageReference": {
                    "publisher": "microsoftwindowsserver",
                    "offer": "windowsserver",
                    "sku": "2025-datacenter",
                    "version": "latest"
                },
                "nodeAgentSkuId": "batch.node.windows amd64",
                "extensions": [
                    {
                        "name": "secretext",
                        "type": "KeyVaultForWindows",
                        "publisher": "Microsoft.Azure.KeyVault",
                        "typeHandlerVersion": "3.0",
                        "autoUpgradeMinorVersion": true,
                        "settings": {
                            "secretsManagementSettings": {
                                "pollingIntervalInS": "300",
                                "requireInitialSync": true,
                                "observedCertificates": [
                                    {
                                        "https://testkvwestus2.vault.azure.net/secrets/authsecreat"
                                        "certificateStoreLocation": "LocalMachine",
                                        "keyExportable": true
                                    }
                                ]
                            },
                            "authenticationSettings": {
                                "msiEndpoint": "http://169.254.169.254/metadata/identity",
                                "msiClientId": "885b1a3d-f13c-4030-afcf-9f05044d78dc"
                            }
                        },
                        "protectedSettings":{}
                    }
                ]
            }
        },
        "scaleSettings": {
            "fixedScale": {
                "targetDedicatedNodes": 1,
                "targetLowPriorityNodes": 0,
                "resizeTimeout": "PT15M"
            }
        }
    },
    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ACR/providers/Microsoft.ManagedIdentity/userAssignedIdentities/testumaforpools": {}
        }
    }
}

Extensiegegevens ophalen uit een pool

In het volgende voorbeeld worden gegevens opgehaald uit de Azure Key Vault-extensie.

REST API-URI

 GET https://<accountName>.<region>.batch.azure.com/pools/<poolName>/nodes/<tvmNodeName>/extensions/secretext?api-version=2010-01-01

Antwoordlichaam

{
  "odata.metadata": "https://testwestus2batch.westus2.batch.azure.com/$metadata#extensions/@Element",
  "instanceView": {
    "name": "secretext",
    "statuses": [
      {
        "code": "ProvisioningState/succeeded",
        "level": 0,
        "displayStatus": "Provisioning succeeded",
        "message": "Successfully started Key Vault extension service. 2021-02-08T19:49:39Z"
      }
    ]
  },
  "vmExtension": {
    "name": "KVExtensions",
    "publisher": "Microsoft.Azure.KeyVault",
    "type": "KeyVaultForLinux",
    "typeHandlerVersion": "1.0",
    "autoUpgradeMinorVersion": true,
    "settings": "{\r\n  \"secretsManagementSettings\": {\r\n    \"pollingIntervalInS\": \"300\",\r\n    \"certificateStoreLocation\": \"/var/lib/waagent/Microsoft.Azure.KeyVault\",\r\n    \"requireInitialSync\": true,\r\n    \"observedCertificates\": [\r\n      \"https://testkvwestus2.vault.azure.net/secrets/testumi\"\r\n    ]\r\n  },\r\n  \"authenticationSettings\": {\r\n    \"msiEndpoint\": \"http://169.254.169.254/metadata/identity\",\r\n    \"msiClientId\": \"885b1a3d-f13c-4030-afcf-922f05044d78dc\"\r\n  }\r\n}"
  }
}

Problemen met Key Vault-extensie oplossen

Als de Key Vault-extensie onjuist is geconfigureerd, heeft het rekenknooppunt mogelijk een bruikbare status. Als u problemen met de Key Vault-extensie wilt oplossen, kunt u uw pool tijdelijk instellen requireInitialSyncfalse en opnieuw implementeren. Zodra het rekenknooppunt inactief is, kunt u zich aanmelden bij het rekenknooppunt om keyVault-extensielogboeken te controleren op fouten en de configuratieproblemen op te lossen. Ga naar de volgende documentatiekoppelingen voor Key Vault-extensies voor meer informatie.

Overwegingen voor de extensie Application Health

De Batch Node Agent die op het knooppunt wordt uitgevoerd, start altijd een HTTP-server die de status van de agent retourneert. Deze HTTP-server luistert op lokaal IP-adres 127.0.0.1 en poort 29879. Het retourneert altijd een 200-status, maar met de reactiebody zijnde gezond of ongezond. Elk ander antwoord (of gebrek daaraan) wordt beschouwd als een 'onbekende' status. Deze installatie is in overeenstemming met de richtlijnen voor het draaien van een HTTP-server die een "Rich Health State" geeft volgens de officiële documentatie van de 'Applicatiegezondheid-extensie'.

Als u uw eigen gezondheidsserver instelt, zorg er dan voor dat de HTTP-server luistert op een unieke poort. Uw statusserver moet een query uitvoeren op de Batch Node Agent-server en deze combineren met uw statussignaal om een samengesteld statusresultaat te genereren. Anders kunt u in de situatie komen waarin een 'gezond' knooppunt niet over een goed functionerende Batch-agent beschikt.

Volgende stappen