Batch 풀에서 확장 사용
확장은 Batch 컴퓨팅 노드에서 프로비저닝 후 구성 및 설치를 용이하게 하는 소규모 애플리케이션입니다. Azure Batch에서 허용하는 확장을 선택하고 프로비전되는 컴퓨팅 노드에 설치할 수 있습니다. 그런 다음 확장이 의도된 작업을 수행할 수 있습니다.
사용하는 확장의 라이브 상태를 확인하고 검색, 수정 또는 진단 기능을 실행하기 위해 확장이 반환하는 정보를 검색할 수 있습니다.
필수 조건
- 확장이 포함된 풀은 가상 머신 구성을 사용해야 합니다.
- CustomScript 확장 유형은 Azure Batch 서비스에 예약되어 있으므로 재정의할 수 없습니다.
- 일부 확장은 제대로 기능하기 위해 컴퓨팅 노드의 컨텍스트에서 액세스할 수 있는 풀 수준 관리 ID가 필요할 수 있습니다. 확장에 해당하는 경우 Batch 풀에서 관리 ID 구성을 참조하세요.
팁
기존 풀에 확장을 추가할 수 없습니다. 확장을 추가, 제거 또는 업데이트하려면 풀을 다시 만들어야 합니다.
지원되는 확장
Batch 풀을 만들 때 현재 다음 확장을 설치할 수 있습니다.
- Linux용 Azure Key Vault 확장
- Windows용 Azure Key Vault 확장
- Linux용 Azure Monitor 로그 분석 및 모니터링 확장
- Windows용 Azure Monitor 로그 분석 및 모니터링 확장
- Azure DSC(Desired State Configuration) 확장
- Windows VM용 Azure Diagnostics 확장
- AMD에서 Windows용 HPC GPU 드라이버 확장
- NVIDIA에서 Windows용 HPC GPU 드라이버 확장
- NVIDIA에서 Linux용 HPC GPU 드라이버 확장
- Windows용 Microsoft Antimalware 확장
- Linux용 Azure Monitor 에이전트
- Windows용 Azure Monitor 에이전트
지원 요청을 개설하여 다른 게시자 및/또는 확장 유형에 대한 지원을 요청할 수 있습니다.
확장을 사용하여 풀 만들기
다음 예제에서는 Azure Key Vault 확장을 사용하는 Linux/Windows 노드의 Batch 풀을 만듭니다.
REST API URI
PUT https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Batch/batchAccounts/<batchaccountName>/pools/<batchpoolName>?api-version=2021-01-01
Linux 노드에 대한 요청 본문
{
"name": "test1",
"type": "Microsoft.Batch/batchAccounts/pools",
"properties": {
"vmSize": "STANDARD_DS2_V2",
"taskSchedulingPolicy": {
"nodeFillType": "Pack"
},
"deploymentConfiguration": {
"virtualMachineConfiguration": {
"imageReference": {
"publisher": "microsoftcblmariner",
"offer": "cbl-mariner",
"sku": "cbl-mariner-2",
"version": "latest"
},
"nodeAgentSkuId": "batch.node.mariner 2.0",
"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": {}
}
}
}
Windows 노드에 대한 요청 본문
{
"name": "test1",
"type": "Microsoft.Batch/batchAccounts/pools",
"properties": {
"vmSize": "STANDARD_DS2_V2",
"taskSchedulingPolicy": {
"nodeFillType": "Pack"
},
"deploymentConfiguration": {
"virtualMachineConfiguration": {
"imageReference": {
"publisher": "microsoftwindowsserver",
"offer": "windowsserver",
"sku": "2022-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": {}
}
}
}
풀에서 확장 데이터 가져오기
다음 예제에서는 Azure Key Vault 확장에서 데이터를 검색합니다.
REST API URI
GET https://<accountName>.<region>.batch.azure.com/pools/<poolName>/nodes/<tvmNodeName>/extensions/secretext?api-version=2010-01-01
응답 본문
{
"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}"
}
}
Key Vault 확장 문제 해결
Key Vault 확장이 잘못 구성된 경우 컴퓨팅 노드가 사용 가능한 상태일 수 있습니다. Key Vault 확장 오류를 해결하려면 일시적으로 requireInitialSync를 false로 설정하고 풀을 다시 배포한 다음 컴퓨팅 노드가 유휴 상태가 되고 컴퓨팅 노드에 로그인하여 KeyVault 확장 로그에서 오류를 확인하고 구성 문제를 해결할 수 있습니다. 자세한 내용을 보려면 다음 Key Vault 확장 문서 링크를 참조하세요.
다음 단계
- 풀 노드에 애플리케이션 및 데이터를 복사하는 다양한 방법을 알아봅니다.
- 노드 및 풀 작업에 대해 알아봅니다.