所有的网络方案都是为了解决容器的跨主通信的问题。
flannel支持的三种网络后端:
vxlan
host-gw
udp(性能太差,已经被弃用了,UDP的封装和解封都是在用户态执行的,vxlan是内核模块,直接在内核中进行解封封装)
flannel
10.10.0.0/16位网段
每个node节点都有flannel的一个子网
事实上每个宿主机的所有容器,都属于该宿主机被分配的一个子网。
每个node节点,比如node-1 是10.10.1.0/24,node-2是10.10.2.0/24 node-3是10.10.3.0/24
宿主机和子网的对应关系在ETCD中保存。
vlxlan模式详解:
可以看到,图中每台宿主机上名叫 flannel.1 的设备,就是 VXLAN 所需的 VTEP 设备,它既有 IP 地址,也有 MAC 地址.
现在,我们的 container-1 的 IP 地址是 10.1.15.2,要访问的 container-2 的 IP 地址是 10.1.16.3