1.问题背景
项目中使用sealos工具安装部署Kubernetes容器集群,安装时使用cilium网络插件,部署k8s集群时,发现无法正常拉起cilium网络组件Pod,导致k8s集群网络不可用
2.部署环境
系统版本:Centos7.8 x86 64位 (amd64架构)
sealos版本: 5.0.0
Kubernetes版本: 1.28.0 (使用Docker运行时版本: 26.1.4)
3.问题排查过程
1.查看pod状态
只有cilium网络组件相关Pod一直Crash状态,无法正常拉起
查看even信息: kubectl get event -A
发现报错: back-off restarting failed container mount-cgroup in pod cilium-xxx
查看系统日志
检查挂盘:确认没问题
查看Pod状态
查看Pod状态:kubectl describe pod -n kube-system cilium-85h5q
报错信息: cgroup报错无法打开 /hostproc/1/ns/cgroup 文件或文件夹
Reason: Error
Message: nsenter: cannot open /hostproc/1/ns/cgroup: No such file or directory
cilium pod一直拉起失败
查看cilium启动脚本
查看本地是否缺失cgroup文件夹内:确实没有创建相关文件夹
4.问题原因分析
sealos 安装k8s集群使用cilium网路组件安装失败 报cgroup错误,cgroup错误一般跟内核有关系,怀疑内核版本不兼容导致;
查看cilium网络组件官方文档确认猜想
Cilium组件基于EBPF实现要求内核版本4.8+
https://docs.cilium.io/en/stable/operations/system_requirements/
确认问题原因: 当前系统内核版本为 3.10.0 不满足EBPF最低内核版本要求,导致cgroup创建文件失败
# 查看当前系统内核版本
[root@xxx-amd64]# uname -a
Linux xxx 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
5.解决方案
方法1: 升级系统内核版本 => 系统安装版本已确定,无法更改
方法2(采用): 使用calico网络组件替换cilium网络组件,重新安装k8s集群,问题fix
# sealos安装 k8s集群 => 使用calico 替换 cilium 网络组件 => 问题fix
sealos run labring/kubernetes-docker:v1.28.0 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.24.6-amd64 -p 123456
6.参考文档
https://sealos.run/docs/self-hosting/lifecycle-management/quick-start/deploy-kubernetes/ sealos安装k8s集群
https://explore.ggcr.dev/ 镜像仓库
https://github.com/labring/sealos/releases/download/v5.0.0/sealos_5.0.0_linux_arm64.tar.gz sealos arm64安装包下载
https://blog.csdn.net/hbhgyu/article/details/131745528 docker在arm64架构ubuntu系统的安装