边缘节点纳管失败如何处理?
问题描述
边缘节点纳管失败。
问题排查
边缘节点纳管失败的原因众多,大部分是因为边缘节点不满足纳管要求或网络不通导致的,请根据如下原因排查。
您可以使用edgectl检查边缘节点是否满足纳管要求,检查“/opt/edge-installer”目录下是否存在edgectl文件。
- 如果存在,则无需下载。
- 如果不存在,请登录IEF管理控制台,在“总览”页面右侧的“资源下载”中下载对应版本工具,例如“edgectl_x.x.x_x_x86_64.tar.gz”,并解压安装包到“/opt/edge-installer”目录下。
执行如下命令检查边缘节点是否满足纳管要求。
chmod +x /opt/edge-installer/edgectl
/opt/edge-installer/edgectl diagnose installation
- 如果边缘节点不满足要求,则返回如下信息。您可以根据错误码定位解决对应问题,详细信息请参见错误码总览。
Failed to get Docker version. ERROR6102: Make sure that Docker is running. For more information, see IEF documentation. +-------------------------------+ | Installation diagnose failed. | +-------------------------------+
- 如果边缘节点满足要求,则返回如下信息。此时您可以根据表1手动排查故障。
+---------------------------------+ | Installation diagnose succeed. | +---------------------------------+
1、边缘节点不满足纳管要求
目前在边缘节点安装Edge Agent对系统有一定的要求,请检查是否满足表2所示要求。
项目 |
规格 |
---|---|
OS |
操作系统语言必须切换至英文。
|
内存 |
边缘软件开销约128MB,为保证业务的正常运行,建议边缘节点的内存大于256MB。 |
CPU |
>= 1核 |
硬盘 |
>= 1GB |
GPU(可选) |
同一个边缘节点上的GPU型号必须相同。
说明:
当前支持Nvidia Tesla系列P4、P40、T4等型号GPU。 含有GPU硬件的机器,作为边缘节点的时候可以不使用GPU。 如果边缘节点使用GPU,您需要在纳管前安装GPU驱动。 目前只有使用x86架构的GPU节点才能纳管到IEF中使用。 |
NPU(可选) |
昇腾AI加速处理器。
说明:
当前支持集成了昇腾处理器的边缘节点,如Atlas 300推理卡、Atlas 800推理服务器。同时支持昇腾310P、昇腾310B、昇腾310P共享模式和虚拟化切分的NPU规格。 如果边缘节点使用NPU,请确保边缘节点已安装驱动(目前昇腾310仅支持1.3.x.x和1.32.x.x的固件版本,例如1.3.2.B893,可用npu-smi info命令查看固件版本)(NPU驱动需不小于22.0.4版本,进入驱动所在路径如“/usr/local/Ascend/driver”,执行cat version.info命令查看)。如果没有安装驱动,请联系设备厂商获取支持。 |
容器引擎 |
Docker版本必须高于17.06。使用高于或等于1.23版本的docker时,需设置docker cgroupfs版本为1,不支持docker HTTP API v2。 (请勿使用18.09.0版本Docker,该版本存在严重bug,详见https://github.com/docker/for-linux/issues/543;如果已使用此版本,请尽快升级。)
须知:
Docker安装完成后,请将Docker进程配置为开机启动,避免系统重启后Docker进程未启动引起的系统异常。 Docker Cgroup Driver必须设置为cgroupfs。详细配置方法请参考在边缘节点安装Docker后,如何设置Docker Cgroup Driver?。 |
glibc |
版本必须高于2.17。 |
端口使用 |
边缘节点需要使用8883端口,8883端口用于边缘节点内置MQTT broker监听端口,请确保该端口能够正常使用。 |
时间同步 |
边缘节点时间需要与UTC标准时间保持一致,否则会导致边缘节点的监控数据、日志上传出现偏差。您可以选择合适的NTP服务器进行时间同步,从而保持时间一致。详细配置方法请参见如何同步NTP服务器?。 |
3、操作系统内核版本过低,部分命令不存在而导致边缘节点安装失败
首先,请参照表2中对边缘节点的要求,查看您的操作系统及内核版本是否符合要求。
执行以下命令确认是否存在操作系统内核版本过低情况:
sh /opt/edge-installer/conf/script/parse_user_config.sh node_id
其中,node_id为边缘节点ID。
如果命令报错,则说明操作系统内核版本过低,请升级您的内核版本或重装新版操作系统后再重新纳管边缘节点。
4、获取边缘节点操作系统失败
查看安装输出日志,如下最后一行,os字段如果为空,说明获取操作系统信息失败。
2020-01-11 17:00:46.341 +08:00 DEBUG :0 init logger... 2020-01-11 17:00:46.341 +08:00 INFO config/config.go:45 New file source added for configuration: /opt/edge-installer/conf/config.yaml 2020-01-11 17:00:46.341 +08:00 INFO config/config.go:45 New file source added for configuration: /opt/edge-installer/conf/logging.yaml 2020-01-11 17:00:46.351 +08:00 INFO pkg/installer.go:24 start to install 2020-01-11 17:00:46.386 +08:00 INFO placementclient/placementclient.go:61 http_proxy:ProxyNotSet, https_proxy:ProxyNotSet 2020-01-11 17:00:46.437 +08:00 INFO httpclient/httpsclient.go:182 https_proxy: 2020-01-11 17:00:46.479 +08:00 INFO util/util.go:446 system cert file[/opt/IEF/Cert/system/sys_private_cert_crypto.crt] and system key file[/opt/IEF/Cert /system/sys_private_cert_crypto.key] have been inited 2020-01-11 17:00:46.479 +08:00 INFO pkg/installer.go:46 ------------------install--------------- 2020-01-11 17:00:46.479 +08:00 INFO deploy/bootstrap.go:48 install precheck success. 2020-01-11 17:00:46.479 +08:00 INFO deploy/bootstrap.go:54 install preprocess start 2020-01-11 17:00:46.479 +08:00 INFO deploy/deploy.go:39 install preprocess start 2020-01-11 17:00:46.501 +08:00 INFO util/util.go:192 get arch success 2020-01-11 17:00:46.502 +08:00 INFO util/util.go:216 os type is:"euleros" 2020-01-11 17:00:46.502 +08:00 INFO util/util.go:432 installer version [1.0.6] 2020-01-11 17:00:46.516 +08:00 INFO placementclient/placementclient.go:113 body : {"arch":"x86_64","installer_version":"1.0.6","os":"euleros"}
5、AI加速卡类型的边缘节点未安装NPU驱动
如果您在注册边缘节点时选了AI加速卡类型的边缘节点,边缘节点必须支持NPU,并且确保您安装了NPU驱动。
在您的边缘节点执行以下命令:
ls /dev/davinci_manager /dev/hisi_hdc /dev/davinci*
如果文件不存在,说明您没有安装NPU驱动,请前往安装NPU驱动。
6、GPU类型边缘节点未安装GPU驱动
如果边缘节点使用GPU,您需要在纳管前安装GPU驱动。IEF当前支持Nvidia Tesla系列P4、P40、T4等型号GPU,支持CUDA Toolkit 8.0至11.0版本对应的驱动。
- 安装GPU驱动。
IEF当前支持Nvidia Tesla系列P4、P40、T4等型号GPU,支持CUDA Toolkit 8.0至11.0版本对应的驱动。
- 下载GPU驱动,推荐驱动链接:
https://www.nvidia.com/content/DriverDownload-March2009/confirmation.php?url=/tesla/440.33.01/NVIDIA-Linux-x86_64-440.33.01.run&lang=us&type=Tesla
- 执行如下安装驱动命令。
- 执行如下命令检查GPU驱动安装状态。
- 下载GPU驱动,推荐驱动链接:
- 拷贝GPU驱动文件到指定目录。
- 以root用户登录边缘节点。
- 执行如下命令。
- 创建文件夹。
mkdir -p /var/IEF/nvidia/drivers /var/IEF/nvidia/bin /var/IEF/nvidia/lib64
- 拷贝驱动文件。
- 对于CentOS,依次执行如下命令拷贝驱动文件:
cp /lib/modules/{当前环境内核版本号}/kernel/drivers/video/nvi* /var/IEF/nvidia/drivers/
cp /usr/bin/nvidia-* /var/IEF/nvidia/bin/
cp -rd /usr/lib64/libcuda* /var/IEF/nvidia/lib64/
cp -rd /usr/lib64/libEG* /var/IEF/nvidia/lib64/
cp -rd /usr/lib64/libGL* /var/IEF/nvidia/lib64/
cp -rd /usr/lib64/libnv* /var/IEF/nvidia/lib64/
cp -rd /usr/lib64/libOpen* /var/IEF/nvidia/lib64/
cp -rd /usr/lib64/libvdpau_nvidia* /var/IEF/nvidia/lib64/
cp -rd /usr/lib64/vdpau /var/IEF/nvidia/lib64/
- 对于Ubuntu,依次执行如下命令拷贝驱动文件:
cp /lib/modules/{当前环境内核版本号}/kernel/drivers/video/nvi* /var/IEF/nvidia/drivers/
cp /usr/bin/nvidia-* /var/IEF/nvidia/bin/
cp -rd /usr/lib/x86_64-linux-gnu/libcuda* /var/IEF/nvidia/lib64/
cp -rd /usr/lib/x86_64-linux-gnu/libEG* /var/IEF/nvidia/lib64/
cp -rd /usr/lib/x86_64-linux-gnu/libGL* /var/IEF/nvidia/lib64/
cp -rd /usr/lib/x86_64-linux-gnu/libnv* /var/IEF/nvidia/lib64/
cp -rd /usr/lib/x86_64-linux-gnu/libOpen* /var/IEF/nvidia/lib64/
cp -rd /usr/lib/x86_64-linux-gnu/libvdpau_nvidia* /var/IEF/nvidia/lib64/
cp -rd /usr/lib/x86_64-linux-gnu/vdpau /var/IEF/nvidia/lib64/
其中,当前环境内核版本号可以使用uname -r命令查看获取,如下所示,请替换为实际取值。
# uname -r 3.10.0-514.e17.x86_64
- 对于CentOS,依次执行如下命令拷贝驱动文件:
- 执行以下命令修改目录权限。
7、目录磁盘满导致安装失败
请执行如下命令。
df -h
lsblk
确保如下目录磁盘使用率未接近100%。磁盘大小要求请参见表2。
- /opt/IEF
- /opt/edge-installer
- /opt/IEFpack
- /var/IEF
8、容器引擎未安装或未启动
执行以下命令确认容器引擎是否启动。
systemctl status docker
- 如果没有容器引擎的信息,说明容器引擎未安装,请参考表2中的要求安装容器引擎。
- 如果容器引擎未启动,执行以下命令尝试启动容器引擎。
再次查看容器引擎状态。
- 如果容器引擎启动正常(状态为active),请重新纳管边缘节点。
- 如果容器引擎无法正常启动,请优先恢复容器引擎,或者重新安装容器引擎。
9、边缘节点存在多个docker0网桥地址
使用了容器引擎图形化界面的容器后,产生了两个docker0网桥地址,导致IEF服务纳管过程中docker0网桥注册失败,进而导致纳管失败,删除多余的docker0网桥后重新纳管可解决问题。
执行以下命令:
ip addr show | grep docker0
如果出现多个IP,说明存在多个docker0网桥,请保留172开头的IP,删除多余的docker0网桥地址。
10、8883端口被占用
执行以下命令查看8883端口是否被占用。
netstat -npl | grep 8883
如果端口被占用,将会导致IEF核心组件edgecore安装失败,因为edgecore正常运行依赖该端口。
当边缘节点被正常纳管后,8883将被edgecore组件监听,如下图,所以务必保证8883端口未被占用。
11、8883端口被防火墙关闭
检查边缘节点防火墙状态。
systemctl status firewalld
firewall-cmd --state
回显中,not running表示关闭,running表示开启。
如果防火墙开启,您需要打开8883端口,或关闭防火墙。
12、边缘节点无法连接IEF
执行如下命令,确认边缘节点是否能连接IEF。
curl -i -k -v https://ief2-edgeaccess.cn-north-4.myhuaweicloud.com:443/
其中,ief2-edgeaccess.cn-north-4.myhuaweicloud.com为服务实例的edgeaccess域名,不同区域地址不同,请参考专业版服务实例域名或铂金版服务实例域名获取。
如果一直没有回显,则说明边缘节点与IEF网络不通,请确保边缘节点能连接IEF。
13、边缘节点域名解析异常
请确保您的边缘节点可以解析以下域名:
- ief2-placement.cn-north-4.myhuaweicloud.com(依据不同的区域,域名不同,例如“华东-上海一”为ief-placement.cn-east-3.myhuaweicloud.com,可以通过cat /opt/IEF/Cert/user_config来查找对应的域名)
- ief2-edgeaccess.cn-north-4.myhuaweicloud.com(依据不同的区域、不同的服务实例,域名不同,请参考专业版服务实例域名或铂金版服务实例域名获取)
确认命令:
ping ief2-edgeaccess.cn-north-4.myhuaweicloud.com ping ief2-placement.cn-north-4.myhuaweicloud.com
如果域名无法解析请配置合适的域名解析服务器,建议配置“114.114.114.114”。
14、同一个证书重复在多个边缘节点使用
同一个证书重复在多台机器纳管(同一套证书在不同的边缘节点上注册,且有一台边缘节点处于正常运行状态)。
在IEF界面注册的边缘节点和实际的边缘节点一一对应,请避免只在IEF界面创建一个边缘节点,下载安装包和证书后,重复在多个边缘节点上纳管时使用。
执行如下命令查看是否重复使用证书:
cat /var/IEF/sys/log/edge_core.log | grep websocket
若提示node_id已被占用,说明重复使用证书。如下图所示。
15、同一边缘节点多次进行纳管
- 之前纳管后未正确执行卸载操作(边缘节点以前纳管过,在IEF界面删除边缘节点后,未在边缘节点上卸载)
systemctl status edgecore
systemctl status edgemonitor
systemctl status edgelogger
如果边缘节点纳管失败,但执行以上命令发现组件仍然处于运行状态,说明之前纳管的组件未正常卸载,请执行以下命令卸载。
cd /opt/edge-installer; sudo ./installer -op=uninstall
存在以下错误情况:
重新纳管边缘节点时,直接将原来的节点的“/opt”目录变为“/opt_old”目录,新建“/opt”目录,后按照IEF提供的指导进行纳管。纳管失败后,执行卸载操作,提示卸载成功,但实际上执行以上命令发现对应组件仍然处于运行状态。这是因为在执行以上卸载操作时,卸载的不是“/opt_old”中安装的IEF组件。如遇该种情况,请先将“/opt”目录恢复,执行卸载操作后再重新开始纳管。请尽量避免该类操作。
- 卸载完清理残留文件,执行以下命令删除之前纳管的组件、生成的日志和下载的配置文件。
图2 /opt路径下文件
删除红框所示之前纳管的组件:rm -rf /opt/edge-installer、rm -rf /opt/IEF 、rm -rf /opt/IEF_firmware 、rm -rf /opt/IEFpack 、rm -rf /opt/material
删除日志:rm -rf /var/IEF
删除配置文件:rm -rf edge-installer_1.0.10_x86_64.tar.gz ief-node.tar.gz
- 之前纳管的组件卸载不干净