跨主机网络:实现Docker容器多主机通信
Flannel是CoreOS维护的一个网络组件,在每个主机上运行守护 进程负责维护本地路由转发,Flannel使用ETCD来存储容器网络 与主机之前的关系。
其他主流容器跨主机网络方案:
• Weave
• Calico
• OpenvSwitch

1、etcd安装并配置(任意找一台节点安装即可)
yum -y install etcd vim /etc/etcd/etcd.conf ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_CLIENT_URLS="http://192.168.0.11:2379" ETCD_NAME="default" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.0.11:2379" systemctl start etcd systemctl enable etcd ss -anpt |grep 2379
|
2、flanneld安装并配置(两台跨主机的docker主机安装)
yum -y install flannel vim /etc/sysconfig/flanneld FLANNEL_ETCD_ENDPOINTS="http://192.168.0.11:2379" FLANNEL_ETCD_PREFIX="/atomic.io/network"
|
3、向etcd写入子网启动并flanneld服务
etcdctl --endpoints="http://192.168.0.11:2379" set /atomic.io/network/config '{ "Network":"172.17.0.0/16", "Backend": {"Type": "vxlan"}} ' etcdctl --endpoints="http://192.168.0.11:2379" get /atomic.io/network/config systemctl start flanneld.service systemctl enable flanneld.service
|
4、配置Docker使用flannel生成的网络信息 (两台跨主机的docker主机配置)
vim /usr/lib/systemd/system/docker.service EnvironmentFile=/var/run/flannel/docker ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock $DOCKER_NETWORK_OPTIONS systemctl daemon-reload systemctl restart docker ps -ef |grep docker
|
5.两台跨主机的docker主机设置iptable转发策略为允许并重启服务(按顺序启动)
iptables -P FORWARD ACCEPT systemctl restart flanneld.service systemctl restart docker.service
|
6、在两台主机创建容器相互ping验证
docker run -it busybox sh ifconfig
|
防火墙学习:
https://www.cnblogs.com/shijiaqi1066/p/3812510.html
http://www.zsythink.net/archives/1199