为了解决跨minion之间pod的通信问题,我们在每个minion上安装open vswtich,并使用gre或者vxlan使得跨机器之间pod能相互通信,本文使用gre,而vxlan通常用在需要隔离的大规模网络中。对于open vswitch的具体安装步骤,可参考这篇博客,我们在这里就不再详细介绍安装步骤了。安装完open vswitch后,接下来便建立minion1和minion2之间的隧道。首先在minion1和minion2上建立ovs bridge,
[root@minion1 ~]# ovs-vsctl add-br obr0
接下来建立gre,并将新建的gre0添加到obr0,在minion1上执行如下命令,
[root@minion1 ~]# ovs-vsctl add-port obr0 gre0 -- set interface gre0 type=gre options:remote_ip=192.168.230.5
在minion2上执行,
[root@minion2 ~]# ovs-vsctl add-port obr0 gre0 -- set interface gre0 type=gre options:remote_ip=192.168.230.4
至此,minion1和minion2之间的隧道已经建立。然后我们在minion1和minion2上创建linux网桥kbr0替代docker默认的docker0(我们假设minion1和minion2都已安装docker),设置minion1的kbr0的地址为172.17.1.1/24, minion2的kbr0的地址为172.17.2.1/24,并添加obr0为kbr0的接口,以下命令在minion1和minion2上执行。
[root@minion1 ~]# brctl addbr kbr0 //创建linux bridge
[root@minion1 ~]# brctl addif kbr0 obr0 //添加obr0为kbr0的接口
[root@minion1 ~]# ip link set dev docker0 down //设置docker0为down状态
[root@minion1 ~]# ip link del dev docker0 //删除docker0
为了使新建的kbr0在每次系统重启后任然有效,我们在/etc/sysconfig/network-scripts/目录下新建minion1的ifcfg-kbr0如下:
device=kbr0
onboot=yes
bootproto=static
ipaddr=172.17.1.1
netmask=255.255.255.0
gateway=172.17.1.0
userctl=no
type=bridge
ipv6init=no
同样在minion2上新建ifcfg-kbr0,只需修改ipaddr为172.17.2.1和gateway为172.17.2.0即可,然后执行systemctl restart network重启系统网络服务,你能在minion1和minion2上发现kbr0都设置了相应的ip地址。为了验证我们创建的隧道是否能通信,我们在minion1和minion2上相互ping对方kbr0的ip地址,从下面的结果发现是不通的,经查找这是因为在minion1和minion2上缺少访问172.17.1.1和172.17.2.1的路由,因此我们需要添加路由保证彼此之间能通信。
[root@minion1 network-scripts]# ping 172.17.2.1
ping 172.17.2.1 (172.17.2.1) 56(84) bytes of data.
^c
--- 172.17.2.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms
[root@minion2 ~]# ping 172.17.1.1
ping 172.17.1.1 (172.17.1.1) 56(84) bytes of data.
^c
--- 172.17.1.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms
由于通过ip route add添加的路由会在下次系统重启后失效,为此我们在/etc/sysconfig/network-scripts目录下新建一个文件route-eth0存储路由,这里需要注意的是route-eth0和ifcfg-eth0的黑体部分必须保持一致,否则不能工作,这样添加的路由在下次重启后不会失效。为了保证两台minion的kbr0能相互通信,我们在minion1的route-eth0里添加路由172.17.2.0/24 via 192.168.230.5 dev eno16777736,eno16777736是minion1的网卡,同样在minion2的route-eth0里添加路由172.17.1.0/24 via 192.168.230.4 dev eno16777736。重启网络服务后再次验证,彼此kbr0的地址可以ping通,如:
[root@minion2 network-scripts]# ping 172.17.1.1
ping 172.17.1.1 (172.17.1.1) 56(84) bytes of data.
64 bytes from 172.17.1.1: icmp_seq=1 ttl=64 time=2.49 ms
64 bytes from 172.17.1.1: icmp_seq=2 ttl=64 time=0.512 ms
^c
--- 172.17.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.512/1.505/2.498/0.993 ms
用户登录
还没有账号?立即注册
用户注册
投稿取消
| 文章分类: |
|
还能输入300字
上传中....
董太师丶