kubernetes跨網段pod網絡不通問題


kubernetes跨網段問題

k8s的master是10.10.10.0網段,新加了一些node,網段是172.16.100.0網段,造成容器直接網絡不能相互訪問。

部署k8s的時候也部署了flannel,它提供容器的跨主機通信支持的。部署參考flannel中vxlan原理參考

二個網段不能互通,首先想到的被防火牆禁止了;嘗試清理iptables防火牆,結果還是不行。iptables -P OUTPUT ACCEPT && iptables -P FORWARD ACCEPT && iptables -F && IPtables -L -n 一定要注意下清理防火牆一定要iptables -P OUTPUT ACCEPT,否則連不上就悲劇了。

然后查了etcd的Pod網段信息。發現了問題。解決如下:

> 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等

1、host-gw 模式通過建立主機IP到主機上對應flannel子網的mapping,以直接路由的方式聯通flannel的各個子網。這種互聯方式沒有vxlan等封裝方式帶來的負擔,通過路由機制,實現flannel網絡數據包在主機之間的轉發。但是這種方式也有不足,那就是所有節點之間都要相互有點對點的路由覆蓋,並且所有加入flannel網絡的主機需要在同一個LAN里面

2、VXLAN 是一個在已有的3層物理網絡上構建2層邏輯網絡的協議。參考了如下資料。

> 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM