(二十一)Calico 的网络结构是什么?

上一节我们部署了 Calico 网络,今天将运行容器并分析 Calico 的网络结构。  在 host1 中运行容器 bbox1 并连接到 cal_net1:

docker container run --net cal_net1 --name bbox1 -tid busybox

查看 bbox1 的网络配置。

docker exec bbox1 ip addr

容器网络(八)Calico 的网络结构是什么?【63】_Calico 的网络结构

cali0 是 calico interface,分配的 IP 为 192.168.119.2。cali0 对应 host1 编号 11 的 interface cali5f744ac07f0。

ip -link show

容器网络(八)Calico 的网络结构是什么?【63】_Calico 的网络结构_02

host1 将作为 router 负责转发目的地址为 bbox1 的数据包。

容器网络(八)Calico 的网络结构是什么?【63】_Calico 的网络结构_03

所有发送到 bbox1 的数据都会发给 cali5f744ac07f0,因为 cali5f744ac07f0 与 cali0 是一对 veth pair,bbox1 能够接收到数据。

host1 网络结构如图所示:

容器网络(八)Calico 的网络结构是什么?【63】_Calico 的网络结构_04

接下来我们在 host2 中运行容器 bbox2,也连接到 cal_net1:

docker container run --net cal_net1 --name bbox2 -tid busybox

IP 为 192.168.183.65。

容器网络(八)Calico 的网络结构是什么?【63】_Calico 的网络结构_05

host2 添加了两条路由:

容器网络(八)Calico 的网络结构是什么?【63】_Calico 的网络结构_06

  1. 目的地址为 host1 容器 subnet 192.168.119.0/26 的路由。
  2. 目的地址为本地 bbox2 容器 192.168.183.65 的路由。

同样的,host1 也自动添加了到 192.168.183.64/26 的路由。

容器网络(八)Calico 的网络结构是什么?【63】_Calico 的网络结构_07

完成了上面这些准备工作,下一节我们将讨论 Calico 网络的连通性。