前段时间,遇到了多个用户在使用iManager for K8S的过程出现K8S节点宕机,或者是使用无法使用任何命令的情况。通过了解之后发现这些客户都存在一个共同点,服务节点的文件系统类型都是XFS,并且使用的NFS作为存储。本篇文章将讲解如何解决此问题。

问题现象:服务节点的文件系统类型为XFS,使用SuperMap iManager for K8S一段时间后,出现K8S节点掉线,节点宕机,或者是df等命令都不可用。查看系统日志有cpu soft lockup错误,或者是类似报错:
在这里插入图片描述
在查阅了相关资料后,发现这个其实Linux内核的BUG(https://forums.centos.org/viewtopic.php?t=52412),在低版本的内核环境下使用XFS会导致这些现象,而解决此类问题的办法就是升级内核。按照资料中所说需要将内核版本升级到3.10.0-1062.el7或者以上。另外这些客户还有个共同点就是使用的操作系统为Centos7.5,这个版本的内核版本为3.10.0-862.el7,是低于要求的版本的
升级内核
准备,可以在这里下载我们准备好的升级所需包

  1. 停止K8S,NFS(如果nfs也在服务节点)服务。建议从子节点开始升级
systemctl stop kubelet 
systemctl stop nfs
  1. 如果是服务器是联网状态,可以不用下载升级包
sudo yum list kernel #查询当前所有的内核版本
sudo yum update -y kernel #更新到3.10.0-1062.el7或者以上

  1. 如果是离线环境,将升级包拷贝解压到节点任意位置。进入解压的目录中
yum --disablerepo=* localinstall -y --nogpgcheck *.rpm #此脚本升级3.10.0-1160.36.2.el7.x86_64

中途可能会遇到依赖冲突
在这里插入图片描述
解决办法:卸载冲突的依赖包

rpm -e policycoreutils --nodeps
rpm -e libsemanage --nodeps

然后在升级包的目录下再次执行

yum --disablerepo=* localinstall -y --nogpgcheck *.rpm
  1. 查看已有的内核版本和顺序
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg

在这里插入图片描述
可以看到升级的内核已经安装成功了 顺序为0
编辑/etc/default/grub,找到GRUB_DEFAULT=saved,将saved修改为内核位置,此处为0,则改为GRUB_DEFAULT=0

vi /etc/default/grub

在这里插入图片描述
运行grub2-mkconfig命令来重新创建内核配置

grub2-mkconfig -o /boot/grub2/grub.cfg
  1. 重启机器,reboot
  2. 重启后查看当前内核版本,可以看到已经升级成功
    在这里插入图片描述
    然后依次升级其他的服务节点,都升级完成后,运行K8S就不会再出现类似的问题了。目前已经有多个客户都已经升级内核,并且没有再出现此问题。
    注意:如果有其他的环境需要安装K8S并且都要使用NFS和XFS文件系统的话,建议使用CentOS7.9版本
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