基础

容器网络基于namespace中的networknamespace(此外还有pidmountuseripcUTS(hostname)、cgroup)

docker网络

docker分为四种网络

网络设备

通用

容器与node通信

veth-pair使得容器内流量到达宿主机,通过路由表查询,到达其他node

容器与同node内容器通信

veth-pair使得容器内流量到达宿主机,通过路由表查询,同node内容器可直达,由于所有容器链接在网桥上,网桥可以作为虚拟交换机进行arp,获取mac

容器与不同node间容器通信

需要一个网线,而开源的网络方案用了不同的方式来实现这根网线

K8S网络方案

大体分为overlay、路由、underlay

Flannel

udp

calico

支持network-policy
host-gw模式类似,会写入多条路由规则

underlay

依赖底层网络
容器虚拟化部分,可以用ipvlanmacvlansr-iov
ipam部分可以自研

优点:

劣势: