虚拟机规模集中的 VM 扩展预配错误
本文提供有关解决尝试部署、更新、重新映像、启动或缩放虚拟机规模集时出现的 VMExtensionProvisioningError、 VMExtensionHandlerNonTransientError 或 VMExtensionProvisioningTimeout 错误的指南。
注意
在虚拟机规模集上下文中,这些错误消息中的“VM”是指特定虚拟机规模集中的实例。
症状
会看到 VMExtensionProvisioningError、 VMExtensionHandlerNonTransientError 或 VMExtensionProvisioningTimeout 错误,如以下示例所示:
'statusMessage': '{\\'status\\':\\'Failed\\',\\'error\\':{\\'code\\':\\'ResourceOperationFailure\\',\\'message\\':\\'The resource operation completed with terminal provisioning state 'Failed'.\\',\\'details\\':[{\\'code\\':\\'VMExtensionProvisioningError\\',\\'message\\':\\'Multiple VM extensions failed to be provisioned on the VM. Please see the VM extension instance view for other failures.
{'status': 'Failed','error': {'code':'VMExtensionHandlerNonTransientError','message': 'The handler for VM extension type 'Microsoft.EnterpriseCloud.Monitoring.OmsAgentForLinux' has reported terminal failure for VM extension 'OmsAgentForLinux' with error message: '[ExtensionOperationError] Non-zero exit code: 10
'statusMessage': '{\\'status\\':\\'Failed\\',\\'error\\':{\\'code\\':\\'ResourceOperationFailure\\',\\'message\\':\\'The resource operation completed with terminal provisioning state 'Failed'.\\',\\'details\\':[{\\'code\\':\\'VMExtensionProvisioningTimeout\\',\\'message\\':\\'Provisioning of VM extension configure-settings has timed out. Extension provisioning has taken too long to complete.
原因
VM 扩展在预配状态期间挂起或失败。
获取有关扩展失败的详细信息
若要开始解决此错误,应首先确定哪个扩展 () 和实例 () 受到影响。 为此,请在 Azure CLI) 命令 (运行以下 Azure 命令行接口:
az vmss list-instances --resource-group MyResourceGroup --name MyVmss --query "[].{instanceId:instanceId, extension:resources[].id, extProvisioningState:resources[].provisioningState}"
此命令的输出将显示每个实例上的扩展的预配状态。 以下示例输出显示如何按实例 ID 对扩展信息进行分组。
在专用于特定实例的每个部分中,顶部的“extProvisioningState”列表显示该实例上安装的扩展的预配状态。 此列表后跟“扩展”列表,该列表按相同的相应顺序显示扩展的名称。
例如,在以下示例输出中,此实例中的第一个预配状态“Failed”对应于第一个扩展“customScript”。通过将预配状态与列出的扩展匹配,还可以确定在此示例中,列出的第二个和第三个扩展已成功预配到同一实例上。
尝试横向扩展虚拟机规模集
如果扩展未在每个实例上都失败,请将新实例添加到虚拟机规模集,并查看扩展预配是否成功。 如果成功,请删除扩展预配失败的实例。
读取受影响实例上的日志
若要进一步了解错误原因,请登录到受影响的实例。 根据虚拟机规模集的 OS 和受影响的扩展,导航到相应的日志并查看受影响的时间范围:
- Windows 虚拟机规模集:C:\WindowsAzure\logs\plugins\ExtensionName\Extension.log
- Linux 虚拟机规模集:/var/log/plugins/ExtensionName/Extension.log
验证失败的扩展是否遵循最佳做法
如果扩展是可自定义的,例如自定义脚本扩展 (CSE) 或Desired State Configuration (DSC) ,请验证是否遵循所有必要的先决条件和建议的最佳做法。
重新安装扩展
在“虚拟机规模集”的“ 扩展 ”边栏选项卡上,选择具有预配错误的扩展。
单击“卸载”。
在“ 扩展 ”边栏选项卡上,单击“ 添加”。
选择并重新安装同一扩展。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。