Centos 安装 flannel 实现 docker 网络互通

环境 

192.168.26.128        etcd        flannel

192.168.26.130        flannel

一、192.168.26.128

1、安装 etcd

yum install -y etcd
# vim /etc/etcd/etcd.conf

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.26.128:2379"

2、启动 

systemctl enable etcd
systemctl start etcd

3、安装 flannel

yum install flannel
# vim /etc/sysconfig/flanneld

FLANNEL_ETCD_ENDPOINTS="http://192.168.26.128:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"

4、配置 docker 容器的 IP地址, Flannel 使用Etcd进行配置,来保证多个Flannel实例之间的配置一致性,所以需要在etcd上进行如下配置

etcdctl mk /atomic.io/network/config '{ "Network": "172.19.0.0/16" }'

5、启动 flannel

启动 flanneld 后,会有一张 flannel0 网卡产生:而且还生成了配置文件 /run/flannel/subnet.env,此网卡的地址就是使用 etcdctl mk 定义的网段地址。

这样则会生成/run/flannel/docker文件, 在这个文件中一般会给docker提供一个设定参数

DOCKER_NETWORK_OPTIONS,DOCKER_NETWORK_OPTIONS中会包含如下设定信息:

--bip
--ip-masq
--mtu
而在docker的systemd的service中,只需要将DOCKER_NETWORK_OPTIONS传递给dockerd即可。

systemctl enable flanneld
systemctl start flanneld

 7、重启 docker 生效

systemctl restart docker

查看 flannel etcd 进程

[root@kvm128 ~]# ps -ef|grep flannel
root       7046      1  0 21:22 ?        00:00:00 /usr/bin/flanneld -etcd-endpoints=http://192.168.26.128:2379 -etcd-prefix=/atomic.io/network
root       8199   7325  0 21:58 pts/0    00:00:00 grep --color=auto flannel


[root@kvm128 ~]# ps -ef | grep etcd
etcd       6556      1  1 21:22 ?        00:00:24 /usr/bin/etcd --name=default --data-dir=/var/lib/etcd/default.etcd --listen-client-urls=http://0.0.0.0:2379
root       7046      1  0 21:22 ?        00:00:00 /usr/bin/flanneld -etcd-endpoints=http://192.168.26.128:2379 -etcd-prefix=/atomic.io/network
root       8201   7325  0 21:59 pts/0    00:00:00 grep --color=auto etcd

查看 网络

[root@kvm128 ~]# etcdctl ls /atomic.io/network/subnets
/atomic.io/network/subnets/172.19.10.0-24

二、192.168.26.130

1、安装 flannel 

yum install flannel

2、配置 

# vim /etc/sysconfig/flanneld

FLANNEL_ETCD_ENDPOINTS="http://192.168.26.128:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"

3、启动 flannel 

systemctl enable flanneld
systemctl start flanneld

4、重启 docker 生效 

systemctl restart docker

三、docker 使用 flannel 网络,2台机器 都要操作

1、修改 docker 启动参数 

vim /lib/systemd/system/docker.service

# 修改
EnvironmentFile=-/run/flannel/docker     # 增加
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS -H fd:// --containerd=/run/containerd/containerd.sock   # 增加 $DOCKER_OPTS
[root@kvm128 ~]# systemctl daemon-reload
[root@kvm128 ~]# systemctl restart docker

2、docker 与 flannel 在同一个网段表示成功 

# ifconfig docker0 && ifconfig flannel0

docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1472
        inet 172.19.1.1  netmask 255.255.255.0  broadcast 172.23.1.255
        inet6 fe80::42:97ff:fe17:1faa  prefixlen 64  scopeid 0x20<link>
        ether 02:42:97:17:1f:aa  txqueuelen 0  (Ethernet)
        RX packets 10  bytes 616 (616.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18  bytes 1412 (1.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1472
        inet 172.19.1.0  netmask 255.255.0.0  destination 172.23.1.0
        inet6 fe80::9f1b:8717:3135:ca0a  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 18  bytes 1512 (1.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9  bytes 648 (648.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

3、查看 docker 进程

[root@kvm128 ~]# ps -ef | grep docker
root      16678      1  0 21:00 ?        00:00:00 /usr/bin/dockerd --bip=172.19.1.1/24 --ip-masq=true --mtu=1472 -H fd:// --containerd=/run/containerd/containerd.sock

 四、测试 2 台机器分别创建一个容器

docker run -it --name busybox -d busybox
docker exec -it busybox /bin/sh
# 192.168.26.130

[root@kvm130 ~]# docker exec -it busybox /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:13:57:02  
          inet addr:172.19.87.2  Bcast:172.19.87.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1472  Metric:1
          RX packets:25 errors:0 dropped:0 overruns:0 frame:0
          TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1970 (1.9 KiB)  TX bytes:1638 (1.5 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


# 192.168.26.128

[root@kvm128 ~]# docker exec -it busybox /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:13:5E:02  
          inet addr:172.19.94.2  Bcast:172.19.94.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1472  Metric:1
          RX packets:25 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1970 (1.9 KiB)  TX bytes:658 (658.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

测试 docker 容器 是否互通 

/ # ping 172.19.94.2
PING 172.19.94.2 (172.19.94.2): 56 data bytes
64 bytes from 172.19.94.2: seq=0 ttl=60 time=0.579 ms
64 bytes from 172.19.94.2: seq=1 ttl=60 time=1.001 ms
64 bytes from 172.19.94.2: seq=2 ttl=60 time=1.101 ms

^C
--- 172.19.94.2 ping statistics ---
13 packets transmitted, 13 packets received, 0% packet loss
round-trip min/avg/max = 0.579/1.083/1.460 ms
/ # ping 172.19.87.2
PING 172.19.87.2 (172.19.87.2): 56 data bytes
64 bytes from 172.19.87.2: seq=0 ttl=60 time=1.018 ms
64 bytes from 172.19.87.2: seq=1 ttl=60 time=1.126 ms
64 bytes from 172.19.87.2: seq=2 ttl=60 time=1.983 ms
64 bytes from 172.19.87.2: seq=3 ttl=60 time=2.035 ms
^C
--- 172.19.87.2 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 1.018/1.540/2.035 ms
# 如果不通,执行
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值