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

本文提供有关解决 VMExtensionProvisioningError、VMExtensionHandlerNonTransientErrorVMExtensionProvisioningTimeout 错误的指导,这些错误在尝试部署、更新、重置映像、启动或缩放虚拟机规模集时出现。

注意

在虚拟机规模集上下文中,这些错误消息中的“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 命令行接口 (Azure CLI) 命令:

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 反馈社区