你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

排查在 Azure Stack Edge Pro GPU 中部署 VM 的问题

适用于:对于 Pro GPU SKU 是必需的Azure Stack Edge Pro - GPU对于 Pro 2 SKU 是必需的Azure Stack Edge Pro 2对于 Pro R SKU 是必需的Azure Stack Edge Pro R对于 Mini R SKU 是必需的Azure Stack Edge Mini R

本文介绍如何排查在 Azure Stack Edge Pro GPU 设备上部署虚拟机时出现的常见错误。 本文提供相关指导,助你调查导致 VM 预配超时的最常见问题,以及在创建网路接口和 VM 过程中出现的各种问题。

要诊断 VM 预配失败,请查看失败虚拟机的来宾日志。 有关收集 VM 来宾日志并将其包含在支持包中的步骤,请参阅在 Azure Stack Edge Pro 上收集 VM 的来宾日志

如需相关指导以在部署 VM 之前排查会导致 VM 映像上传失败的问题,请参阅排查在 Azure Stack Edge Pro GPU 中上传虚拟机映像的问题

VM 预配超时

本部分介绍如何排查导致 VM 预配超时的最常见原因。

当 VM 预配超时时,你会看到以下错误:

Azure Stack Edge 中的 VM 预配超时时在 Azure 门户中显示的错误的屏幕截图。

以下问题是导致 VM 预配超时的主要原因:

  • 分配给 VM 的 IP 地址已在使用中。 了解详细信息
  • 用于部署 VM 的 VM 映像未经正确准备。 了解详细信息
  • 无法从来宾 VM 访问默认网关和 DNS 服务器。 了解详细信息
  • 在安装 cloud init 的过程中,cloud init 未运行或运行时出现问题。 (仅限 Linux VM)了解详细信息
  • 对于使用自定义 VM 映像部署的 Linux VM,/etc/waagent.conf 文件中的预配标志不正确。 (仅限 Linux VM)了解详细信息
  • 附加到已启用 SRIOV 的虚拟交换机的主网络接口。了解详细信息

分配给 VM 的 IP 已在使用中

错误说明:分配给 VM 的静态 IP 地址已在使用中,VM 预配失败。 如果部署 VM 的子网已在使用分配的 IP 地址,即会发生此错误。 通过 Azure 门户部署 VM 时,该过程会检查设备中现有的 IP 地址,但无法检查其他亦可能存在于子网中的服务或虚拟机的 IP 地址。

建议的解决方案:使用未使用的静态 IP 地址,或使用由 DHCP 服务器提供的动态 IP 地址。

检查 IP 地址是否重复:

  • 在使用同一网络的任何设备上运行以下 ping 和 Test-NetConnection (tnc) 命令:

    ping <IP address>
    tnc <IP address>
    tnc <IP address> -CommonTCPPort “RDP”
    

如果收到响应,则表示你分配给新 VM 的 IP 地址已在使用中。

VM 映像未经正确准备

错误说明:若要准备将在 Azure Stack Edge Pro GPU 设备上使用的 VM 映像,请务必遵循特定工作流。 你必须在 Azure 中创建第 1 代虚拟机,自定义 VM,通用化 VHD,然后下载该虚拟机的 OS VHD。 准备使用的映像必须是第 1 代固定(类型)VHD,并且文件名扩展名为“vhd”。

有关要求的概述,请参阅为 Azure Stack Edge Pro GPU 设备创建自定义 VM 映像。 有关解决 VM 映像问题的指导,请参阅排查在 Azure Stack Edge Pro GPU 中上传虚拟机映像的问题

建议解决方案:完成用于准备 VM 映像的工作流。 如需指导,请参阅以下文章之一:

无法从来宾 VM 访问网关和 DNS 服务器

错误说明:如果在 VM 部署期间无法访问默认网关和 DNS 服务器,则 VM 预配将超时,并且 VM 部署将失败。

建议解决方案:验证是否可以从 VM 访问默认网关和 DNS 服务器。 然后再次部署 VM。

