Wdrażanie usługi Azure Spot Virtual Machines przy użyciu szablonu Resource Manager
Dotyczy: ✔️ Maszyny wirtualne z systemem Linux
Korzystanie z usługi Azure Spot Virtual Machines umożliwia korzystanie z nieużywanej pojemności przy znacznych oszczędnościach kosztów. W dowolnym momencie, gdy platforma Azure potrzebuje pojemności z powrotem, infrastruktura platformy Azure eksmituje maszyny wirtualne typu spot platformy Azure. Maszyny wirtualne typu spot platformy Azure doskonale nadają się do obsługi obciążeń, które mogą obsługiwać przerwy, takie jak zadania przetwarzania wsadowego, środowiska deweloperskie/testowe, duże obciążenia obliczeniowe i inne.
Cennik usługi Azure Spot Virtual Machines jest zmienny na podstawie regionu i jednostki SKU. Aby uzyskać więcej informacji, zobacz Cennik maszyn wirtualnych dla systemów Linux i Windows.
Możesz ustawić maksymalną cenę, którą chcesz zapłacić za godzinę dla maszyny wirtualnej. Maksymalna cena maszyny wirtualnej typu spot platformy Azure można ustawić w dolarach amerykańskich (USD), używając maksymalnie pięciu miejsc dziesiętnych. Na przykład wartość 0.98765
będzie maksymalną ceną 0,98765 USD za godzinę. Jeśli ustawisz maksymalną cenę -1
na wartość , eksmisja maszyn wirtualnych nie jest oparta na cenie i będzie to bieżąca cena maszyn wirtualnych typu spot platformy Azure lub cena standardowej maszyny wirtualnej, w zależności od tego, która z tych wartości jest mniejsza, o ile jest dostępna pojemność i limit przydziału. Aby uzyskać więcej informacji na temat ustawiania maksymalnej ceny, zobacz Maszyny wirtualne typu spot platformy Azure — cennik.
Korzystanie z szablonu
W przypadku wdrożeń szablonów maszyn wirtualnych typu spot platformy Azure użyj"apiVersion": "2019-03-01"
polecenia lub nowszego.
priority
evictionPolicy
Dodaj właściwości i billingProfile
do elementu w szablonie:
"priority": "Spot",
"evictionPolicy": "Deallocate",
"billingProfile": {
"maxPrice": -1
}
Oto przykładowy szablon z dodanymi właściwościami maszyny wirtualnej typu spot platformy Azure. Zastąp nazwy zasobów własnymi i <password>
hasłem dla konta administratora lokalnego na maszynie wirtualnej.
{
"$schema": "http://schema.management.azure.com/schemas/2019-03-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
},
"variables": {
"vnetId": "/subscriptions/ec9fcd04-e188-48b9-abfc-abcd515f1836/resourceGroups/spotVM/providers/Microsoft.Network/virtualNetworks/spotVM",
"subnetName": "default",
"networkInterfaceName": "spotVMNIC",
"publicIpAddressName": "spotVM-ip",
"publicIpAddressType": "Dynamic",
"publicIpAddressSku": "Basic",
"virtualMachineName": "spotVM",
"osDiskType": "Premium_LRS",
"virtualMachineSize": "Standard_D2s_v3",
"adminUsername": "azureuser",
"adminPassword": "<password>",
"diagnosticsStorageAccountName": "diagstoragespot2019",
"diagnosticsStorageAccountId": "Microsoft.Storage/storageAccounts/diagstoragespot2019",
"diagnosticsStorageAccountType": "Standard_LRS",
"diagnosticsStorageAccountKind": "Storage",
"subnetRef": "[concat(variables('vnetId'), '/subnets/', variables('subnetName'))]"
},
"resources": [
{
"name": "spotVM",
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2019-03-01",
"location": "eastus",
"dependsOn": [
"[concat('Microsoft.Network/publicIpAddresses/', variables('publicIpAddressName'))]"
],
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"subnet": {
"id": "[variables('subnetRef')]"
},
"privateIPAllocationMethod": "Dynamic",
"publicIpAddress": {
"id": "[resourceId(resourceGroup().name, 'Microsoft.Network/publicIpAddresses', variables('publicIpAddressName'))]"
}
}
}
]
}
},
{
"name": "[variables('publicIpAddressName')]",
"type": "Microsoft.Network/publicIpAddresses",
"apiVersion": "2019-02-01",
"location": "eastus",
"properties": {
"publicIpAllocationMethod": "[variables('publicIpAddressType')]"
},
"sku": {
"name": "[variables('publicIpAddressSku')]"
}
},
{
"name": "[variables('virtualMachineName')]",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2019-03-01",
"location": "eastus",
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]",
"[concat('Microsoft.Storage/storageAccounts/', variables('diagnosticsStorageAccountName'))]"
],
"properties": {
"hardwareProfile": {
"vmSize": "[variables('virtualMachineSize')]"
},
"storageProfile": {
"osDisk": {
"createOption": "fromImage",
"managedDisk": {
"storageAccountType": "[variables('osDiskType')]"
}
},
"imageReference": {
"publisher": "Canonical",
"offer": "UbuntuServer",
"sku": "22.04-LTS",
"version": "latest"
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
}
]
},
"osProfile": {
"computerName": "[variables('virtualMachineName')]",
"adminUsername": "[variables('adminUsername')]",
"adminPassword": "[variables('adminPassword')]"
},
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "[concat('https://', variables('diagnosticsStorageAccountName'), '.blob.core.windows.net/')]"
}
},
"priority": "Spot",
"evictionPolicy": "Deallocate",
"billingProfile": {
"maxPrice": -1
}
}
},
{
"name": "[variables('diagnosticsStorageAccountName')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-04-01",
"location": "eastus",
"properties": {},
"kind": "[variables('diagnosticsStorageAccountKind')]",
"sku": {
"name": "[variables('diagnosticsStorageAccountType')]"
}
}
],
"outputs": {
"adminUsername": {
"type": "string",
"value": "[variables('adminUsername')]"
}
}
}
Symulowanie eksmisji
Możesz symulować eksmisję maszyny wirtualnej typu spot platformy Azure, aby przetestować odpowiedź aplikacji na nagłe eksmisji.
Zastąp poniższe parametry swoimi informacjami:
subscriptionId
resourceGroupName
vmName
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/simulateEviction?api-version=2020-06-01
Następne kroki
- Maszynę wirtualną typu spot platformy Azure można również utworzyć przy użyciu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure.
- Aby uzyskać więcej informacji na temat bieżącej ceny maszyny wirtualnej typu spot platformy Azure, zobacz Interfejs API cen detalicznych platformy Azure. Oba
meterName
elementy iskuName
zawierająSpot
wartość . - Aby dowiedzieć się więcej o błędzie, zobacz Kody błędów.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla