在docker swarm集群创建的开始,docker 会给每台host创建除了docker0以外的两个网络,分是bridge类型(docker_gwbridge网桥
)和overlay类型(ingress
)的网络,以及一个过渡的命名空间ingress_sbox
,
服务发现:Swarm管理器节点为swarm中的每个服务分配唯一的DNS名称,并负载平衡运行中的容器。 你可以通
过嵌入在swarm中的DNS服务器查询在swarm中运行中的每个容器。
负载平衡:你可以将服务的端口暴露给外部的负载均衡器。 在内部,swarm允许你指定如何在节点之间分发服务容器。
内部负载均衡就是我们在上一段提到的服务发现,集群内部通过DNS访问service时,Swarm默认通过VIP(virtual IP)、iptables、IPVS转发到某个容器。
网卡设备
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。
https://zhoujinl.github.io/2018/10/19/docker-swarm-manager-ha/
https://blog.csdn.net/even160941/article/details/98853461