k8s node节点断电重启出问题;flannel重启失败 CrashLoopBackOff;flannel pod报错"Back-off restarting failed container" ;

本文记录了一次使用kubeadm安装Kubernetes后遇到的问题及解决过程。从节点处于notready状态,到flannel pod出现CrashLoopBackOff,直至通过关闭SELinux、Firewall和swap解决问题,提供了一套完整的故障排查和解决方案。

问题

如100字的题

产生原因

kubeadm 装了k8s(各项指标正常) 结果电脑蓝屏重启;kubectl get nodes 查看发现node节点都处于not ready 状态。

解决过程

进入节点,查看systemctl status docker; systemctl status kubelet; 发现docker好的,kubelet挂了。

(如果docker挂了且一直卡starting状态,用journalctl -uf docker发现问题,如果问题都好的,再ps -ef docker 查看是否有父进程为1 的docker进程,有的话kill -9 docker进程id, 有多少kill多少,再systemctl start docker看下)

journalctl -uf kubelet发现swap没关;swapoff -a 关闭,再systemctl  start  kubelet;启动 ,再到master节点查看nodes ,全ready的。

然而问题并没有解决完,通过 kubectl get pods -n kube-system 查看发现node节点上的flannel pod状态是 Init:CrashLoopBackOff

通过 kubectl describe pod [ flannel pod名 ] 查看信息,发现 Back-off restarting failed container

通过 kubectl logs [flannel pod 名] 查看信息,发现 [Bad request] container "kube-flannel" in pod "kube-flannel-ds-amd64-xbhvp" is waiting to start 啥的。

把以上所有获取到的信息在网上搜了个遍没找着结果,有说节点加个subnet.env不行,有说yaml文件或是安装时就没有配置正确的。最后,我试了下,kubectl delete -f  【之前安装flannel的yml】 删除pod,再 kubectl apply -f 重装,再在master节点上kubeadm token create --print-join-command (在node节点运行Kubectl会失败因为是用Kubeadm装的,kubectl在node没权限会被refused)

在子节点kubeadm reset; kubeadm join... (之前获取的join-command) ,发现原来ready的节点经过我这一折腾直接not ready,傻掉了

解决方案

最后,求助大佬,大佬说你把selinux和firewall 关闭试试,然后就解决了。。之前not ready也好了,所有pod 也running了。。

systemctl stop firewalld; systemctl disable firewalld; //关闭防火墙及设置开机关闭

vi /etc/selinux/config 将selinux改为disabeld; setenforce 0; //关闭selinux及设置开机关闭

swapoff -a; vi /etc/fstab 注释最后一行swap命令; //关闭swap及设置开机关闭

===========================================================================================

总结:

使用ansible装的时候没有设置SELINX开机关闭产生的,结果重启后又开回起来了,以及SELINUX产生的问题从日志中不好看出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值