容器跨主机网络-host-gw解析
1. host-gw介绍
host-gw是纯三层的网络方案,目前典型的方案有FLannel的host-gw与Calico。
2. host-gw的实现方式
flannel的host-gw工作原理比较简单,flannel会在宿主机将每个FLannel子网(比如10.44.2.0/24)的下一跳设置成该子网对应的宿主机IP地址。而子网与主机的信息保存在etcd当中。flanneld只需要watch这些数据,实时更新路由表即可。该模式下,容器通信免除了额外的封包和解包带来的性能损耗。
而Calico的host-gw与flannel的host-gw的工作原理一样,不同于flanneld通过etcd来维护路由信息,Calico使用BGP(边界网关协议)来自动地在整个集群中分发路由信息。
BGP是在大规模网络中实现节点路由信息共享的一种协议,使用BGP后,每个节点的路由表信息会通过TCP传输给其他边界网关,通过这种方式每个节点得路由表里拥有其他自治系统的主机路由信息。用于解决网络拓扑结构复杂,自治系统由成百上千甚至上万主机人工配置维护边界网关路由表的复杂问题。