host-gw模式
最后一种host-gw模式是一种纯三层网络方案。其工作原理为将每个Flannel子网的“下一跳”设置成了该子网对应的宿主机的IP地址,这台主机会充当这条容器通信路径里的“网关”。这样IP包就能通过二层网络达到目的主机,而正是因为这一点,host-gw模式要求集群宿主机之间的网络是二层连通的,如下图所示。
宿主机上的路由信息是flanneld设置的,因为flannel子网和主机的信息保存在etcd中,所以flanneld只需要watch这些数据的变化,实时更新路由表即可。在这种模式下,容器通信的过程就免除了额外的封包和解包带来的性能损耗。
Node 1上的Pod 1请求Node 2上的Pod 2时,流量的走向如下:
- Pod 1里的进程发起请求,发出IP包,从网络层进入链路层封装成帧;
- 根据主机上的路由规则,数据帧从Node 1通过宿主机的二层网络到达Node 2上;