Nasazení spotových virtuálních počítačů Azure pomocí šablony Resource Manageru

Platí pro: ✔️ Virtuální počítače s Linuxem

Použití spotových virtuálních počítačů Azure vám umožňuje využít výhod naší nevyužité kapacity za významné úspory nákladů. V jakémkoli okamžiku, kdy Azure potřebuje kapacitu zpět, infrastruktura Azure vyřadí spotové virtuální počítače Azure. Spotové virtuální počítače Azure jsou skvělé pro úlohy, které dokážou zvládnout přerušení, jako jsou úlohy dávkového zpracování, vývojové/testovací prostředí, velké výpočetní úlohy a další.

Ceny spotových virtuálních počítačů Azure jsou proměnné na základě oblasti a skladové položky. Další informace najdete v tématu Ceny virtuálních počítačů pro Linux a Windows.

Pro virtuální počítač máte možnost nastavit maximální cenu, kterou jste ochotni zaplatit za hodinu. Maximální cena spotového virtuálního počítače Azure se dá nastavit v amerických dolarech (USD) s využitím až pěti desetinných míst. Například hodnota 0.98765by byla maximální cena 0,98765 USD za hodinu. Pokud nastavíte maximální cenu -1, vyřazení virtuálních počítačů není založené na ceně a její cena bude aktuální cena pro spotové virtuální počítače Azure nebo cena standardního virtuálního počítače, podle toho, co je nižší, pokud je k dispozici kapacita a kvóta. Další informace o nastavení maximální ceny najdete v tématu Spotové virtuální počítače Azure – ceny.

Použít šablonu

Pro nasazení šablon spotových virtuálních počítačů Azure použijte"apiVersion": "2019-03-01" nebo novější. priorityevictionPolicy Do šablony přidejte vlastnosti a billingProfile vlastnosti:

"priority": "Spot",
"evictionPolicy": "Deallocate",
"billingProfile": {
    "maxPrice": -1
}

Tady je ukázková šablona s přidanými vlastnostmi pro spotový virtuální počítač Azure. Názvy prostředků nahraďte vlastními a <password> heslem pro účet místního správce na virtuálním počítači.

{
    "$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')]"
        }
    }
}

Simulace vyřazení

Můžete simulovat vyřazení spotového virtuálního počítače Azure a otestovat odpověď aplikace na náhlé vyřazení.

Nahraďte následující parametry informacemi:

  • subscriptionId
  • resourceGroupName
  • vmName
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/simulateEviction?api-version=2020-06-01

Další kroky

  • Můžete také vytvořit spotový virtuální počítač Azure pomocí Azure PowerShellu nebo Azure CLI.
  • Další informace o aktuálních cenách spotových virtuálních počítačů Azure najdete v tématu Rozhraní API maloobchodních cen Azure. Oba meterName a skuName obsahuje Spot.
  • Další informace o chybě najdete v tématu Kódy chyb.