我正在尝试创建一个基于我的自定义映像的虚拟机池。我已经成功created a custom image并将其添加到我的批处理帐户中。
但是当我尝试根据azure门户中的这张图片创建一个池时,出现错误。
在屏幕上执行最后一次调整大小时遇到错误 池。请尝试重新调整池的大小。代码:AllocationFailed
消息:无法分配所需的专用节点数
详细信息:原因-与之关联的源托管磁盘或快照 找不到虚拟机映像ID。
在门户中创建池时,由于没有设置图像ID的选项,因此我使用图像名称。但是json中的图片ID是正确的。而且我可以在正确的批处理帐户中看到门户中列出的图像。
这是我的泳池属性json:
{
"id": "my-pool-0",
"displayName": "my-pool-0",
"lastModified": "2018-12-04T15:54:06.467Z",
"creationTime": "2018-12-04T15:44:18.197Z",
"state": "active",
"stateTransitionTime": "2018-12-04T15:44:18.197Z",
"allocationState": "steady",
"allocationStateTransitionTime": "2018-12-04T16:09:11.667Z",
"vmSize": "standard_a2",
"resizeTimeout": "PT15M",
"currentDedicatedNodes": 0,
"currentLowPriorityNodes": 0,
"targetDedicatedNodes": 1,
"targetLowPriorityNodes": 0,
"enableAutoScale": false,
"autoScaleFormula": null,
"autoScaleEvaluationInterval": null,
"enableInterNodeCommunication": false,
"maxTasksPerNode": 1,
"url": "https://mybatch.westeurope.batch.azure.com/pools/my-pool-0",
"resizeErrors": [
{
"message": "Desired number of dedicated nodes could not be allocated",
"code": "AllocationFailed",
"values": [
{
"name": "Reason",
"value": "The source managed disk or snapshot associated with the virtual machine Image Id was not found."
}
]
}
],
"virtualMachineConfiguration": {
"imageReference": {
"publisher": null,
"offer": null,
"sku": null,
"version": null,
"virtualMachineImageId": "/subscriptions/79b59716-301e-401a-bb8b-22edg5c1he4j/resourceGroups/resource-group-1/providers/Microsoft.Compute/images/my-image"
},
"nodeAgentSKUId": "batch.node.ubuntu 18.04"
},
"applicationLicenses": null
}
错误文本似乎与实际错误无关。有没有人遇到此错误或现在有解决此问题的方法?
更新
用于创建图像(taken from here)的打包json
{
"builders": [{
"type": "azure-arm",
"client_id": "ffxcvbd0-c867-429a-bxcv-8ee0acvb6f99",
"client_secret": "cvb54cvb-202d-4wq-bb8b-22cdfbce4f",
"tenant_id": "ae33sdfd-a54c-40af-b20c-80810f0ff5da",
"subscription_id": "096da34-4604-4bcb-85ae-2afsdf22192b",
"managed_image_resource_group_name": "resource-group-1",
"managed_image_name": "my-image",
"os_type": "Linux",
"image_publisher": "Canonical",
"image_offer": "UbuntuServer",
"image_sku": "18.04-LTS",
"azure_tags": {
"dept": "Engineering",
"task": "Image deployment"
},
"location": "West Europe",
"vm_size": "Standard_DS2_v2"
}],
"provisioners": [{
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",
"inline": [
"export DEBIAN_FRONTEND=noninteractive",
"apt-get update",
"apt-get upgrade -y",
"apt-get -y install nginx",
...
"/usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync"
],
"inline_shebang": "/bin/sh -x",
"type": "shell"
}]
}
答案 0 :(得分:1)
关于您的问题,我和您一样进行了测试。步骤如下:
然后我得到与您相同的错误。然后,我进行另一个测试,该测试从快照创建映像,然后使用该映像创建批处理池。运气!游泳池很好。
在Azure中,您可以从Azure快照中准备托管映像 来自具有托管功能的通用Azure VM的VM操作系统和数据磁盘 磁盘或您上载的通用本地VHD。
参考此description,看来自定义映像无法通过Packer创建。我对此不确定。但这确实有效。希望对您有帮助。
更新
看看文档Custom Images with Batch Shipyard。说明:
注意:当前只能直接使用Packer创建ARM映像 与用户订阅批处理帐户一起使用。对于标准批处理服务 池分配模式批处理帐户,打包程序将需要创建一个VHD 首先,然后您需要将VHD导入到ARM映像。请 遵循与您的批处理帐户池匹配的适当路径 分配模式。
在测试中,我遵循了Packer创建图像的步骤。当源VM存在时,自定义映像可以正常用于批处理池。但是,如果删除源VM,它将失败。因此,作为说明,标准的批处理服务仅可以使用由Packer创建的VHD文件创建的映像,并且该VHD文件应该存在于Pool生存期中。
答案 1 :(得分:0)
如果您使用托管图像,那么您的imageReference部分应如下所示:
"imageReference": {
"id": "/subscriptions/79b59716-301e-401a-bb8b-22edg5c1he4j/resourceGroups/resource-group-1/providers/Microsoft.Compute/images/my-image"
},