更新 IoT Edge
适用于: IoT Edge 1.5 IoT Edge 1.4
重要
IoT Edge 1.5 LTS 和 IoT Edge 1.4 LTS 是受支持的版本。 IoT Edge 1.4 LTS 的生命周期结束日期为 2024 年 11 月 12 日。
当 IoT Edge 服务发布新版本时,你可以更新 IoT Edge 设备,使其获得最新功能并改善安全性。 本文提供有关在新版本推出时如何更新 IoT Edge 设备的信息。
若要转移到较新的版本,需要更新 IoT Edge 设备的两个逻辑组件。
安全性子系统 - 它在设备上运行,处理基于安全性的任务,并在设备启动时启动模块。 只能从设备本身更新安全子系统。
IoT Edge 运行时 - IoT Edge 运行时由 IoT Edge 中心 (
edgeHub
) 和 IoT Edge 代理 (edgeAgent
) 模块组成。 根据部署的构造方式,可以从设备或者远程更新运行时。
更新方法
参考本文的各个部分更新设备上的安全子系统和运行时容器。
修补程序版本
在修补程序版本之间升级时(例如从 1.4.1 升级到 1.4.2),更新顺序并不重要。 安全子系统或运行时容器的升级顺序没有限制。 若要在修补程序版本之间更新,请执行以下操作:
可以随时对升级过程进行故障排除。
主要或次要版本
在主要或次要版本之间升级时(例如从 1.4 升级到 1.5),请更新安全子系统和运行时容器。 在发布之前,我们会测试安全子系统和运行时容器的版本组合。 若要在主要或次要产品版本之间更新,请执行以下操作:
在设备上,使用命令
sudo systemctl stop iotedge
停止 IoT Edge,然后将其卸载。在设备上,安装 IoT Edge。
如果使用
iotedge config import
导入旧配置,请修改生成的/etc/aziot/config.toml
文件的 [agent.config] 映像,以将 1.4 映像用于 edgeAgent。有关详细信息,请参阅配置 IoT Edge 设备设置。
在 IoT 中心,更新模块部署以引用最新的系统模块。
在设备上,使用
sudo iotedge config apply
启动 IoT Edge。
可以随时对升级过程进行故障排除。
更新安全子系统
IoT Edge 安全子系统包括一组原生组件,这些组件需要使用 IoT Edge 设备上的包管理器进行更新。
使用命令 iotedge version
检查设备上运行的安全子系统的版本。 如果使用的是 IoT Edge for Linux on Windows,则需要通过 SSH 连接到 Linux 虚拟机以检查版本。
在 Linux x64 设备上,使用 apt-get
或相应的包管理器将安全子系统更新到最新版本。
更新apt
:
sudo apt-get update
注意
有关从 Azure 获取最新存储库配置的说明,请参阅安装 IoT Edge 的预备步骤。
查看哪些 IoT Edge 版本可用:
apt list -a aziot-edge
更新 IoT Edge:
sudo apt-get install aziot-edge defender-iot-micro-agent-edge
运行 apt-get install aziot-edge
会升级安全子系统,并安装标识服务aziot-identity-service
作为必需的依赖项。
建议使用 Edge 代理安装微代理,以便启用 Edge 设备的安全监视和强化。
然后,重新应用配置以确保系统已完全更新。
sudo iotedge config apply
更新运行时容器
更新 IoT Edge 代理和 IoT Edge 中心容器的方式取决于在部署中使用的是滚动标记(如 1.5)还是特定标记(如 1.5.1)。
使用 iotedge logs edgeAgent
或 iotedge logs edgeHub
命令检查设备上目前安装的 IoT Edge 代理和 IoT Edge 中心模块的版本。 如果使用的是 IoT Edge for Linux on Windows,则需要通过 SSH 连接到 Linux 虚拟机以检查运行时模块版本。
了解 IoT Edge 标记
IoT Edge 代理和 IoT Edge 中心映像使用与之关联的 IoT Edge 版本进行标记。 可通过两种不同的方法对运行时映像使用标记:
滚动更新标记 - 仅使用版本号的前两个值来获取匹配这些数字的最新映像。 例如,每当有新版本指向最新的 1.5.x 版时,都会更新 1.5。 如果 IoT Edge 设备的容器运行时重新提取映像,则运行时模块会更新到最新版本。 Azure 门户中的部署默认使用滚动更新标记。 建议在开发时使用此方法。
特定标记 - 使用版本号的所有三个值,以显式设置映像版本。 例如,1.5.0 在其初始版本发布后不会更改。 准备好更新时,可以在部署清单中声明新的版本号。 建议在生产环境中使用此方法。
更新滚动更新标记映像
如果在部署中使用滚动更新标记(例如 mcr.microsoft.com/azureiotedge-hub:1.5),则需要在设备上强制实施容器运行时,以提取最新版本的映像。
从 IoT Edge 设备中删除本地版本的映像。 在 Windows 计算机上,卸载安全子系统时也会删除运行时映像,因此不需再次执行此步骤。
docker rmi mcr.microsoft.com/azureiotedge-hub:1.5
docker rmi mcr.microsoft.com/azureiotedge-agent:1.5
可能需要使用 -f
(强制)标志来删除映像。
IoT Edge 服务将拉取最新版本的运行时映像,并自动在设备上将其重新启动。
更新特定标记映像
如果在部署中使用特定标记(例如 mcr.microsoft.com/azureiotedge-hub:1.4),则只需更新部署清单中的标记,并将更改应用到设备即可。
在 Azure 门户的 IoT 中心,选择 IoT Edge 设备,然后选择“设置模块” 。
在“模块”选项卡上,选择“运行时设置”。
在“运行时设置”中,使用所需的版本更新“Edge 代理”部分中的“映像 URI”值。 例如,
mcr.microsoft.com/azureiotedge-agent:1.5
请勿现在选择“应用”。选择“Edge 中心选项卡”,使用相同的所需版本更新“映像 URI”值。 例如
mcr.microsoft.com/azureiotedge-hub:1.5
。选择“应用”以保存更改。
选择“查看 + 创建”,查看 JSON 文件中显示的部署,然后选择“创建”。
更新合作伙伴模块 URI
如果使用合作伙伴模块,请使用合作伙伴提供的映像 URI 更新模块部署。 请联系 IoT Edge 模块发布者获取更新的容器映像 URI。 使用发布者提供的新映像 URI 更新设备配置。
- 登录 Azure 门户并导航到 IoT 中心。
- 在左侧窗格上,选择“设备管理”菜单下的“设备”。
- 从列表中选择使用合作伙伴模块的 IoT Edge 设备。
- 在上方栏中,选择“设置模块”。
- 选择要使用新映像 URI 更新的 IoT Edge 合作伙伴模块。
- 使用发布者提供的新映像 URI 更新映像 URI 值。
- 选择“应用”以保存更改。
- 选择“查看 + 创建”,查看 JSON 文件中显示的部署,然后选择“创建”。
验证版本是否匹配
在设备上,使用
iotedge version
检查安全子系统版本。 输出包括主要、次要和修订版本号。 例如 iotedge 1.4.2。在设备部署运行时设置中,验证 edgeHub 和 edgeAgent 映像 URI 版本是否与安全子系统的主要和次要版本匹配。 如果安全子系统版本为 1.4.2,则映像版本为 1.4。 例如,mcr.microsoft.com/azureiotedge-hub:1.4 和 mcr.microsoft.com/azureiotedge-agent:1.4。
注意
将 IoT Edge 安全子系统和运行时容器更新为同一个受支持的发行版。 虽然支持不匹配的版本,但我们尚未测试所有版本组合。
若要查找最新版本的 Azure IoT Edge,请参阅 Azure IoT Edge 版本。
故障排除
可以随时通过在设备中运行以下命令来查看系统的日志。
使用 check 命令开始故障排除。 此命令会针对常见问题运行一系列配置测试和连接测试。
sudo iotedge check --verbose
若要查看 IoT Edge 系统的状态,请运行:
sudo iotedge system status
若要查看主机组件日志,请运行:
sudo iotedge system logs
若要检查针对 edgeAgent 和 edgeHub 报告的重复性问题,请运行:
请务必请将
<module>
替换为你自己的模块名称。 如果没有问题,将不显示任何输出。sudo iotedge logs <module>
有关详细信息,请参阅对 IoT Edge 设备进行故障排除。
后续步骤
查看最新的 Azure IoT Edge 版本。
持续关注物联网博客中的最新更新和通告