1.直接路由
通過在每個Node上添加到其他Node上docker0的靜態路由規則,就可以將不同物理機的docker0網橋互聯互通。
只需在每個Node的路由表中增加到對方docker0的靜態路由轉發規則。
如:pod1 所在docker0網橋的IP子網事10.1.10.0,Node地址爲192.168.1.51,;而pod2所在docker0網橋的ip子網事10.1.20.0,Node地址爲192.168.1.52;
在Node1上用route add 命令增加一條到Node2上docker0靜態路由規則;
route add -net 10.1.20.0 netmask 255.255.255.0 gw 192.168.1.52
同樣在node2上增加一條到Node1上docker0的靜態路由規則
route add -net 10.1.10.0 netmask 255.255.255.0 gw 192.168.1.51
在Node1 上通過ping命令驗證到Node2 上docker0的網絡連通性。這裏10.1.20.1位Node2上docker0網橋自身IP地址
### node_01設置docker01
ifconfig docker0 10.1.10.1/24
### node_02設置docker01
ifconfig docker0 10.1.20.1/24
[root@node_01 ~]# ping 10.1.20.1
PING 10.1.20.1 (10.1.20.1) 56(84) bytes of data.
64 bytes from 10.1.20.1: icmp_seq=1 ttl=64 time=0.521 ms
如上轉發規則生效,Node1 可以直接訪問到Node2上的docker0網橋,也可訪問到屬於docker0網段的容器應用(如:mysql)
若,集羣中有很多服務器,需要在每臺服務器上添加到另外99臺服務器docker0的路由規則,可以使用Quagga軟件來實現路由規則的動態添加
安裝簡介:
https://blog.csdn.net/wanchaopeng/article/details/103419887
也可使用quaggz容器來運行,下載鏡像
在運行quagga容器之前,需要確保每個Node上docker0網橋的子網地址不能重疊,也不能與物理機所在網絡重疊,
每臺Node上啓動quagga容器,quagga容器需要以--privileges特權模式運行,並且制定--net=host,表示直接使用物理機的網絡
docker run -itd --name=router --privileged --net=host loggregator/router
啓動成功後,quagga會相互學習來完成到其他機器的docker0路由規則添加。
查看
route -n
至此互通