文档首页/ 智能边缘平台 IEF/ 常见问题/ 边缘应用/ 容器应用在边缘节点启动失败
更新时间:2024-01-19 GMT+08:00

容器应用在边缘节点启动失败

问题描述

容器应用在边缘节点启动失败。

排查思路

以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。

图1 排查思路
表1 排查思路

可能原因

处理措施

容器应用下发到边缘节点失败

请参见下发应用到边缘节点失败

容器应用配置不正确

容器应用配置不正确

容器镜像无法下载到边缘节点

请参见容器镜像拉取失败

容器应用配置不正确

  1. 登录边缘节点。
  2. 执行如下命令查看容器是否处于运行状态。

    sudo docker ps | grep 应用名称

    执行如下命令查看容器是否处于异常退出状态。

    sudo docker ps -a | grep 应用名称

    多次交替执行上面两个命令,确认容器是否一直在重启。

    • 如果您无法查到您的应用,请参见3
    • 如果您的容器在不断重启,请对以下情况进行自查:

      ID=`sudo docker ps -a | grep 应用名称 | awk '{print $1}' `

      sudo docker logs $ID

      该日志为应用日志,所以请通过该日志定位容器不断重启的原因,可参考以下几种情况考虑:

      • 镜像问题

        镜像本身存在错误,无法正常启动,或者镜像与系统不匹配,导致无法启动。您可以通过以下方式在边缘节点验证:

        1. 获取边缘节点镜像。

          docker images

        2. 查找到您的镜像,并获取镜像ID。
        3. 通过docker run命令运行容器。根据业务需求,可能需要不同的启动命令。
      • 启动参数问题

        请确认启动参数是否正确。

      • 目录挂载问题

        如果镜像需要使用节点上特殊的目录,请确认该目录在下发时已经挂载。

      • NPU问题

        如果您的应用需要使用NPU等资源,请确认您在应用下发时,选择了该资源。

        NPU资源被非IEF下发的应用占用,导致资源不足。IEF不能识别非IEF应用对NPU的占用情况,请确定NPU资源是否充足。

      • 资源问题

        请确认应用下发时申请的CPU/内存等资源的limit值足够您的应用启动(存在limit值过小,容器运行所需资源较多,导致容器不断被kill的情况)。您可以通过更新升级调大limit值验证。

      • 健康检查问题

        如果您配置了健康检查,请确认健康检查方式配置正确。如果您的健康检查方式配置错误,会导致健康检查不断失败,容器不断被重启。

        登录IEF控制台,选择“边缘应用 > 容器应用”,单击您的应用名称,进入详情页,单击“更新升级”页签,在“高级配置 > 健康检查”中确认您的应用存活探针和应用业务探针是否配置正确。

        为验证该问题,您可以通过暂时不配置健康检查,更新升级后,看应用会不会继续不断重启。

      • 健康检查时间间隔问题

        请确认应用正常启动需要多长时间,以及您配置的健康检查方式一般多长时间可以返回结果。

        图2 健康检查配置

        健康检查的延迟时间是指应用下发后多长时间开始健康检查,如果健康检查延迟时间配置过小,应用还不能正常启动,会导致健康检查不断失败,容器不断被重启,从而形成恶性循环。

        健康检查的超时时间是指发起健康检查请求后多长时间不反馈判定健康检查失败。如果配置的健康检查超时时间小于接口返回所需时间,会导致健康检查不断失败,从而应用被不断重启。(在边缘节点性能不佳或者边缘应用业务量很大的情况下,容易出现该问题)

  3. 确认应用是否下发成功。

    1. 切换至root用户。

      sudo su

    2. 查看应用日志。

      cat /var/IEF/sys/log/edge_core.log | grep 应用名称

    如果有日志输出,说明应用下发成功,可能是容器镜像未能成功拉取,请参见容器镜像拉取失败定位。

    如果无日志输出,请提交工单