k8s基于flannel VXLAN模式网络无法跨主机ping通其他节点上pod

背景

基于阿里云自己手动搭建了几次k8s集群,采用flannel VXLAN 构建的Overlay覆盖网络, (关闭了安全组,route路由表设置正常 iptables规则都开启Accept ,主机上ip_forward功能正常开启)均出现k8s跨节点 pod网络不通,k8s集群中宿主机无法ping通跨主机的pod id。
备注:(网络上也有类似问题,大多数是通过iptables转发是不是有限制之类的解决,不生效)

两台节点k8s集群:

宿主机ip地址为:
10.136.1.251 flannel 分配ip 网段为10.244.0.0/24
10.136.1.252 flannel 分配ip 网段为 10.244.1.0 /24

大致现象

1、宿主机之间网络是通的
k8s基于flannel VXLAN模式网络无法跨主机ping通其他节点上pod

k8s基于flannel VXLAN模式网络无法跨主机ping通其他节点上pod
2、宿主机可以 ping 通部署在当前主机上的pod ,去ping 部署在其他宿主机pod ip 不通

k8s基于flannel VXLAN模式网络无法跨主机ping通其他节点上pod

问题排查

  • ifconfig配置 是否有问题

节点一

k8s基于flannel VXLAN模式网络无法跨主机ping通其他节点上pod

节点二

ifconfig配置

k8s基于flannel VXLAN模式网络无法跨主机ping通其他节点上pod

网段配置基本是正常的,cni0、flannel.1 、eth0 网络设备正常启动 ,都已经分配了正常的ip 子网这块也都配置正常。

  • 查看宿主机路由是否正常

    节点一路由表:

k8s基于flannel VXLAN模式网络无法跨主机ping通其他节点上pod
节点二路由表:
k8s基于flannel VXLAN模式网络无法跨主机ping通其他节点上pod

flannel路由配置正常

  • iptables规则是否配置正常

节点一:
k8s基于flannel VXLAN模式网络无法跨主机ping通其他节点上pod

节点二:

k8s基于flannel VXLAN模式网络无法跨主机ping通其他节点上pod

iptable 规则配置没问题,基本都是accept

  • 网络抓包

使用tcpdump 分别抓去flannel.1、eth0 网卡,发现数据包从eth0出去后 没有响应 对应节点并没有收到包

问题结论:

在排查过程中:

  • flannel.1网段设置正确 ifconfig。
  • route -n路由表配置正确
  • iptable -L -N查看 没有相关Deny
  • FDB都正常
    使用tcpdump 分别抓去flannel.1、eth0 网卡,发现数据包从eth0出去后 没有响应 对应节点并没有收到包

,因此预计到是云服务厂商安全组设置的问题,在传输层被拦截了,最终定位到是阿里云服务器企业安全组配置的问题,在传输层就进行了拦截,导致发出去的包没有回来被deny了 ,因此这块去开启安全组就解决了问题。

附录,这次排查问题积累了不少k8s网络经验,有相关问题的朋友可以留言咨询,大家一起讨论

上一篇:移动和桌面端OAuth2.0安全分析和CodeVerifier机制


下一篇:GO起步从-hello world开始 go基础知识