容器——搭建docker跨服务器通信的overlay网络
目录1、简介overlay:2、安装etcd与配置:(1)安装etcd:(2)修改etcd.conf文件:(3)操作etcd服务:① 启动:② 停止:③ 查看状态:④ 开机自启:⑤ 关闭开机自启:3、修改docker服务文件:4、重新加载服务配置文件:5、重启docker服务:6、创建一个docker的overlay网络:(1)查看docker网络列表:(2)创建一个docker的overlay网
目录
1、简介overlay:
Overlay网络是指在不改变现有网络基础设施的前提下,通过某种约定通信协议,把二层报文封装在IP报文之上的新的数据格式。这样不但能够充分利用成熟的IP路由协议进程数据分发;而且在Overlay技术中采用扩展的隔离标识位数,能够突破VLAN的4000数量限制支持高达16M的用户,并在必要时可将广播流量转化为组播流量,避免广播数据泛滥。因此,Overlay网络实际上是目前最主流的容器跨节点数据传输和路由方案。
容器在两个跨主机进行通信的时候,是使用overlay network这个网络模式进行通信;如果使用host也可以实现跨主机进行通信,直接使用这个物理的ip地址就可以进行通信。overlay它会虚拟出一个网络比如10.0.2.3这个ip地址。在这个overlay网络模式里面,有一个类似于服务网关的地址,然后把这个包转发到物理服务器这个地址,最终通过路由和交换,到达另一个服务器的ip地址。
2、安装etcd与配置:
说明:etcd可以单机也可以集群,可以与k8s是相同的服务器,也可以是单独的服务器。
如果etcd是集群那么节点数量要为奇数,本地搭建的是etcd的单机,如下操作:
(1)安装etcd:
执行命令:yum install -y etcd
(2)修改etcd.conf文件:
修改文件:/etc/etcd/etcd.conf,修改一下参数:
说明:下图中红线的IP地址为etcd部署所在的服务器IP,准确的说并不是master的服务器IP。
(3)操作etcd服务:
① 启动:
执行命令:systemctl start etcd
② 停止:
执行命令:systemctl stop etcd
③ 查看状态:
执行命令:systemctl status etcd
④ 开机自启:
执行命令:systemctl enable etcd
⑤ 关闭开机自启:
执行命令:systemctl disable etcd
3、修改docker服务文件:
修改文件:/usr/lib/systemd/system/docker.service服务文件,修改ExecStart的值为如下参数:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.137.111:2379 --cluster-advertise=192.168.137.111:2375
说明:cluster-store值为etcd服务所在的服务器IP地址,如果etcd为集群,那么就用英文逗号分隔。cluster-advertise为当前docker所在的宿主机的IP地址。
4、重新加载服务配置文件:
执行命令:systemctl daemon-reload
5、重启docker服务:
执行命令:systemctl restart docker.service
如果重启docker服务还是不行,那就重新启动服务器吧。
6、创建一个docker的overlay网络:
(1)查看docker网络列表:
执行命令:docker network ls
(2)创建一个docker的overlay网络:
执行命令:docker network create -d overlay demo
(3)查看一个docker网络:
执行命令:docker network inspect demo
(4)删除一个docker网络:
执行命令:docker network rm demo
7、发现bug:
发现一个bug,etcd和docker所在服务器同时重新启动,启动后docker上连接overlay的容器启动不了了,需要将原有的docker中的overlay网络删除后,重新创建一个overlay网络,然后通过命令修改容器使用最新创建的overlay网络,才可以正常启动。暂时不知道什么原因,待以后再处理。
更多推荐
所有评论(0)