问题表现
10.202.41.7节点上所有容器无法通过servername访问集群网络内的其他服务,只能通过clusterIp的方式访问其他服务。
排查过程
1.根据问题表现初步怀疑是dns的问题,因为服务名可以,虚拟ip不行,说明大概率是在服务名被解析为对应clusterIp时出现了问题。于是检查coredns的运行状态,发现全部是正常的,看日志也没有发现问题。
2.coredns没有问题,便通过k8s在问题节点上起一个容器(生产环境,该问题节点上的容器被驱逐了),进入该容器的网络命名空间,开始进行抓包。
在问题节点上进入容器网络命名空间:
docker inspect nginx | grep PId (nginx为容器名) 获取容器进程号
nsenter -t 12345 -n (12345为容器的进程号) 进入对应容器的网络命名空间
ip a 检查是否成功进入(是否与宿主机的返回结果不同)
开始抓包:
在容器的网络命名空间内执行tcpdump命令,抓取所有通过eth0网卡的流