环境: centos 7.6.1810 内核 3.10.0-957.10.1.el7.x86_64
192.168.0.206 docker-ce-18.09.4 etcd 3.3.11 flanneld 0.7.1
192.168.0.207 docker-ce-18.09.4 etcd 3.3.11 flanneld 0.7.1
192.168.0.208 docker-ce-18.09.4 etcd 3.3.11 flanneld 0.7.1
备注:这些环境都是采用yum 安装的
192.168.0.207 上的配置 (node1)
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS=“http://0.0.0.0:2380”
ETCD_LISTEN_CLIENT_URLS=“http://0.0.0.0:2379,http://0.0.0.0:4001”
ETCD_NAME=“node1”
ETCD_INITIAL_ADVERTISE_PEER_URLS=“http://192.168.0.207:2380”
ETCD_ADVERTISE_CLIENT_URLS=“http://192.168.0.207:2379,http://192.168.0.207:4001”
ETCD_INITIAL_CLUSTER=“master=http://192.168.0.206:2380,node1=http://192.168.0.207:2380,node2=http://192.168.0.208:2380”
ETCD_INITIAL_CLUSTER_TOKEN=“etcd-cluster”
ETCD_INITIAL_CLUSTER_STATE=“new”
192.168.0.208上的配置 (node2)
#vim /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS=“http://0.0.0.0:2380”
ETCD_LISTEN_CLIENT_URLS=“http://0.0.0.0:2379,http://0.0.0.0:4001”
ETCD_NAME=“node2”
ETCD_INITIAL_ADVERTISE_PEER_URLS=“http://192.168.0.208:2380”
ETCD_ADVERTISE_CLIENT_URLS=“http://192.168.0.208:2379,http://192.168.0.208:4001”
ETCD_INITIAL_CLUSTER=“master=http://192.168.0.206:2380,node1=http://192.168.0.207:2380,node2=http://192.168.0.208:2380”
ETCD_INITIAL_CLUSTER_TOKEN=“etcd-cluster”
ETCD_INITIAL_CLUSTER_STATE=“new”
启动etcd并设置开机自启
#systemctl start etcd
#systemctl enable etcd
将flanneld 的网络配置写入到etcd中
#etcdctl mk /atomic.io/network/config '{ "Network": "10.10.0.0/16","SubnetLen": 24,"Backend": {"Type": "vxlan"} }'
注释:每台主机分配到的flanneld网络是10.10.0.0/16 宿主机中docker容器分配到的网络是10.10.*.*/24 (10.10.*.* 代表宿主机分配到的flannel ip) 采用vxlan 的Backend flanneld 有两种Backend一种是vxlan另一种是host-gw
查看一下etcd写入情况(etcd节点查看一下)
# etcdctl get /atomic.io/network/config
{ "Network": "10.10.0.0/16","SubnetLen": 24,"Backend": {"Type": "vxlan"} }
2. 安装flanneld
#yum -y install flanneld
配置flanneld将etcd配置进去
#vim /etc/etcd/etcd.conf
FLANNEL_ETCD_ENDPOINTS="http://192.168.0.206:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network" (该key 是默认的,所以在配置etcd的时候用了这个key)
启动flanneld并设置开机自启
#systemctl start flanneld
#systemctl enable flanneld
3.docker的安装
注释:docker的安装就不写了,另外一篇已经写好了,这里我使用yum -y install docker 安装了最新版本的docker
先查看一下flanneld分配的信息
#cat /run/flannel/subnet.env
FLANNEL_NETWORK=10.10.0.0/16
FLANNEL_SUBNET=10.10.84.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=false
修改docker启动文件
#vim /usr/lib/systemd/system/docker.service
添加--bip 和--mtu 信息 这两个信息要和上面获取到的subnet.env相同 我这里还添加了-H tcp://0.0.0.0:2376
[Service]
...
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H fd:// --containerd=/run/containerd/containerd.sock --bip=10.10.84.1/24 --mtu=1450
...
重新加载daemon 启动docker并且设置开机自启
# systemctl daemon-reload
#systemctl start docker
#systemctl enable docker
清空防火墙 (不清空防火墙的话跨主机容器不能通讯)
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
验证:
192.168.0.206上创建容器
#docker run -dit --name centos centos /bin/bash
#docker inspect centos|grep IPAddress
SecondaryIPAddresses": null,
"IPAddress": "10.10.84.2",
"IPAddress": "10.10.84.2"
192.168.0.207 上创建容器
#docker run -dit --name centos1 centos /bin/bash
#docker exec -it centos1 /bin/bash
验证跨主机通讯
[root@ae331856624a /]#ping 10.10.84.2
PING 10.10.84.2 (10.10.84.2) 56(84) bytes of data.
64 bytes from 10.10.84.2: icmp_seq=1 ttl=62 time=0.864 ms
64 bytes from 10.10.84.2: icmp_seq=2 ttl=62 time=0.166 ms
64 bytes from 10.10.84.2: icmp_seq=3 ttl=62 time=0.166 ms
验证连通外网
[root@ae331856624a /]# ping www.baidu.com
PING www.a.shifen.com (115.239.211.112) 56(84) bytes of data.
64 bytes from 115.239.211.112 (115.239.211.112): icmp_seq=2 ttl=54 time=3.61 ms
64 bytes from 115.239.211.112 (115.239.211.112): icmp_seq=3 ttl=54 time=3.55 ms
64 bytes from 115.239.211.112 (115.239.211.112): icmp_seq=4 ttl=54 time=3.43 ms
实验结束!!!!!! 谢谢