虚拟机规模集中的 VM 扩展预配错误

本文提供有关解决尝试部署、更新、重新映像、启动或缩放虚拟机规模集时出现的 VMExtensionProvisioningErrorVMExtensionHandlerNonTransientErrorVMExtensionProvisioningTimeout 错误的指南。

注意

在虚拟机规模集上下文中,这些错误消息中的“VM”是指特定虚拟机规模集中的实例。

症状

会看到 VMExtensionProvisioningErrorVMExtensionHandlerNonTransientErrorVMExtensionProvisioningTimeout 错误,如以下示例所示:

'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 对扩展信息进行分组。

输出的屏幕截图,其中突出显示了实例 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) ,请验证是否遵循所有必要的先决条件和建议的最佳做法。

重新安装扩展

  1. 在“虚拟机规模集”的“ 扩展 ”边栏选项卡上,选择具有预配错误的扩展。

  2. 单击“卸载”。

    “扩展”边栏选项卡的屏幕截图,其中突出显示了“卸载”按钮

  3. 在“ 扩展 ”边栏选项卡上,单击“ 添加”。

  4. 选择并重新安装同一扩展。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。