网络环境:
docker需要开启防火墙
systemctl restart firewalld.service && systemctl enable firewalld.service
master 安装:
安装 etcd 及配置
[root@master ~]# yum install -y etcd
[root@master ~]# systemctl restart etcd
配置开机启动: [root@master ~]# systemctl enable etcd
配置etcd
[root@master ~]# vim /etc/etcd/etcd.conf
修改
ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
为
ETCD_LISTEN_CLIENT_URLS="http://192.168.10.11:2379,http://127.0.0.1:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.10.11:2379"
etcd 设置网段(这个网段将会分配给 flannel0 网卡):
[root@master ~]# etcdctl mk /atomic.io/network/config '{"Network":"172.20.0.0/16","SubnetMin":"172.20.1.0","SubnetMax":"172.20.254.0"}'
[root@master ~]# etcdctl get /atomic.io/network/config
[root@master ~]# etcdctl get /
/atomic.io/network/config #此文件对应/etc/sysconfig/flannel中的FLANNEL_ETCD_PREFIX
[root@master ~]# systemctl restart etcd #创建网段后,需要重启etcd,否则后面不能启动flannel
安装flannel
[root@master ~]# yum install -y flannel
配置flannel:
[root@master ~]# vim /etc/sysconfig/flanneld
启动flannel:
[root@master ~]# systemctl restart flanneld
#修改配置文件后,需要重新加载
systemctl daemon-reload
配置开机启动
[root@master ~]# systemctl enable flanneld
#日志查看
flanneld -alsologtostderr
我们查看网桥,看到了flannel0,而且ip的地址端是我们自己指定的172.20.0.0/16网段中的地址段172.20.75.0/24
而且还生成了配置文件/run/flannel/subnet.env和/run/flannel/docker存储了这个服务器端信息。
启动flanneld后,会有一张网卡产生:而且此网卡的地址就是使用etcdctl mk定义的网段地址。
–bip=172.20.75.1/24这个参数,它限制了所在节点容器获得的IP范围。
这个IP范围是由flannel自动分配的,由flannel通过保存在etcd服务中的记录确保它们不会重复
错误的解决办法:
Error: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:2379:connect: connection refused
参考:https://www.cnblogs.com/lkun/p/9486156.html
安装docker
此处不再赘述,可以直接参考此帖:https://blog.csdn.net/qq_39626154/article/details/82753412
启动docker
[root@master ~]# systemctl start docker
[root@master ~]# systemctl enable docker
查看docker0和flannel0的网段信息,发现目前还不在一个网段:
[root@master ~]# ifconfig docker0 && ifconfig flannel0
我们直接运行ps-ef|grep docker查看我们的网卡信息同docker压根没有关联上。
解决办法:在/usr/lib/systemd/system/docker.service中的[service]模块添加修改如下内容:
#set flannel info
EnvironmentFile=-/run/flannel/docker
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS
然后重启docker再次查看,发现docker0和flannel0在同一个网段了:
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker
[root@master ~]# ifconfig docker0 && ifconfig flannel0
查看docker进程,已经绑定上了bip的ip
slave安装:
安装flannel
[root@slave01 ~]# yum -y install flannel
配置flannel:
[root@slave01 ~]# vim /etc/sysconfig/flanneld
启动flannel:
[root@slave01 ~]# systemctl enable flanneld
[root@slave01 ~]# systemctl restart flanneld
如果启动flanneld停顿的时间比较久,并且有日志报错,那么可能是etcd服务器的防火墙问题
查看生成的配置文件:获取到了etcd配置网段的IP信息
同样给slave01主机上安装docker,查看docker0与flannel0网卡信息
查看flannel进程信息:
启动报如下错误,说明和etcd服务器的连接有问题:
解决办法:master主机etcd开启防火墙端口2379:firewall-cmd --add-port=2379/tcp
[root@master ~]# firewall-cmd --add-port=2379/tcp
success
同样修改docker的启动服务文件:/usr/lib/systemd/system/docker.service
启动docker:
查看docker进程和ip情况:
测试:在2台主机上分别运行centos容器
[root@master ~]# docker run -it --name host1.test centos /bin/bash
[root@slave01 ~]# docker run -it --name host2.test centos /bin/bash
ifconfig查看IP信息,可以看到两个容器都获取到相应的flannel0网卡下发的IP地址。
如果没有该命令需要执行安装命令:yum install net-tools -y
测试联通性:正常
先要放开两台主机访问的防火墙:
[root@master ~]# iptables -I INPUT -s 192.168.10.0/24 -j ACCEPT
[root@slave01 ~]# iptables -I INPUT -s 192.168.10.0/24 -j ACCEPT