小熊派开发板移植emwin_IoT设备实践丨如果你也在树莓派上部署了k3s,你也许需要这篇文章...

本文讲述了在树莓派4上部署k3s遇到的问题及解决过程,包括k3s无法启动的日志报错、cmdline.txt修改无效、entropy不足等问题,以及通过添加内核参数和软件补充entropy来成功启动k3s的方法。同时提及了在简易硬件如树莓派上运行Linux需要注意的其他事项。
摘要由CSDN通过智能技术生成

直播预告

明晚8:30,IoT设备管理实战!企业在落地边缘计算的过程会遇到哪些挑战?什么是MQTT协议?如何设计企业的边缘架构?如何实现边缘侧的IoT设备管理?

http://z-mz.cn/PmxP

d46225c7a4ddda0c3e80739eae3eb7aa.png

前  言

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

硬件设备:树莓派4

k3s版本:v1.17.3+k3s1

操作系统:

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

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

18595e8e75728f2a345836b91296029d.png

关键报错信息:

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_memorycoherent_pool=1M ………. cgroup_memory=1 cgroup_enable=memory

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

$ cat /proc/sys/kernel/random/entropy_avail522

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

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

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

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

总  结

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

还想了解更多关于k3s+IoT设备的实战内容,欢迎参加明天晚上的直播课程,点击文末【阅读原文】即可预约课程,我们会在课程开始前会发送提醒短信。

aca14c223b493c38aeec7adb2c82f823.png

推荐阅读

保姆级实操教程,如何在树莓派上玩转k3s!

详细教程丨如何在k3s环境中安装GPU相关程序

手把手实操教程!使用k3s运行轻量级VM

About k3s

k3s 是目前全球用户量最大的 CNCF 认证轻量级 K8S 发行版。自 2019 年 3 月发布以来,备受全球开发者们关注。发行后仅用了10个月,GitHub Stars 数已超过 11,000,成为了开源社区最受欢迎的边缘计算 K8S 解决方案。

k3s 专为在资源有限的环境中运行 Kubernetes 的研发和运维人员设计,将满足日益增长的在边缘计算环境中运行在 x86、ARM64 和 ARMv7 处理器上的小型、易于管理的 Kubernetes 集群需求。k3s 的发布,为开发者们提供了以“Rancher 2.X + k3s”为核心的从数据中心到云到边到端的 K8S 即服务(Kubernetes-as-a-Service),推动 Kubernetes Everywhere。

67d2c8c77a90ab6f655790e22e541162.png

扫码添加k3s中文社区助手

加入官方中文技术社区

官网:https://k3s.io

点击阅读原文,预约IoT设备管理课程

↓↓↓
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值