1、前言
Docker默认的网络环境下,单台主机上的Docker容器可以通过docker0网桥直接通信,而不同主机上的Docker容器之间只能通过在主机上做端口映射进行通信。这种端口映射方式对很多集群应用来说很不方便,如果能让处于不同宿主机上的Docker容器之间直接使用自己的IP地址进行通信,会解决很多问题。
2、环境准备
准备2台服务器,在VMware中安装CentOS,网络适配器选择“桥接模式”
设置网络的IP Address、Netmask和Gateway
也可以等安装完成后再修改IP地址
文件 |
手动配置 |
/etc/sysconfig/network-scripts/ifcfg-ens33 |
IPADDR=192.168.1.17 GATEWAY=192.168.1.1 NETMASK=255.255.255.0 |
/etc/resolv.conf |
nameserver 202.96.128.86 nameserver 202.96.134.33 |
安装完成后,有2台服务器192.168.1.17和192.168.1.18。
服务器 |
安装的应用 |
192.168.1.17 |
etcd, flannel, docker |
192.168.1.18 |
flannel, docker |
3、192.168.1.17的配置
3.1 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
3.2 安装etcd
yum install etcd -y
#修改配置文件
vim /etc/etcd/etcd.conf
配置文件中修改的内容
ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"
改为
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
改为
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
启动etcd
#启动etcd
systemctl start etcd.service
#设置开机运行etcd
systemctl enable etcd.service
查看etcd的启动状态
[root@localhost ~]# ps -ef | grep etcd
etcd 1758 1 1 02:55 ? 00:00:03 /usr/bin/etcd --name=default --data-dir=/var/lib/etcd/default.etcd --listen-client-urls=http://0.0.0.0:2379
[root@localhost ~]# netstat -tunlp | grep etcd
tcp 0 0 127.0.0.1:2380 0.0.0.0:* LISTEN 1758/etcd
tcp6 0 0 :::2379 :::* LISTEN 1758/etcd
配置etcd网络
[root@localhost ~]# etcdctl mk /atomic.io/network/config '{ "Network": "10.28.0.0/16" }'
{ "Network": "10.28.0.0/16" }
#如果需要更换网段,可以先删除rm,再配置mk新的网段
etcdctl rm /atomic.io/network/config
3.3 安装flannel
yum install flannel -y
# 修改配置文件
vim /etc/sysconfig/fl