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

702 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

背景

基于阿里云自己手动搭建了几次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

节点一

节点二

ifconfig配置

路由表:

iptables规则

大致现象

1、宿主机之间网络是通的

2、宿主机可以 ping 通部署在宿主机上的pod ,去ping 部署在其他宿主机pod ip 不通

问题结论:

在排查过程中:

  • flannel.1网段设置正确 ifconfig。
  • route -n路由表配置正确
  • iptable -L -N查看 没有相关Deny
  • FDB都正常

最终定位到是阿里云服务器企业安全组配置的问题,在传输层就进行了拦截,导致发出去的包没有回来被deny了 。

总结

在使用云厂商的机器如阿里云,还会有一层企业安全组,当开启企业安全组,k8s内部的网络会受到企业安全组的影响,需要特别注意这个问题