通过


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

更新IoT Edge

适用范围:IoT Edge 1.5 复选标记 IoT Edge 1.5 IoT Edge 1.4 勾选标记 IoT Edge 1.4

重要

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

随着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 iotedge system stop 停止 IoT Edge,然后使用 卸载

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

  3. 在设备上,安装 IoT Edge

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

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

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

  5. 在设备上,使用 sudo iotedge config apply 启动IoT Edge。

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

更新安全子系统

IoT Edge安全子系统包括一组本机组件,需要使用 IoT Edge 设备上的包管理器进行更新。

使用命令 iotedge version 检查设备上运行的安全子系统的版本。 如果使用 Windows 上的 linux IoT Edge,则需要通过 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中心模块的版本。 如果在 Windows 上使用适用于 Linux 的 IoT Edge,则需要通过 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 Hub 中,选择IoT Edge设备,然后选择 Set Modules

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

  3. 在“运行时设置”中,使用所需的版本更新“Edge 代理”部分中的“映像 URI”值。 例如, 仍未选择 应用

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

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

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

更新合作伙伴模块 URI

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

  1. 登录到 Azure 门户并导航到IoT Hub。
  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 版本