kubernetes跨网段pod网络不通问题

kubernetes跨网段问题

k8s的master是10.10.10.0网段,新加了一些node,网段是172.16.100.0网段,形成容器直接网络不能相互访问。html

部署k8s的时候也部署了flannel,它提供容器的跨主机通讯支持的。部署参考flannel中vxlan原理参考node

二个网段不能互通,首先想到的被防火墙禁止了;尝试清理iptables防火墙,结果仍是不行。iptables -P OUTPUT ACCEPT && iptables -P FORWARD ACCEPT && iptables -F && IPtables -L -n 必定要注意下清理防火墙必定要iptables -P OUTPUT ACCEPT,不然连不上就悲剧了。python

而后查了etcd的Pod网段信息。发现了问题。解决以下:linux

> etcdctl ls -r 		#列出键值存储的目录
> etcdctl get /flannel/network/config		#查看键值存储
{"Network":"10.233.0.0/16","SubnetLen":25,"Backend":{"Type":"host-gw","VNI":1}}		#host-gw介绍以下

在数据层面,flannel支持基于路由的互联方案如host-gw、AliVPC、AWS VPC、GCE和基于封装的路由方案如UDP封装、vxlan封装、IPIP和IPSec等docker

一、host-gw 模式经过创建主机IP到主机上对应flannel子网的mapping,以直接路由的方式联通flannel的各个子网。这种互联方式没有vxlan等封装方式带来的负担,经过路由机制,实现flannel网络数据包在主机之间的转发。可是这种方式也有不足,那就是全部节点之间都要相互有点对点的路由覆盖,而且全部加入flannel网络的主机须要在同一个LAN里面网络

二、VXLAN 是一个在已有的3层物理网络上构建2层逻辑网络的协议。参考了以下资料。app

> etcdctl set /flannel/network/config '{"Network":"10.233.0.0/16","SubnetLen":25,"Backend":{"Type":"vxlan","VNI":1}}'	#修改为vxlan

> route		# 重启flannel后 查看路由
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    300    0        0 bond0
10.233.20.128   0.0.0.0         255.255.255.128 U     0      0        0 docker0
10.233.21.0     10.233.21.0     255.255.255.128 UG    0      0        0 flannel.1
10.233.27.0     10.233.27.0     255.255.255.128 UG    0      0        0 flannel.1
相关文章
相关标签/搜索