问题发现:节后回来有个同事报k8s某个节点的服务异常。
问题排查:去其中一个主节点查看了下节点状态,显示有2个污点node.kubernetes.io/unreachable:NoSchedule,node.kubernetes.io/unreachable:NoExecute。
显然这2个污点是k8s监听到该节点异常才打上去的,接下来看看节点为何异常:
1、资源。通过查看节点资源使用情况一切正常(后面运维同事说节点有重启过)
2、kubelet服务情况,通过日志追踪命令:
sudo journalctl -f -u kubelet
可以看到kubelet服务的日志,定时就会刷一遍,因为一直看最新的日志,刚开始没觉得什么,后面感觉前面的日志有其他颜色,就翻回去看,发现抱错信息:failed to run Kubelet: running with swap on is not supported, pleaset --fail-swap-on flag to false
确定问题:可以确定原因是kubelet服务不正常,导致跟集群通信异常,所以k8s把节点状态变成NotReady
解决问题:
#关闭Swap
sudo swapoff -a
sudo sed -i 's/.*swap.*/#&/' /etc/fstab
#重启配置,重启docker,重启kubelet
sudo systemctl daemon-reload && systemctl restart docker && systemctl restart kubelet.service
参考:kubernetes节点断电重启 - haoprogrammer - 博客园



