天天看點

阿裡雲部署 flannel gw 模式,網絡不通

作者:雲技術趣談
阿裡雲部署 flannel gw 模式,網絡不通

flannel gw模式比vxlan 還要簡單,直接通過下發路由就可以實作網絡聯通,對比calico 使用bgp分發路由,flannel gw 則直接是通過etcd + flanneld 程序直接下發跨主機路由。

由于路由直連(沒有經過三層裝置),那麼flannel 的主控端必須在同一個網段,否則無法通信。

我們在IDC 裡面可以很容易實作,但如果在阿裡雲,一個VPC裡面是不是也可以輕松實作呢?沒那麼簡單。

我們嘗試在阿裡雲裡面直接部署flannel

'{ "Network": "10.244.0.0/16",
"Backend": {"Type": "vxlan", "DirectRouting": true
 }}'           

這裡使用了 DirectRouting ,相當于 hostgw模式,同網段優先走路由。此時嘗試ping 另一台ECS上的容器,發現網絡不通。

# ping 10.244.56.1
PING 10.244.56.1 (10.244.56.1) 56(84) bytes of data.

^C
--- 10.244.56.1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2056ms           

檢視路由,沒有問題,同網段直連。

阿裡雲部署 flannel gw 模式,網絡不通

問題的點在于,阿裡雲的vsw 并非是一個純交換機,它還有過濾功能,發現目标IP 和不是目标ECS的IP,而且沒有設定路由,vsw 就不會轉發,除非我們通過 “專有vpc –> 路由表 –> 自定義” 添加靜态路由才能通信。也就是将上面的路由,在vsw再配置一遍。

當然你可以選擇放棄 hostgw 模式,畢竟大部分場景下,并不需要那麼高的性能。可以将 DirectRouting設定成false 或者直接删掉。重新開機flanneld 後發現路由走到flannel.1 網卡了。

阿裡雲部署 flannel gw 模式,網絡不通

網絡也是可以聯通的

# ping 10.244.56.1
PING 10.244.56.1 (10.244.56.1) 56(84) bytes of data.
64 bytes from 10.244.56.1: icmp_seq=1 ttl=64 time=0.177 ms
64 bytes from 10.244.56.1: icmp_seq=2 ttl=64 time=0.165 ms
64 bytes from 10.244.56.1: icmp_seq=3 ttl=64 time=0.158 ms           

總結一下,兩種解決方案,第一是設定vsw靜态路由,第二是放棄 hostgw 模式。

繼續閱讀