故障症状
网关监控出现连接数突增突降的情况,监控显示网关丢弃了某些SNAT连接,K8S中某些应用调用第三方接口偶尔会失败,不稳定(已知第三方平台稳定提供服务)
分析过程
1、分析网关SNAT连接被哪个K8S节点占用
2、登陆K8S节点,查看节点连接数
3、docker top containerID 查看节点上所有的容器的PID
4、获取每个进程的连接数,通过进程判断链接是哪个容器产生的,从而定位到具体的Pod
分析网关SNAT连接被哪个节点占用
- 这一步一般可以通过监控直接分析出来
- 监控显示连接数每半个小时突增一次,突增的连接数大概是2-3W连接,持续2-3分钟后恢复
- 通过监控查看哪些主机和网关建立的连接数最多,然后登陆节点
登陆节点查看连接数
netstat -anptu | grep -i es | wc -l
查看节点连接,发现输出的结果只有几百个连接- 注意了,netstat看不到容器的连接
获取容器PID
# 获取除了pause外的所有容器在主机上的PID
docker ps | grep -v pause | awk '{print $1}' | xargs -i docker top {}
# 根据PID获取每个容器的连接数
- 查看每个进程打开的文件描述符情况(这里只是假设查看2380548这个PID打开的文件描述符情况,假设这个进程显示了大量的TCP连接)
`lsof -p 2380548`
- lsof 看到大量type为sock和name为TCP的连接(这是因为看到的进程lsof在其他网络命名空间中运行,通常在容器(Docker、LXC、LXD ...)中,因此lsof无法访问相关信息,也不会显示它,只会显示一个TCP)
文章评论
666