若要验证可以从 VM 访问默认网关和 DNS 服务器,请执行以下步骤:

  1. 连接到 VM

  2. 运行以下命令:

    ping <default gateway IP address>
    ping <DNS server IP address>
    

    若要查找默认网关和 DNS 服务器的 IP 地址,请转到设备的本地 UI。 选择相关端口,并查看网络设置。

    Azure Stack Edge 设备的“网络”页的屏幕截图,其中显示了端口 2 的网络设置。

cloud init 问题 (Linux VM)

错误说明:cloud init 未运行,或者 cloud init 运行时出现问题。 cloud-init 可用于在首次启动 Linux VM 时自定义该 VM。 有关详细信息,请参阅 Azure 中虚拟机的 cloud-init 支持

建议解决方案:查找运行 cloud init 时发生的问题:

  1. 连接到 VM

  2. 检查以下日志文件中出现的 cloud init 错误:

    • /var/log/cloud-init-output.log
    • /var/log/cloud-init.log
    • /var/log/waagent/log

若要检查导致 cloud init 运行失败的最常见问题,请执行以下步骤:

  1. 确保 VM 映像是基于 cloud init 创建。 运行以下命令:

    cloud-init --version

    该命令应返回 cloud init 版本号。 如果映像不是基于 cloud init 的,则该命令将不会返回版本信息。

    若需帮助以获取 cloud init 选项,请运行以下命令:

    cloud-init --help

  2. 确保已将数据源设置为 Azure 的 cloud init 实例能够成功运行。

    当数据源被设置为 Azure 时,cloud init 日志中的条目将如下所示。

    “数据源”设置为“Azure”的 VM 映像的 cloud-init 日志条目图示。标识文本已突出显示。

    如果未将数据源设置为 Azure,则可能需要修改 cloud init 脚本。 有关详细信息,请参阅深入了解 cloud-init

预配标志设置有误 (Linux VM)

错误说明:若要在 Azure 中成功部署 Linux VM,则必须在映像上禁用预配,且必须启用 cloud init 以进行预配。 并且,为标准 VM 映像正确配置设置这些值的预配标志。 如果使用自定义 VM 映像,则需要确保其正确无误。

建议解决方案:确保 /etc/waagent.conf 文件中的预配标志具有以下值:

功能 所需的值
启用预配 Provisioning.Enabled=n
依靠 cloud-init 进行预配 Provisioning.UseCloudInit=y

连接到已启用 SRIOV 的虚拟交换机的主网络接口

错误说明:附加到已启用单个根 I/O 虚拟化 (SRIOV) 接口的虚拟交换机的主网络接口导致网络流量绕过 Hyper-V,因此主机无法从 VM 接收 DHCP 请求,从而导致预配超时。

建议解决方案:

  • 将 VM 主网络接口连接到虚拟交换机,而无需启用加速网络。

  • 在 Azure Stack Edge Pro 1 设备上,在端口 1 到端口 4 上创建的虚拟交换机不会启用加速网络。 在端口 5 或端口 6 上,虚拟交换机会默认启用加速网络。

  • 在 Azure Stack Edge Pro 2 设备上,在端口 1 或端口 2 上创建的虚拟交换机不会启用加速网络。 在端口 3 或端口 4 上,虚拟交换机会默认启用加速网络。

网络接口创建问题

本部分提供相关指导,助你排查在 VM 部署过程中导致网络接口创建失败的问题。

NIC 创建超时

错误说明:未在允许的超时期间内,在 VM 上成功创建网络接口。 此故障可能是由环境中的 DHCP 服务器问题所导致。

若要验证是否已成功创建网络接口,请执行以下步骤:

  1. 在 Azure 门户中,转到设备的 Azure Stack Edge 资源(前往“Edge 服务”>“虚拟机”)。 然后选择“部署”,并导航到 VM 部署。

  2. 如果未成功创建网络接口,你将看到以下错误。

    在 Azure Stack Edge 设备上部署 VM 期间创建网络接口失败时,Azure 门户中显示的错误的屏幕截图。

建议的解决方案:再次创建 VM,并为其分配静态 IP 地址。

VM 创建问题

本部分介绍创建 VM 期间发生的常见问题。

