天天看點

k8s的CNI網絡插件-flannel

k8s設計了網絡模型,但是把實作交給了網絡插件,而CNI網絡插件實作的最主要的功能就是POD跨主控端資源互相通路

flannel安裝:

hdss7-21和hdss7-22 兩個幾點操作:

拷貝證書:

編輯配置檔案和啟動腳本

[root@hdss7-21

建立log目錄:

在etcd中建立配置,聲明flannel使用的網絡模型:

etcd]# ./etcdctl set /coreos.com/netwo

配置supervisior配置檔案并重載配置:

此時你可以跨節點ping通pod位址了

檢視路由規則可以看到,flannel幫我們添加了靜态路由,實際上,在flannel的host-gw網絡模型中,flannel僅僅隻是幫我們在每一台主控端上做了這樣一件事情而已,是以他的效率也是非常高的,但是host-gw網絡模型,僅支援我們的主控端在同一個2層網絡下(即主控端的網關指向同一位址),如果不通的2層網絡打通的話就需要用到Vxlan模型的網絡了:

flannel三種網絡模型設定如下:

主控端在同一網絡

'{"Network": "172.7.0.0/16", "Backend": {"Type": "host-gw"}}'

不在同一網絡

'{"Network": "172.7.0.0/16", "Backend": {"Type": "VxLAN"}}'

由flannel來判斷主控端是否在同一2層網絡下,直接路由模型

'{"Network": "172.7.0.0/16", "Backend": {"Type": "VxLAN","Directrouting": true}}'

flannel的SNAT規則優化:

預設情況下,我們的跨主控端pod之前容器的互相通信,會經過iptables的原位址轉換,這就導緻一個問題,我們在相同的二層網絡下,POD之前互相通信,卻不知道到底是哪一個pod來通路我的,可想而知,也不利于問題的排查

安裝iptables-services

删除snat規則,重新添加:

儲存iptables規則:

繼續閱讀