主流容器跨主机网络方案
- Weave
- Calico
- OpenvSwitch
- Flannel
Flannel是CoreOS维护的一个网络组件,在每个主机上运行守护
进程负责维护本地路由转发,Flannel使用ETCD来存储容器网络
与主机之前的关系
本例子主要使用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
########################可以用在文件统一修改哟,如下图所示
第二步:安装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"
第三步:向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会把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
通过ps -ef |grep docker查看
设置IPtable
shell>iptable -P FORWARD ACCEPT
最后重启flanneld和docker
shell>systemctl restrat fanneld
shell>systemctl restart docker