I've configured my microk8s instance (one node). Works well. I've started digging in some linux network internals and I was dumbfounded looking at this:
$ ip -c -br link
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 show br-e6dc1065d537
bridge name bridge id STP enabled interfaces
br-e6dc1065d537 8000.02429265b3c3 no
As you can see linux bridge is DOWN, and it does not have anything connected to it, e.g. calico veths.
So I've started sniffing traffic on the vxlan.calico
vxlan when I curl some workloads between each other. Nothing there (on that device). No traffic found. As far as I know and I've tested to communicate veths you need a bridge. To run vxlan over it you need vxlan be connected to the bridge,...But as you see nothing is here.
The only communication I see is on the veths, but how can it be, that two unpaired veths talks to each other?
OK, the truth is quite simple. For pod-to-pod communications with a single node case there is no need to use bridging, so the bridge is DOWN (I suppose), while the whole communications is based on routing routes.
ip -br -c route
shows the true and the way calico manages routes dynamically.$ ip -br -c route
One thing puzzled me. If we look at the interfaces all calico veths in the root namespace have got the same MACs:
ee:ee:ee:ee:ee:ee
, while$ ips neigh
shows paired veth MACs in container namespaces
So it means that devices in the root ns don't need "correct" MACs since we've got routings and IP resolution table.