Compartir a través de

排查启用 Azure Arc 的服务器的 VM 扩展问题

本文提供有关在尝试部署或删除Azure Arc服务器上Azure虚拟机(VM)扩展时可能出现的问题的故障排除和解决问题的信息。 有关一般信息,请参阅启用了Azure Arc的服务器的虚拟机扩展管理。

常规故障排除

可以通过选择适用的计算机,然后选择 Settings > Extensions,从 Azure 门户中检索有关扩展部署状态的数据。

有关常规故障排除,请尝试以下步骤。 这些步骤适用于所有 VM 扩展。

  1. 确保 Azure Connected Machine 代理 (azcmagent) 已连接,并且依赖服务正在运行/处于活动状态

    运行 azcmagent show 命令并检查状态的输出(Azure Arc Proxy可以忽略):

    表的屏幕截图,其中显示了正在运行或已停止的依赖服务状态。

    如果停止除 Azure Arc Proxy 以外的任何服务,请重启它们以恢复扩展操作。

  2. 重试扩展安装

    由于各种原因,扩展可能会卡在 “失败 ”或其他状态中。 如果扩展的状态未列为 “成功”,请删除该扩展并再次安装它。 以下Azure PowerShell命令可用于删除扩展:

    Remove-AzConnectedMachineExtension -Name <Extension Name> -ResourceGroupName <RG Name> -MachineName <Machine Name>
    
  3. 检查来宾代理日志并了解从预配扩展开始的活动。 对于Windows,请签入 %SystemDrive%\ProgramData\GuestConfig\ext_mgr_logs;对于 Linux,请签入 /var/lib/GuestConfig/ext_mgr_logs

  4. 检查特定扩展的扩展日志来了解详细信息。

    对于Windows计算机:

    • 日志存储在 C:\ProgramData\GuestConfig
    • 扩展设置和状态文件位于 C:\Packages\Plugins

    对于 Linux 计算机:

    • 日志存储在 /var/lib/GuestConfig
    • 扩展设置和状态文件位于 /var/lib/waagent

    扩展服务日志被写入到 …GuestConfig\ext_mgr_logs\gc_ext.log 中。 有关下载或验证包的错误会显示在那里。

  5. 有关错误代码、已知问题或其他详细信息,请查看特定于扩展的文档故障排除部分。 可以在 扩展表中查找许多扩展的文档。

  6. 查看系统日志。 检查其他可能影响了扩展的操作,例如,长时间安装另一个需要包管理器独占访问权限的应用程序。

扩展路径设置了 noexec 标志

将扩展部署到已启用 Arc 的服务器时,可能会遇到以下错误:

Extension failed to install. Extension returned non-zero exit code for Install: 64. Extension error 
output: Extension path '<full_path>' has the 'noexec' flag set. Extension exit code: 64

当 Azure Arc 代理尝试从使用 noexec 标志挂载的文件系统路径安装或运行某个扩展时,会出现此错误,该扩展路径在错误消息中有所指示。 装载 noexec 选项可防止从该文件系统执行二进制文件或脚本。 扩展必须作为安装的一部分来执行安装脚本。因此,当扩展的工作目录位于 noexec 挂载位置时,安装将会失败。

这通常出现在加固的 Linux 环境中,出于安全原因,诸如/var/var/lib/opt或自定义挂载点的路径会被显式地挂载在noexec。 若要取消阻止扩展安装,应确保Azure Arc用于扩展安装的文件系统允许执行。

使用 exec 重新挂载文件系统,为了解除对扩展安装的阻止,请更新挂载配置,使托管扩展路径的文件系统可以执行。 如果安全策略允许,请使用以下命令重新装载受影响的文件系统,且不使用 noexec 标志。

sudo mount -o remount,exec <mount-point>

如果在 /etc/fstab中已定义装载,请更新条目以删除 noexec 并重新挂载文件系统,以便更改在重新启动时保持持久性;否则,在需要更新扩展程序时,可能需要重新挂载。 只有在执行二进制文件符合组织的安全要求时,才可以将此更改应用于文件系统。

更新装载配置后,请重试扩展安装。

已知问题

扩展不存在 HandlerManifest.json 文件

该扩展停滞在 Deleting 某个状态。 在扩展服务日志(gc_ext.log)中看到以下错误:

HandlerManifest.json file does not exist for extension

分析

扩展名缺少 HandlerManifest.json 文件。 如果未正确卸载扩展,则可能会发生这种情况。

Solution

  1. 若要删除扩展,请使用 az connectedmachine extension delete--extension-name--machine-name--resource-group 参数。

  2. 如果扩展仍处于相同状态,请尝试从计算机中手动删除该扩展。 某些扩展可能需要执行其他清理步骤。 有关进一步指导,请参阅 扩展表中扩展相关的文档

    对于Windows计算机:

    • 导航到 C:\Packages\Plugins\
    • 删除与扩展对应的文件夹

    对于 Linux 计算机:

    • 导航到 /var/lib/waagent/
    • 删除与扩展对应的文件夹
  3. 从Azure卸载该扩展,然后重新安装它。

后续步骤

如果你的问题未在本文中列出,或者无法解决你遇到的问题,请尝试通过以下途径之一获取支持: