容器网络相关笔记01

Docker0 Bridge 主机在安装docker服务时候,会通过主机的物理/虚拟网卡自动创建docker0 bridge桥接器(相当于网络交换机),为主机内各个容器通信提供通道,docker0 bridge 提供完整的网络结构。 容器启动后会自动创建veth-pair虚拟设备接口到容器内的eth0虚拟网卡,此时容器已分配完成docker0下的ip,进而会向主机的eth0网卡添加iptables规则到当前容器。

SNAT(Source Network Address Translation) 源网络地址转换,容器中可用于相同VPC下不同主机之间容器网络互通:需要通过SNAT协议将容器内ip转换为主机的内网ip到目的主机下再进行DNAT,从而到达目的容器

OVERLAY NETWORK 叠加网络是建立在另一个网络之上并由其基础设施支持的电信网络。叠加网络通过将一个数据包封装在另一个数据包中,将网络服务与底层基础设施分离。将封装的数据包转发到端点后,会将其解封。大多数叠加网络运行在公网之上,比如虚拟专用网(VPN)、对等(P2P)网络、内容递送网络(CDN)、诸如Skype的IP语音(VoIP)服务和非本地软件定义的网络

CNI(Container Network Interface) 由一组用于配置Linux容器的网络接口的规范和库组成,同时还包含了一些插件。CNI仅关心容器创建时的网络分配,和当容器被删除时释放网络资源,网络插件如下: 详情

  • flannel: 通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于Linux TUN/TAP,使用UDP封装IP包来创建overlay网络,并借助etcd维护网络的分配情况 详情
  • calico: 纯三层的数据中心网络方案(不需要 Overlay),并且与 OpenStack、Kubernetes、AWS、GCE 等 IaaS 和容器平台都有良好的集成,Calico 在每一个计算节点利用 Linux Kernel 实现了一个高效的 vRouter 来负责数据转发,而每个 vRouter 通过 BGP 协议负责把自己上运行的 workload 的路由信息像整个 Calico 网络内传播——小规模部署可以直接互联,大规模下可通过指定的 BGP route reflector 来完成。 这样保证最终所有的 workload 之间的数据流量都是通过 IP 路由的方式完成互联的。Calico 节点组网可以直接利用数据中心的网络结构(无论是 L2 或者 L3),不需要额外的 NAT,隧道或者 Overlay Network 详情
  • Weave: 多主机容器网络方案,支持去中心化的控制平面,各个host上的wRouter间通过建立Full Mesh的TCP链接,并通过Gossip来同步控制信息。这种方式省去了集中式的K/V Store,能够在一定程度上减低部署的复杂性,Weave将其称为“data centric”,而非RAFT或者Paxos的“algorithm centric” 详情

本文由博客一文多发平台 OpenWrite 发布!


分享到:


相關文章: