K8s集群某节点出现异常,新分配到node上面的pod不能ping通外部pod,同节点pod、宿主机IP也不行,外部pod也不可以ping通IP
首先对问题pod进行排查,发现他不能解析域名和svc,网路模式是IPVS的,集群内部可以ping通svc地址,我们中间件的pod来的,一开始怀疑是dns解析问题,查看了pod内部的dns解析文件内容
cat /etc/resolv.conf
IP地址和集群的dns地址一致,通过该节点其他pod对这个问题pod进行ping,发现还是不通,ping同节点其他pod是正常的,问题定位在这个pod上面,接着怀疑是svc未绑定问题,查看endpoint发现是绑定了pod的地址的,问题pod每次ping都是地址不可达,后将其切换至其他节点发现运行正常,也可以正常ping通其他pod,问题在节点上面,删建了一个deployment的pod,在该节点重新启动后故障现象和之前一样,问题现象明确:
1.问题节点旧pod是正常的,对外访问ping没问题
2.问题节点新建pod是异常的,网络模式像是none的,当时也去节点的docker inspect 容器 上面去查过这个容器的网络模式是host的和其他容器一致,ping不出去,也进不来,端口telnet也是一样
3.迁到其他节点没问题,问题在node上面
最终在网络上面发现IP出现问题,环境是云平台虚拟机,上面有2张网卡,一张是内网的,一张平台上的弹性地址,发现这个弹性地址不见了,查看网卡内容,该网卡是dhcp的,网卡状态UP,查看systemctl status NetworkManage,发现一直提示IPV4 DHCP timeout类型错误,查看路由表,发现全局路由默认是走这张网卡的,异常节点的路由表是没有全局路由的,0.0.0.0是不存在的,所以导致ping出去地址不可达,因为pod也是默认走这个网卡出去的,至此问题溯源成功,联系云平台进行虚机后台重启,启动后网卡正常,pod访问正常。(注:一定要云平台后台关机重启,测试过reboot启动后还是不行)
###这里没分析到为什么旧的pod是正常网络的,可以ping出去,也正是这个问题一开始干扰了问题排查思路,应该是calico网卡维护了一部分路由表信息吧??
文章描述了一个K8s集群中节点出现网络异常的问题,新部署的pod无法ping通外部及内部pod。经过排查,问题定位在节点的网络配置上,特别是IP和DHCP问题。云平台虚拟机的两张网卡中,弹性地址消失且DHCP超时,路由表缺少全局路由。通过云平台后台重启虚拟机恢复了网络正常。旧pod能正常工作可能是因为Calico维护了部分路由信息。
3929

被折叠的 条评论
为什么被折叠?



