你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
排查 Azure Stack Edge Pro GPU 设备上的 IoT Edge 问题
适用于:Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
本文介绍如何通过查看 IoT Edge 代理的运行时响应和设备上安装的 IoT Edge 服务的错误,排查 Azure Stack Edge Pro GPU 设备上与计算相关的错误。
查看 IoT Edge 运行时响应
使用 IoT Edge 代理运行时响应解决与计算相关的错误。 下面是可能的响应的列表:
- 200 - 正常
- 400 - 部署配置格式不正确或无效。
- 417 - 没有为设备设置部署配置。
- 412 - 部署配置中的架构版本无效。
- 406 - IoT Edge 设备脱机或不发送状态报告。
- 500 - IoT Edge 运行时中出现了一个错误。
有关详细信息,请参阅 IoT Edge 代理。
排查 IoT Edge 服务错误
以下错误与 Azure Stack Edge Pro GPU 设备上的 IoT Edge 服务相关。
计算模块显示“未知”状态且无法使用
错误说明
设备上的所有模块显示“未知”状态且无法使用。 “未知”状态在重新启动后仍然存在。
建议的解决方法
删除 IoT Edge 服务,然后重新部署模块。 有关详细信息,请参阅删除 IoT Edge 服务。
模块显示为正在运行,但不起作用
错误说明
模块的运行时状态显示为正在运行,但未显示预期结果。
这种情况可能是由不起作用的模块路由配置引起的,或者 edgehub
可能没有按预期方式路由消息。 可检查 edgehub
日志。 如果发现有一些错误(如未能连接到 IoT 中心服务),则最常见的原因是连接问题。 出现连接问题可能是由于 IoT 中心服务用作通信默认端口的 AMPQ 端口被阻止,或者 Web 代理服务器阻止了这些消息。
建议的解决方法
执行以下步骤:
- 若要解决此错误,请转到设备的 IoT 中心资源,然后选择你的 Edge 设备。
- 转到“设置模块”>“运行时设置”。
- 添加
Upstream protocol
环境变量并为其分配值AMQPWS
。 在此情况下配置的消息经端口 443 通过 Websocket 发送。
模块显示为正在运行,但未分配 IP
错误说明
模块的运行时状态显示为正在运行,但容器化应用没有分配 IP 地址。
发生这种情况是因为你为 Kubernetes 外部服务 IP 提供的 IP 范围不足。 请扩展此范围,确保已部署的每个容器或 VM 均已覆盖。
建议的解决方法
在设备的本地 Web UI 中,执行以下步骤:
- 转到“计算”页。 选择要为其启用计算网络的端口。
- 为“Kubernetes 外部服务 IP”输入静态的连续 IP 范围。 你需要一个 IP 用于
edgehub
服务。 此外,每个 IoT Edge 模块以及要部署的每个 VM 都需要一个 IP。 - 选择“应用”。 更改的 IP 范围应立即生效。
有关详细信息,请参阅更改容器的外部服务 IP。
为 IoT Edge 模块配置静态 IP
问题描述
Kubernetes 向 Azure Stack Edge Pro GPU 设备上的每个 IoT Edge 模块分配动态 IP。 需要一种方法来为模块配置静态 Ip。
建议的解决方法
可以通过 K8s 实验性部分为 IoT Edge 模块指定固定 IP 地址,如下所述:
{
"k8s-experimental": {
"serviceOptions" : {
"loadBalancerIP" : "100.23.201.78",
"type" : "LoadBalancer"
}
}
}
将 Kubernetes 服务公开为用于内部通信的群集 IP 服务
问题描述
默认情况下,IoT 服务类型为负载均衡器,并且服务分配有面向外部的 IP 地址。 如果应用程序需要 Kubernetes 群集中的 Kubernetes Pod 来访问群集中的其他 Pod,你可能需要将该服务配置为群集 IP 服务,而不是负载均衡器服务。 有关详细信息,请参阅 Azure Stack Edge Pro GPU 设备上的 Kubernetes 网络。
建议的解决方法
可以通过 K8s 实验性部分使用创建选项。 以下服务选项应适用于端口绑定。
{
"k8s-experimental": {
"serviceOptions" : {
"type" : "ClusterIP"
}
}
}
无法创建或更新 IoT 角色
问题描述
在安装过程中配置 IoT 设备时,可能会看到以下错误:
(Http 状态代码: 400)无法在 <YourDeviceName> 上创建或更新 IoT 角色。 出现错误,错误代码为 {NO_PARAM}。 有关详细信息,请参阅错误代码详细信息 (https://aka.ms/dbe-error-codes)。 如果错误仍然存在,请联系Microsoft 支持部门。
建议的解决方法
如果你的数据中心防火墙根据源 IP 或 MAC 地址对流量进行限制或筛选,请确保计算机 IP(Kubernetes 节点 IP)和 MAC 地址包含在允许列表上。 可以通过在设备的 PowerShell 接口上运行 Set-HcsMacAddressPool
cmdlet 来指定 MAC 地址。