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
至此互通