azure - IoT Edge 模块之一处于退避状态 具有 Raspbian OS 的 Raspberry Pi 4

标签 azure docker iot azure-iot-hub azure-iot-edge

我已经开发了一个模块并为arm64v8架构构建了镜像,因为我的Edge设备在Raspberry Pi 4中运行。我在config文件夹中正确获取了deployment.arm64v8.json文件。但是,当我在 Visual Studio Code 中右键单击设备并选择“为单个设备创建部署”时,会添加模块,但其中一个模块显示退避状态。这里可能是什么问题,严格遵循this doc .

enter image description here

enter image description here

我还尝试重新启动服务。

enter image description here

设备信息

主机操作系统:Raspberry OS 架构:Arm64v8 容器操作系统:Linux 容器

运行时版本

iotedge:iotedge 1.0.9.4 Docker/Moby [运行 docker 版本]:

enter image description here

更新:

我正在尝试在我的 64 位 Windows 开发机中构建 arm32 镜像,我想这就是我遇到此问题的原因。现在我有 3 个选择。

  1. 从此处安装 64 位版本的 Raspberry OS
  2. 设置 32 位虚拟机并将其用作开发机并 构建 32 位图像
  3. 我已经运行了 WSL,可能正在运行 Visual Studio 代码 解决办法有吗?

您能告诉我什么是更好的方法吗?

最佳答案

有几个问题我做错了。首先,我试图在我的 64 位 Windows 开发机中构建一个 arm64 镜像,然后将该镜像部署到 arm32 Raspbian 操作系统,这永远不会工作。您可以通过运行以下命令查看版本和其他详细信息。

enter image description here

如果显示aarch64,那么它是 64 位。如果显示 armv7l 那么它就是 32 位。就我而言,它是arm71。因此,现在我必须在 64 位 Windows 主机 上构建 arm32 容器镜像,并在我的 Raspberry Pi 4 上使用它。根据this doc ,这绝对是可能的。

You can build ARM32 and ARM64 images on x64 machines, but you will not be able to run them

运行不是我的问题,因为我只需要构建图像,然后我将在我的 Raspberry Pi 中使用它。为了使其工作,我必须更改我的 Dockerfile.arm32v7,特别是我们拉取基本镜像的第一行。

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build-env
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim-arm32v7
WORKDIR /app
COPY --from=build-env /app/out ./

RUN useradd -ms /bin/bash moduleuser
USER moduleuser

ENTRYPOINT ["dotnet", "SendTelemetry.dll"]

“build-env”镜像应与主机操作系统具有相同的架构,最终镜像应为目标操作系统架构。对 docker 文件进行更改后,我更改了模块文件夹内的 module.json 文件中的版本,以便在使用时带有新标签的新镜像将添加到容器注册表中右键单击 deployment.template.json 后选择 Build and Push IoT Edge Solution 选项,然后使用Create Deployment for Single Device 选项右键单击 Visual Studio Code 中的设备名称。然后,当我监视设备(开始监视内置事件端点选项)时,我会得到此输出。

enter image description here

对于这个问题,Microsoft 的支持非常出色。他们真的帮助我解决了这个问题GitHub issue我已经发布了。

关于azure - IoT Edge 模块之一处于退避状态 具有 Raspbian OS 的 Raspberry Pi 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63249180/

相关文章:

javascript - 用于请求和响应的文件上传的 XHR 进度条

sql-server - Debezium:无法在 Kafka-Connect Docker 容器上设置观察者。获取关联 ID 为 2 的元数据时出错... LEADER_NOT_AVAILABLE

c# - 具有 IoC 的通用应用程序 : Dependency management/isolation

node.js - bluemix 无法登录、停止/重新启动应用程序

azure - 在 Linux 中使用 Set-AzureRmVMOSDisk 并附加时,无法登录到新创建的 ARM VM

azure - 删除服务器 :HTTPAPI/2. 0 无效请求 header

azure - 指定的 CGI 应用程序在 Azure Functions ASP 上运行时遇到错误,服务器终止了进程

具有多个参数的 docker 入口点

linux - 为什么 java 需要基础镜像才能在 docker 上运行

c - 任何想法如何将 udp ipv6 数据包发送到 cooja 模拟