适用于:
IoT Edge 1.5
重要
IoT Edge 1.5 LTS 是受支持的版本。 IoT Edge 1.4 LTS 于 2024 年 11 月 12 日终止。 如果使用的是早期版本,请参阅 Update IoT Edge。
本文提供有关注册和预配 Linux IoT Edge 设备的端到端说明,包括安装 IoT Edge。
连接到 IoT 中心 的每个设备都有一个设备 ID,用于跟踪 云到设备 或 设备到云 通信。 你将配置设备的连接信息,这些信息包括:
- IoT 中心主机名
- 设备标识
- 用于连接到 IoT 中心的身份验证详细信息
本文中的步骤演示了一个名为“手动预配”的过程。在手动预配过程中,你可以将单个设备连接到其 IoT 中心。 对于手动预配,可以通过两种方式来验证 IoT Edge 设备:
对称密钥:你在 IoT 中心创建新设备标识时,服务将创建两个密钥。 将其中一个密钥置于设备上,并在进行身份验证时将该密钥提供给 IoT 中心。
此身份验证方法的入门速度更快,但不太安全。
X.509 自签名:创建两个 X.509 标识证书并将其置于设备上。 在 IoT 中心创建新的设备标识时,需要提供两个证书的指纹。 设备在向 IoT 中心进行身份验证时会提供一个证书,IoT 中心会验证该证书是否与其指纹匹配。
此身份验证方法更加安全,建议用于生产方案。
本文介绍如何使用对称密钥作为身份验证方法。 如果要使用 X.509 证书,请参阅在 Linux 上使用 X.509 证书创建和预配 IoT Edge 设备。
注意
如果要设置多个设备,并且不想手动预配每个设备,请参阅以下文章之一来了解 IoT Edge 如何与 IoT 中心设备预配服务配合工作:
先决条件
本文介绍如何注册 IoT Edge 设备并在设备上安装 IoT Edge(也称为 IoT Edge 运行时)。 在注册并安装设备之前,请确保拥有所选设备管理工具,例如 Azure CLI,并查看设备要求。
设备管理工具
可以使用 Azure 门户、Visual Studio Code 或 Azure CLI 注册设备。 每个实用工具都有自己的先决条件,或者可能需要安装:
Azure 订阅中的免费或标准 IoT 中心。
设备要求
x64、ARM32 或 ARM64 Linux 设备。
Microsoft为各种作系统发布安装包。
有关生产环境当前支持哪些操作系统的最新信息,请参阅 Azure IoT Edge 支持的平台。
Visual Studio Code 扩展
如果使用 Visual Studio Code,有用的 Azure IoT 扩展可简化设备创建和管理过程。
同时安装 Azure IoT Edge 和 Azure IoT 中心扩展:
Azure IoT Edge。 适用于 Visual Studio Code 的 Azure IoT Edge 工具扩展处于维护模式。
注册您的设备
可以使用 Azure 门户、Visual Studio Code 或 Azure CLI 根据偏好注册设备。
在 Azure 门户的 IoT 中心中,可以与未启用边缘的 IoT 设备分开创建和管理 IoT Edge 设备。
登录到 Azure 门户 并转到 IoT 中心。
在左窗格中,从菜单中选择 “设备” ,然后选择“ 添加设备”。
在 创建设备上,提供以下信息:
- 创建描述性设备 ID,例如
my-edge-device-1(所有小写)。 复制此设备 ID,因为稍后需要用到。 - 选中“IoT Edge 设备”复选框。
- 选择“对称密钥”作为身份验证类型。
- 使用默认设置自动生成身份验证密钥,将新设备连接到中心。
- 创建描述性设备 ID,例如
选择“保存”。
IoT 中心应会显示你的新设备。
现在已在 IoT Hub 中注册了设备,接下来可以检索用于完成 IoT Edge 运行时安装和预配的预配信息。
查看已注册设备并检索预配信息
使用对称密钥身份验证的设备需要使用其连接字符串来完成 IoT Edge 运行时的安装和预配。 创建设备时,将为 IoT Edge 设备生成连接字符串。 对于 Visual Studio Code 和 Azure CLI,连接字符串将显示在 JSON 输出中。 如果你使用 Azure 门户创建设备,可以在设备本身中找到该连接字符串。 在 IoT 中心选择设备时,它会在设备页上列为 主要连接字符串 。
连接到您的 IoT 中心的启用边缘计算的设备将在 IoT 中心的“设备”页上列出。 如果有多个设备,可以通过选择 Iot Edge 设备 类型来筛选列表,然后选择“ 应用”。
准备设置设备时,您需要一个连接字符串,用于将您的物理设备与其在物联网中心中的身份连接起来。 使用对称密钥进行身份验证的设备有自己的连接字符串,可以在门户中复制这些连接字符串。 若要在门户中查找连接字符串,请执行以下步骤:
- 在“设备”页中,从列表中选择 IoT Edge 设备 ID。
- 复制“主连接字符串”或“辅助连接字符串”的值 。 任何一键都是有效的。
安装 IoT Edge
在本部分,你将准备 IoT Edge 的 Linux 虚拟机或物理设备。 然后安装 IoT Edge。
运行以下命令以添加包存储库,然后将 Microsoft 包签名密钥添加到你的受信任密钥列表中。
重要
2022 年 6 月 30 日,Raspberry Pi OS Stretch 已从第 1 层 OS 支持列表中停用。 若要避免潜在的安全漏洞,请将主机 OS 更新为 Bullseye。
对于 支持的第 2 层平台作系统,安装包在 Azure IoT Edge 版本中可用。 请参阅脱机安装或特定版本安装中的安装步骤(可选)。
可以使用几个命令安装IoT Edge。 打开终端并运行以下命令:
24.04:
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb22.04:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
有关操作系统版本的详细信息,请参阅 Azure IoT Edge 支持的平台。
注意
Azure IoT Edge 软件包受制于每个包(usr/share/doc/{package-name} 或 LICENSE 目录)中的许可条款。 使用包之前,请先阅读许可条款。 安装和使用包即表示你接受这些条款。 如果你不同意许可条款,请不要使用该包。
安装容器引擎
Azure IoT Edge 依赖于 OCI 兼容的容器运行时。 对于生产方案,请使用 Moby 引擎。 Moby 引擎是官方支持用于 IoT Edge 的容器引擎。 Docker CE 和 Docker EE 容器映像适用于 Moby 运行时。 如果使用的是 Ubuntu Core 快照,Canonical 负责管理 Docker 快照,并支持在生产环境中使用。
安装 Moby 引擎。
sudo apt-get update; \
sudo apt-get install moby-engine
默认情况下,容器引擎不会设置容器日志大小限制。 随着时间的推移,这种情况可能会导致设备填满日志并耗尽磁盘空间。 但是,你可以将日志配置为在本地显示,不过这是可选操作。 有关日志记录配置的详细信息,请参阅 准备在生产环境中部署 IoT Edge 解决方案。
以下步骤演示如何将容器配置为使用 local 日志记录驱动程序作为日志记录 机制。
创建或编辑现有 Docker 守护程序的配置文件:
sudo nano /etc/docker/daemon.json将默认日志记录驱动程序设置为
local日志记录驱动程序,如示例中所示:{ "log-driver": "local" }重启容器引擎以使更改生效。
sudo systemctl restart docker
安装 IoT Edge 运行时
IoT Edge 服务在 IoT Edge 设备上提供并维护安全标准。 该服务在每次开机时启动,并通过启动 IoT Edge 运行时的其余部分来启动设备。
注意
从版本 1.2 开始, Azure IoT 标识服务 将处理 IoT Edge 的标识预配和管理,以及需要与 IoT 中心通信的其他设备组件。
本部分中的步骤表示在可连接 Internet 的设备上安装最新 IoT Edge 版本的典型过程。 如果需要安装特定版本(如预发行版版本)或在脱机时需要安装,请按照本文后面的 脱机或特定版本安装 步骤作。
提示
如果已有运行较旧版本的 IoT Edge 设备,并且想要升级到最新版本,请使用 Update IoT Edge 中的步骤。 最新版本与先前的 IoT Edge 版本有很大不同,因此需要采取特定的步骤进行升级。
如果还不是最新版本,请安装最新版本的 IoT Edge 和 IoT 标识服务包:
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge20.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
为设备预配其云标识
在设备上安装容器引擎和 IoT Edge 运行时后,请使用其云标识和身份验证信息设置设备。
可以使用以下命令通过对称密钥身份验证配置IoT Edge设备:
sudo iotedge config mp --connection-string 'PASTE_DEVICE_CONNECTION_STRING_HERE'
应用配置更改。
sudo iotedge config apply若要查看配置文件,可将其打开:
sudo nano /etc/aziot/config.toml
部署模块
若要部署 IoT Edge 模块,请转到 Azure 门户中你的 IoT 中心,然后:
在 IoT 中心菜单中选择“设备”。
选择你的设备以打开其页面。
选择“设置模块”选项卡。
由于我们要部署 IoT Edge 默认模块(edgeAgent 和 edgeHub),且不需要将任何模块添加到此窗格,因此请选择底部的“查看 + 创建”。
你将看到你所使用模块的 JSON 确认信息。 选择“创建”以部署模块。
有关详细信息,请参阅部署模块。
验证成功的配置
在 IoT Edge 设备上,验证运行时是否已成功安装并配置。
提示
需要提升权限才能运行 iotedge 命令。 安装 IoT Edge 运行时后从计算机中注销并第一次重新登录后,你的权限将自动更新。 在此之前,请在命令前使用 sudo。
检查以确保 IoT Edge 系统服务正在运行。
sudo iotedge system status成功状态响应会将
aziot服务显示为正在运行或准备就绪。如果需要对服务进行故障排除,请检索服务日志:
sudo iotedge system logs使用该工具
check验证设备的配置和连接状态:sudo iotedge check可以预期一系列响应可能包括 “确定 ”(绿色)、 警告 (黄色)或 “错误 ”(红色)。 有关排查常见错误的信息,请参阅 Azure IoT Edge 常见问题的解决方案。
提示
请始终使用
sudo来运行检查工具,即使权限已更新。 该工具需要提升的权限才能访问配置文件以验证配置状态。注意
在新预配的设备上,你可能会看到与 IoT Edge 中心相关的错误:
× 生产就绪性:Edge 中心的存储目录保存在主机文件系统上 - 错误。无法检查 edgeHub 容器的当前状态
新预配的设备上预期会出现此错误,因为 IoT Edge 中心模块尚未运行。 请确保在前面的步骤中部署了 IoT Edge 模块。 部署会解决此错误。
或者,你可能会看到一个状态代码,例如
417 -- The device's deployment configuration is not set。 部署模块后,此状态将更改。当服务首次启动时,你应当只会看到 edgeAgent 模块正在运行。 EdgeAgent 模块默认运行,有助于安装和启动部署到设备的任何其他模块。
通过在 Azure 门户查看设备页,检查设备和模块是否已部署并正在运行。
部署并运行模块后,使用以下命令在设备或虚拟机中将其列出:
sudo iotedge list
脱机或特定版本安装(可选)
本部分中的步骤适用于标准安装步骤未涵盖的方案。 这些场景可能包括:
- 脱机安装 IoT Edge 设备
- 安装候选发布版本
如果你想要安装特定版本的无法通过包管理器获取的 Azure IoT Edge 运行时,请使用本部分中的步骤。 Azure 包列表仅包含有限的一组最新版本及其子版本,因此这些步骤适用于任何想要安装旧版本或候选发布版本的人。
如果使用 Ubuntu snap,可以下载 snap 并脱机安装它。 有关详细信息,请参阅下载 Snaps 软件包并脱机安装。
使用 curl 命令,可以直接从 IoT Edge GitHub 存储库将组件文件作为目标。
导航到 Azure IoT Edge 发布版本,找到你想要定位的版本。
展开该版本的“资产”部分。
每个版本都应有用于 IoT Edge 和标识服务的新文件。 如果要在脱机设备上安装 IoT Edge,请提前下载这些文件。 否则,请使用以下命令来更新这些组件。
找到与你的 IoT Edge 设备体系结构匹配的 aziot-identity-service 文件。 右键单击文件链接并复制链接地址。
在以下命令中使用复制的链接来安装该版本的标识服务:
curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
找到与您的 IoT Edge 设备架构匹配的 aziot-edge 文件。 右键单击文件链接并复制链接地址。
在以下命令中使用复制的链接来安装该版本的 IoT Edge。
curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.deb
卸载 IoT Edge
若要从设备中删除 IoT Edge 安装,请使用以下命令。
删除 IoT Edge 运行时。
sudo apt-get autoremove --purge aziot-edge
如果计划重新安装 IoT Edge 并在以后使用相同的配置信息,请忽略 --purge 标记。
--purge 标记会删除与 IoT Edge 关联的所有文件,包括配置文件。
删除 IoT Edge 运行时后,已创建的所有容器都会停止,但仍存在于设备上。 查看所有容器以了解哪些容器仍然存在。
sudo docker ps -a
从设备中删除容器,包括两个运行时容器。
sudo docker rm -f <container ID>
最后,从设备中删除容器运行时。
sudo apt-get autoremove --purge moby-engine
后续步骤
转到部署 IoT Edge 模块,了解如何将模块部署到设备上。