Az Azure Spot Virtual Machines üzembe helyezése Resource Manager sablon használatával

A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek

Az Azure Spot Virtual Machines használatával jelentős költségmegtakarítással kihasználhatja a kihasználatlan kapacitást. Bármikor, amikor az Azure-nak vissza kell igényelnie a kapacitást, az Azure-infrastruktúra kizárja az Azure Spot virtuális gépeket. Az Azure Spot virtuális gépek olyan számítási feladatokhoz használhatók, amelyek képesek kezelni a megszakításokat, például a kötegelt feldolgozási feladatokat, a fejlesztési/tesztelési környezeteket, a nagy számítási feladatokat és egyebeket.

Az Azure Spot Virtual Machines díjszabása régiótól és termékváltozattól függően változó. További információ: Linux és Windows rendszerű virtuális gépek díjszabása.

Beállíthat egy maximális árat, amelyért óránként hajlandó fizetni a virtuális gépért. Az Azure Spot virtuális gépek maximális ára amerikai dollárban (USD) állítható be legfeljebb öt tizedesjegy használatával. Az érték 0.98765például óránként 0,98765 USD. Ha a maximális árat a értékre -1állítja, a virtuális gépek kizárása nem az áron alapul, és az ár az Azure Spot virtuális gépek aktuális ára, vagy egy standard virtuális gép ára lesz, amelyik alacsonyabb, feltéve hogy rendelkezésre áll kapacitás és kvóta. A maximális ár beállításával kapcsolatos további információkért lásd: Azure Spot virtuális gépek – Díjszabás.

Sablon használata

Az Azure Spot virtuálisgép-sablon üzembe helyezéséhez használja a vagy újabb verziót"apiVersion": "2019-03-01" . Adja hozzá a és billingProfileevictionPolicy a prioritytulajdonságot a sablonhoz:

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

Íme egy mintasablon, amely hozzáadott tulajdonságokkal rendelkezik egy Azure Spot virtuális géphez. Cserélje le az erőforrásneveket a sajátjára és <password> a virtuális gép helyi rendszergazdai fiókjának jelszavára.

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

Kiürítés szimulálása

Szimulálhatja egy Azure Spot virtuális gép kiürítését, hogy tesztelje az alkalmazás válaszát egy hirtelen kizárásra.

Cserélje le az alábbi paramétereket az adataira:

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

Következő lépések

  • Azure Spot virtuális gépet is létrehozhat Azure PowerShell vagy az Azure CLI használatával.
  • Az Azure Spot virtuális gépek aktuális díjszabásáról további információt az Azure kiskereskedelmi árak API-járól talál. Mindkettőt meterName tartalmazza, és skuName tartalmazza a parancsot Spotis.
  • A hibákról további információt a Hibakódok című témakörben talál.