我已经配置了我的 microk8s 实例(一个节点)。效果很好。我已经开始挖掘一些 linux 网络内部结构,我目瞪口呆地看着这个:
$ ip -c -br 链接
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
enp0s3 UP 08:00:27:ad:36:a3 <BROADCAST,MULTICAST,UP,LOWER_UP>
enp0s8 UP 08:00:27:86:35:40 <BROADCAST,MULTICAST,UP,LOWER_UP>
enp0s9 UP 08:00:27:25:c8:6d <BROADCAST,MULTICAST,UP,LOWER_UP>
br-e6dc1065d537 DOWN 02:42:92:65:b3:c3 <NO-CARRIER,BROADCAST,MULTICAST,UP>
vxlan.calico UNKNOWN 66:57:ed:b9:9c:1c <BROADCAST,MULTICAST,UP,LOWER_UP>
cali9e5a2199a75@if3 UP ee:ee:ee:ee:ee:ee <BROADCAST,MULTICAST,UP,LOWER_UP>
caliec07808c9ad@if3 UP ee:ee:ee:ee:ee:ee <BROADCAST,MULTICAST,UP,LOWER_UP>
calid39e8c9a8ec@if3 UP ee:ee:ee:ee:ee:ee <BROADCAST,MULTICAST,UP,LOWER_UP>
cali6a901a5bd4a@if3 UP ee:ee:ee:ee:ee:ee <BROADCAST,MULTICAST,UP,LOWER_UP>
$ brctl 显示 br-e6dc1065d537
bridge name bridge id STP enabled interfaces
br-e6dc1065d537 8000.02429265b3c3 no
如您所见,linux 桥已关闭,并且没有任何连接,例如 calico veths。
vxlan.calico
因此,当我在彼此之间卷曲一些工作负载时,我已经开始嗅探 vxlan 上的流量。那里什么都没有(在那个设备上)。找不到流量。据我所知并且我已经测试过你需要一座桥梁来传达你的想法。要在其上运行 vxlan,您需要将 vxlan 连接到网桥,...但是如您所见,此处什么也没有。
我看到的唯一通信是在 veths 上,但是两个不成对的 veths 怎么会互相交谈呢?
好吧,事实很简单。对于单节点情况下的 pod 到 pod 通信,不需要使用桥接,所以桥是 DOWN(我想),而整个通信是基于路由的。
ip -br -c route
展示了真实的和 calico 动态管理路由的方式。$ ip -br -c 路由
有一件事让我很困惑。如果我们查看接口,根命名空间中的所有 calico veth 都具有相同的 MAC:
ee:ee:ee:ee:ee:ee
,而$ ips 嘶嘶声
在容器名称空间中显示成对的 veth MAC
所以这意味着根 ns 中的设备不需要“正确的”MAC,因为我们已经有了路由和 IP 解析表。