Calico容器网络方案
Calico共有两个容器网络方案:Calico BGP和Calico IPIP。
Calico BGP方案
Calico BGP数据面如下:

同节点容器通信
容器A访问容器B,数据面流程如下:
- 容器A内的calic0设备的掩码长度为32,即与容器B属于不同网络,需要通过网关进行通信
- 容器A查找路由表,存在default路由,下一跳为169.254.1.1,且169.254.1.1可通过cali0直达
- 容器A发送ARP请求给169.254.1.1,ARP请求报文到达veth设备的另一端califXXX接收
- 由于califXXX设备使能了ARP proxy,Linux内核会以califXXX的MAC地址来响应ARP请求,并从califXXX发出;
- 容器A收到ARP响应后,得到169.254.1.1的MAC地址,封装二层报文,发送报文给169.254.1.1,报文从cali0设备发出
- 报文通过veth设备进入Host内核协议栈;
- 由于目的IP不在本节点,Host内核会进行报文转发(ip_forward已开启)
- Host内核超找路由表,发现路由条目,通过califYYYYYY设备可以直达
- Host内核发送ARP请求给容器B,通过califYYYYYY设备发出
- ARP请求报文通过veth设备到达容器B,容器B响应ARP请求,ARP响应通过veth设备到达Host内核
- Host内核更新报文的二层头,从califYYYYYY设备发出
- 报文通过veth设备到达容器B

本文详细介绍了Calico的两种容器网络方案:Calico BGP和Calico IPIP。Calico BGP通过BGP同步路由信息,实现节点间的通信,但会暴露容器网络。而Calico IPIP方案通过IP隧道隐藏容器网络信息,提供更安全的通信,但随着节点增加,IPIP设备也会增多。
最低0.47元/天 解锁文章
2093

被折叠的 条评论
为什么被折叠?



