docker系列之(九)Docker容器多主机通信

主流容器跨主机网络方案

  • Weave
  • Calico
  • OpenvSwitch
  • Flannel

Flannel是CoreOS维护的一个网络组件,在每个主机上运行守护
进程负责维护本地路由转发,Flannel使用ETCD来存储容器网络
与主机之前的关系

docker、技术与框架、新兴技术能力docker系列之(九)Docker容器多主机通信插图

本例子主要使用Flannel

第一步:安装etcd并配置(找一台主机)

shll>yum install etcd -y
shll>vi /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://192.168.8.31:2379"
ETCD_NAME="default"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.8.31:2379"
shll>systemctl start etcd
shll>systemctl enable etcd
########################可以用在文件统一修改哟,如下图所示
docker、技术与框架、新兴技术能力docker系列之(九)Docker容器多主机通信插图1

第二步:安装flanneld和配置

shll>yum install flannel -y
shll>vi /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://192.168.31.73:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"
docker、技术与框架、新兴技术能力docker系列之(九)Docker容器多主机通信插图2
此时无法启动【systemctl strat flannel】

第三步:向etcd写入子网

shell>etcdctl --endpoints="http://192.168.8.31:2379" set /atomic.io/network/config '{ "Network":"172.17.0.0/16", "Backend": {"Type":"vxlan"}}'
shell>etcdctl --endpoints="http://192.168.8.31:2379" get  /atomic.io/network/config 
docker、技术与框架、新兴技术能力docker系列之(九)Docker容器多主机通信插图3
配置后能正常启动flanneld
#############docker会把IP分配的写到这次
shell>cat /var/run/flannel/docker

第四步:配置Docker使用flannel生成的网络信息

shell>vi /usr/lib/systemd/system/docker.service
EnvironmentFile=/run/flannel/docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
$DOCKER_NETWORK_OPTIONS
docker、技术与框架、新兴技术能力docker系列之(九)Docker容器多主机通信插图4

通过ps -ef |grep docker查看

docker、技术与框架、新兴技术能力docker系列之(九)Docker容器多主机通信插图5

设置IPtable

shell>iptable -P FORWARD ACCEPT

最后重启flanneld和docker

shell>systemctl restrat fanneld
shell>systemctl restart docker