记一次k8s线上容器网络问题
记一次k8s线上容器网络问题,最后排查出是容器间跨主机访问不通,重启所有POD解析,但是具体原因没查到,希望大神能帮助解答!
·
现象
线上突然报出系统页面无法访问
初步排查
- 查看集群是否正常
kubectl get nodes
# 结果集群正常
- 查看服务是否正常
kubectl get pod -n xxx|grep 'your pod'
进入容器看服务是否可以curl通
kubectl exec -it -n xxx xxx -- /bin/bash
curl -v localhost:xxx
#可以正常访问
定位为网络问题,继续排查
首先,物理节点可以正常互相ping通。
查看物理节点防火墙等配置:
systemctl status firewalld
# 已关闭
故问题可以确认在容器网络。
找运维同学排查
网络组件我们这使用的flannel,但是重启相关组件仍无法解决问题。
使用route等命令查看默认路由,没有改动。
检查容器间跨宿主机是否正常访问:
kubectl get pods -n xxx -owide
# 得到两个不同节点上的pod,其中一个容器需要有curl命令
# 进入那个pod,使用curl -v ip:port,测试是否能正常访问另一个物理节点上的pod
结论:不行,但是同一个宿主机下的pod是可以正常访问的。
至此基本了解到是容器间跨宿主机无法正常访问,但是由于我们会定时清理容器日志,现场都丢失了,故未能找到具体问题。经运维同学搜索解决方案,发现pod重启后即可恢复,故最后通过重启所有pod解决。
后记
最后还是未能找到具体问题,运维同学说这种情况一种可能是宿主机默认路由配置有误,但是route命令未发现明显问题。最后是硬通过重启所有pod恢复的。本人水平有限,对于容器网络这块不是很懂,这里也希望有大神可以在评论中指点下,多谢~
更多推荐
已为社区贡献2条内容
所有评论(0)