VM 创建失败

错误说明:如果使用早于 2403 的 Azure Stack Edge 创建市场映像,然后根据现有市场映像创建 VM,则 VM 创建会失败,因为 Azure Stack Edge 2407 更改了市场映像的下载路径。

建议的解决方案:使用以下步骤删除现有的市场映像,然后从 Azure 门户创建新的市场映像。

  1. 从 Azure 门户删除现有的市场映像。

    1. 列出市场映像的引入和 BlobDownload 引入作业。 使用以下步骤连接到 Azure 资源管理器

      运行以下脚本以列出引入作业:

      在以下 Uri 中指定订阅 ID:

      $uri1 = "https://management.appliance name.DNS domain/subscriptions/sid/providers/Microsoft.AzureBridge/locations/DBELocal/ingestionJobs/?api-version=2022-03-01"

      Function Get-AzCachedAccessToken() 
      {
      $ErrorActionPreference = 'Stop' 
      $azureRmProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile 
      $currentAzureContext = Get-AzContext 
      $profileClient = New-Object Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient($azureRmProfile) 
      Write-Debug ("Getting access token for tenant" + $currentAzureContext.Subscription.TenantId) 
      $token = $profileClient.AcquireAccessToken($currentAzureContext.Subscription.TenantId) 
      $token.AccessToken 
      } 
      
      $token = Get-AzCachedAccessToken 
      $headers = @{Authorization = "Bearer $token"; "Content-Type" = "application/json" } 
      $v = Invoke-RestMethod -Method Get -Uri $uri1 -Headers $headers 
      v.value
      
    2. 查找引入作业名称 = Marketplace image sku name,种类 = BlobDownload

      示例:引入作业名称 = Ubuntu-18-04,种类 = BlobDownload

      查找引入作业名称的示例语法的屏幕截图。

  2. 如果在步骤 1 中找到了引入作业,请使用以下步骤删除引入作业并删除映像。 例如,上述示例中的引入作业名称为 ubuntu-18-04。 此外,还可以在示例中找到 Subscription IDResource group 名称。

    $uri2 = "https://management.<appliance name>.<DNS domain>/subscriptions/sid/resourceGroups/rgname/providers/Microsoft.AzureBridge/locations/dbelocal/ingestionJobs/<ingestion job name>?api-version=2018-06-01" 
    
    Invoke-RestMethod -Method DELETE -Uri $uri2 -Headers $headers
    
  3. 按照步骤从 Azure 市场创建新的 VM 映像

内存不足,无法创建 VM

错误说明:如果 VM 创建因内存不足而失败,则会看到以下错误。

在 Azure Stack Edge 设备上创建 VM 失败时,Azure 门户中显示的错误的屏幕截图。

建议的解决方案:检查设备上可用的内存,并根据 VM 大小做出相应选择。 有关详细信息,请参阅 Azure Stack Edge 上支持的虚拟机大小

可用于部署 VM 的内存受以下多重因素约束:

建议解决方案:

  • 使用需要较少内存的 VM 大小。
  • 在部署新 VM 之前,关闭门户中未使用的所有 VM。
  • 删除不再使用的所有 VM。

GPU 数量不足,无法创建 GPU VM

如果尝试在已启用 Kubernetes 的 GPU 设备上部署 VM,则将无法使用 GPU,并且 VM 预配也会失败,且出现以下错误:

因 Azure Stack Edge 设备上没有可用的 GPU 而导致 GPU VM 创建失败时,在 Azure 门户中显示的错误的屏幕截图。

可能的原因:如果在创建 VM 之前启用了 Kubernetes,则 Kubernetes 将会使用所有可用的 GPU,并且你将无法创建任何 GPU 大小的 VM。 你能够创建的与 GPU 同等大小的 VM 数同于可用的 GPU 数。 而你的 Azure Stack Edge 设备可以配备 1 或 2 个 GPU。

建议解决方案:如需了解已配置 Kubernetes 的 1 GPU 或 2 GPU 设备上的 VM 部署选项,请参阅 GPU VM 和 Kubernetes

后续步骤