Wdrażanie maszyn wirtualnych usługi Azure Spot przy użyciu szablonu usługi Resource Manager
Dotyczy: ✔️ maszyny wirtualne z systemem Linux
Korzystanie z maszyn wirtualnych typu spot platformy Azure umożliwia korzystanie z nieużywanej pojemności przy znacznych oszczędnościach. 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 maszyn wirtualnych typu Spot platformy Azure 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 , eksmisja maszyn wirtualnych nie jest oparta na cenie, a cena będzie bieżącą ceną maszyn wirtualnych typu Spot platformy Azure lub ceną standardowej maszyny wirtualnej, w zależności od tego, która z nich 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.
Używanie 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 <password>
i 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 programu 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. Zarówno , jak
meterName
iskuName
zawieraSpot
wartość . - Aby dowiedzieć się więcej o błędzie, zobacz Kody błędów.