更新 IoT Edge

适用于:IoT Edge 1.5 复选标记 IoT Edge 1.5 IoT Edge 1.4 复选标记 IoT Edge 1.4

重要

IoT Edge 1.5 LTS 是受支持的版本。 IoT Edge 1.4 LTS 的生命周期结束日期为 2024 年 11 月 12 日。

当 IoT Edge 服务发布新版本时,你可以更新 IoT Edge 设备,使其获得最新功能并改善安全性。 本文提供有关在新版本推出时如何更新 IoT Edge 设备的信息。

若要转移到较新的版本,需要更新 IoT Edge 设备的两个逻辑组件。

  • 安全性子系统 - 它在设备上运行,处理基于安全性的任务,并在设备启动时启动模块。 只能从设备本身更新 安全子系统

  • IoT Edge runtime - IoT Edge运行时由IoT Edge中心(edgeHub)和IoT Edge代理(edgeAgent)模块组成。 根据部署的结构,可以从设备或远程更新运行时。

更新方法

参考本文的各个部分更新设备上的安全子系统和运行时容器。

补丁发布版本

在修补程序版本之间升级时(例如从 1.5.1 升级到 1.5.2),更新顺序并不重要。 你可以先升级安全子系统或者运行时容器,或者反过来也可以。 若要在修补程序版本之间更新,请执行以下操作:

  1. 更新安全子系统
  2. 更新运行时容器
  3. 验证版本是否匹配

可以随时对升级过程进行故障排除

主要或次要版本

在主要版本或次要版本(例如从 1.4 升级到 1.5)之间时,请同时更新安全子系统和运行时容器。 在发布之前,产品团队会测试安全子系统和运行时容器版本组合。 若要在主要或次要产品版本之间更新,请执行以下操作:

  1. 在设备上,使用命令 sudo systemctl stop iotedge 停止 IoT Edge,然后将其卸载。

  2. 在设备上,升级容器引擎:DockerMoby

  3. 在设备上,安装 IoT Edge

    如果您正在使用 iotedge config import 导入旧配置,请修改生成的 /etc/aziot/config.toml 文件中的 [agent.config] 映像,以便 edgeAgent 使用 1.5 映像。

    有关详细信息,请参阅配置 IoT Edge 设备设置

  4. 在 IoT 中心,更新模块部署以引用最新的系统模块。

  5. 在设备上,使用 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

注意

有关如何从Microsoft获取最新存储库配置的说明,请参阅 Install IoT Edge 的初步步骤。

检查可用的IoT Edge版本:

apt list -a aziot-edge

更新 IoT Edge:

sudo apt-get install aziot-edge

运行 apt-get install aziot-edge 会升级安全子系统,并安装标识服务aziot-identity-service 作为必需的依赖项。

然后,重新应用配置以确保系统已完全更新。

sudo iotedge config apply

更新运行时容器

更新 IoT Edge 代理和 IoT Edge 中心容器的方式取决于在部署中使用的是滚动标记(如 1.5)还是特定标记(如 1.5.1)。

使用命令iotedge logs edgeAgentiotedge logs edgeHub检查设备上当前设备上的IoT Edge代理和IoT Edge中心模块的版本。 如果使用的是 IoT Edge for Linux on Windows,则需要通过 SSH 连接到 Linux 虚拟机以检查运行时模块版本。

屏幕截图显示在控制台日志中的何处查找容器版本。

了解 IoT Edge 标签

IoT Edge 代理和 IoT Edge 中心镜像使用与其关联的 IoT Edge 版本相匹配的标签。 使用两种不同的方法标记运行时映像:

  • 滚动标签 - 仅使用版本号的前两位数来获取匹配这些数字的最新镜像。 例如,每当有新版本发布时,1.5 就会更新为最新的 1.5.x 版本。 如果 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.5**请更新部署清单中的标记,并将更改应用到设备。

  1. 在 Azure 门户的 IoT 中心,选择 IoT Edge 设备,然后选择“设置模块” 。

  2. 在“模块”选项卡上,选择“运行时设置”。

  3. 在“运行时设置”中,在“Edge Agent”部分中,将“镜像 URI”值更新为所需的版本。 例如,mcr.microsoft.com/azureiotedge-agent:1.5 请勿选择“应用”

  4. 选择“Edge Hub”选项卡,使用相同的所需版本更新“镜像 URI”值。 例如 mcr.microsoft.com/azureiotedge-hub:1.5

  5. 选择“应用”以保存更改。

  6. 选择“查看 + 创建”,查看 JSON 文件中显示的部署,然后选择“创建”。

更新合作伙伴模块 URI

如果使用合作伙伴模块,请使用合作伙伴提供的映像 URI 更新模块部署。 请联系 IoT Edge 模块发布者获取更新的容器映像 URI。 使用发布者提供的新映像 URI 更新设备配置。

  1. 登录 Azure 门户并导航到 IoT 中心。
  2. 在左侧窗格上,选择“设备管理”菜单下的“设备”。
  3. 从列表中选择使用合作伙伴模块的 IoT Edge 设备。
  4. 在上方栏中,选择“设置模块”。
  5. 选择要使用新映像 URI 更新的 IoT Edge 合作伙伴模块。
  6. 使用发布者提供的新映像 URI 更新映像 URI 值
  7. 选择“应用”以保存更改。
  8. 选择“查看 + 创建”,查看 JSON 文件中显示的部署,然后选择“创建”。

验证版本是否匹配

  1. 在您的设备上,使用命令 iotedge version 来检查安全子系统版本。 输出包括主要、次要和修订版本号。 例如 iotedge 1.5.13

  2. 在设备部署运行时设置中,验证 edgeHub 和 edgeAgent 映像 URI 版本是否与安全子系统的主要和次要版本匹配。 如果安全子系统版本为 1.5.15,则映像版本为 1.5。 例如 mcr.microsoft.com/azureiotedge-hub:1.5mcr.microsoft.com/azureiotedge-agent:1.5

注意

将 IoT Edge 安全子系统和运行时容器更新为同一个受支持的发行版。 虽然支持不匹配的版本,但Microsoft尚未测试所有版本组合。

若要查找最新版本的 Azure IoT Edge,请参阅 Azure IoT Edge 版本

故障排除

可以随时通过在设备中运行以下命令来查看系统的日志。

  • 使用 check 命令开始故障排除。 此命令会针对常见问题运行一系列配置测试和连接测试。

    sudo iotedge check --verbose
    
  • 若要查看 IoT Edge 系统的状态,请运行:

    sudo iotedge system status 
    
  • 若要查看主机组件日志,请运行:

    sudo iotedge system logs
    
  • 若要检查 edgeAgentedgeHub 报告的定期问题,请运行:

    请务必将 <module> 替换为你自己的模块名称。 如果没有问题,将不显示任何输出。

    sudo iotedge logs <module>
    

有关详细信息,请参阅对 IoT Edge 设备进行故障排除

后续步骤

查看最新的 Azure IoT Edge 版本

持续关注物联网博客中的最新更新和通告