运维知识库-BigHead
  • 首页
  • 电子书-知识库老版本
  • VIP视频免费看
  • 联系作者
  • 随笔
https://github.com/yongxiaodong
  1. 首页
  2. K8S
  3. 正文

一次K8S出口网关性能问题排查

2021年06月10日 1553点热度 3人点赞 1条评论

故障症状

网关监控出现连接数突增突降的情况,监控显示网关丢弃了某些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)

  • 我们再使用nscenter分析,就可以看到向外发起的具体连接情况了
    nsenter -t 2380548 --net lsof -n -p 2380548
标签: 暂无
最后更新:2022年11月04日

BigHead

保持饥渴的专注,追求最佳的品质

点赞
< 上一篇
下一篇 >

文章评论

  • 匿名

    666

    2021年10月12日
    回复
  • 取消回复
    文章归档
    • 2022年7月
    • 2021年6月
    • 2021年4月
    • 2021年3月
    • 2021年2月
    • 2020年8月
    • 2020年7月
    分类目录
    • ELK
    • Jenkins
    • K8S
    • Nginx
    • Openvpn
    • Python
    • 小技能
    • 未分类

    COPYRIGHT © 2020 运维知识库-BigHead. ALL RIGHTS RESERVED.

    蜀ICP备16012425号