zoukankan      html  css  js  c++  java
  • IoT设备实践丨如果你也在树莓派上部署了k3s,你也许需要这篇文章

    前 言

    树莓派是一种广泛流行的开发板,随着物联网的深入发展,树莓派大有成为IoT终端设备标准之趋势。在支持客户在IoT场景中落地k3s时,k3s在树莓派上的部署问题也就出现了。本文记录了一些其中的关键问题,转述成文,方便其他用户参考。

    硬件设备: 树莓派4

    k3s版本: v1.17.3+k3s1

    操作系统:

    ubuntu-18.04.4-preinstalled-server-arm64+raspi3.img

    安装采用airgap方式部署后,核心问题是k3s无法启动,并有以下日志报错信息:

    在这里插入图片描述

    关键报错信息:

    level=error msg="Failed to find memory cgroup, you may need to add "cgroup_memory=1 cgroup_enable=memory" to your linux cmdline (/boot/cmdline.txt on a Raspberry Pi)"
    

    排查记录

    日志提示很明显,所以我们修改/boot/cmdline.txt并重启,但是重启后发现问题依旧,还是有这个问题。这个修改的本质是添加内核参数,所以我们从操作系统层面检查:

    $ cat /proc/cmdline | grep cgroup_memory
     # nothing return
    

    也就是说,cmdline的修改没有生效。所以,我们怀疑ubuntu这个镜像修改cmdline有其他方式:

    
    $ df -hT | grep mmc
    /dev/mmcblk0p2 ext4       29G  2.8G   26G  10% /
    /dev/mmcblk0p1 vfat      253M  117M  136M  47% /boot/firmware
    # 真正的启动分区在/boot/firmware
    
    # 阅读/boot/firmware/README
    # 排查后得知,应该修改nobtcmd.txt
    

    在/boot/firmware/nobtcmd.txt添加cgroup相关参数后,重启后可以看到cmdline有了期望的配置:

    $ cat /proc/cmdline | grep cgroup_memory
    coherent_pool=1M ………. cgroup_memory=1 cgroup_enable=memory
    

    这时发现k3s依然没有完成启动,日志输出缓慢,怀疑系统某些因素影响了启动过程。排查entropy,发现可用值非常低,低到会阻塞程序运行,一般来说<1000程序就会卡住:

    $ cat /proc/sys/kernel/random/entropy_avail
    522
    

    很多程序的运行都依赖随机数生成,比如hash、加密解密等过程。申请随机数就会消耗系统的entropy(熵),当entropy低到一定阈值,程序就运行缓慢,等待随机数种子。

    一般来说kernel可以从硬件运行信息中收集噪声来补充entropy,但树莓派毕竟硬件能力有限,无法从硬件层面快速生成entropy,所以我们安装软件提供模拟算法进行补充:

    $ apt install haveged 
    $ systemctl enable haveged
    
    $ cat /proc/sys/kernel/random/entropy_avail
    2366
    

    一切妥当之后,再查看k3s启动状态,k3s已经完成启动。

    总 结

    Linux运行在诸如树莓派这种简易硬件架构下,会有很多细微差别,平日在x86 server体系的认知和经验可能都是不成立,这就导致运行在服务器Linux上的软件并不会那么容易移植到小型终端设备上。对于树莓派,除了文中提及的内容,你还需要关注NTP时间同步,MicroSD卡的IO性能等等。

  • 相关阅读:
    第四百九十六天 how can I 坚持
    第四百九十四、五天 how can I 坚持
    第四百九十三天 how can I 坚持
    第四百九十二天 how can I 坚持
    第四百九十一天 how can I 坚持
    第四百九十天 how can I 坚持
    第四百八十九天 how can I 坚持
    第四百八十八天 how can I 坚持
    第四百八十七天 how can I 坚持
    第四百八十六天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/k3s2019/p/12484995.html
Copyright © 2011-2022 走看看