swarm       

swarm

在docker swarm集群创建的开始,docker 会给每台host创建除了docker0以外的两个网络,分是bridge类型(docker_gwbridge网桥)和overlay类型(ingress)的网络,以及一个过渡的命名空间ingress_sbox

架构

image-20200409214703764

image-20210319101453566

功能

服务发现:Swarm管理器节点为swarm中的每个服务分配唯一的DNS名称,并负载平衡运行中的容器。 你可以通

过嵌入在swarm中的DNS服务器查询在swarm中运行中的每个容器。

负载平衡:你可以将服务的端口暴露给外部的负载均衡器。 在内部,swarm允许你指定如何在节点之间分发服务容器。

内部负载均衡就是我们在上一段提到的服务发现,集群内部通过DNS访问service时,Swarm默认通过VIP(virtual IP)、iptables、IPVS转发到某个容器。

image-20200409220717557

overlay网络

网卡设备

Container eth0:eth0它是Overlay网络分配的唯一的IP地址,它是veth pair虚拟设备对,作用是实现点对点的通信,通过桥接到br0这个网桥中,可以实现不同 NameSwitch之间容器进行通信。

br0:它是Overlay默认创建的网桥。

VETP:对VXLAN数据包的封装与街封装。

Container eth1:eth1是容器主机的默认网络,主要提供容器访问外网所提供的服务,走的默认docker网络架构,只不过他创建了docker_gwbridge这个网桥。

docker_gwbridge:docker_gwbridge是容器所创建的网桥它替代了docker0的服务。

eth0:真机网卡与外界网卡连接得真机网卡,它用来转发,容器VXLAN与NAT两种网卡类型的数据包到指定的对端节点。


发送数据包流程

容器Container1 发送数据包 到容器 Container2。

image-20210928080841677

参考

https://zhoujinl.github.io/2018/10/19/docker-swarm-manager-ha/

https://blog.csdn.net/even160941/article/details/98853461