今天突然发现k8s的dashboard很卡,进到master节点,用top命令查看,发现如下信息:
- cpu使用率很高,主要是si(软中断)占用了80%
- iptables命令是占用cpu最高的
于是用iptables -L
命令查看iptables规则,发现提示另一个app锁住了iptables。
于是用iptables -L -w
命令等待一段时间后,发现疯狂刷iptables规则,于是得出结论:
有一个程序在一直往iptables里写东西
由于安装k8s集群的时候清空了iptables规则,也没有注意到底哪一步设置了iptables规则,所以毫无头绪,只好把k8s重新部署一遍(顺便升级到1.10.0)
重新部署后发现问题所在:
- 在node节点部署kubelet时,配置了systemd unit文件,里面有添加iptables规则,且设置了如果启动失败每5秒尝试重启一次。
- 于是当kubelet启动失败时,它就重启一次,然后加几条iptables规则,于是就一直写下去
- 我第一次部署的时候估计在master节点安装了kubelet,但是启动没有成功,当时也没在意,导致问题出现
- 重新部署后该问题解决