虚拟机规模集中的 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 命令行接口 (Azure CLI) 命令:
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 反馈社区。