Связь microk8s — vxlan.calico, мост и вет
Я настроил свой экземпляр 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 был подключен к мосту... Но, как вы видите, здесь ничего нет.
Единственное общение, которое я вижу, - это на ветах, но как же так, что два непарных вета разговаривают друг с другом?
1 ответ
Хорошо, правда довольно проста. Для связи между модулями с одним узлом нет необходимости использовать мост, поэтому мост НЕ работает (я полагаю), в то время как вся связь основана на маршрутах маршрутизации.ip -br -c route
показывает правду и то, как Calico динамически управляет маршрутами.
$ ip -br -c маршрут
default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
10.0.2.2 dev enp0s3 proto dhcp scope link src 10.0.2.15 metric 100
10.0.2.3 dev enp0s3 proto dhcp scope link src 10.0.2.15 metric 100
blackhole 10.1.238.128/26 proto 80
10.1.238.138 dev cali6a901a5bd4a scope link
10.1.238.142 dev caliec07808c9ad scope link
10.1.238.146 dev cali9e5a2199a75 scope link
10.1.238.149 dev cali00db5abf42d scope link
192.168.57.0/24 dev enp0s9 proto kernel scope link src 192.168.57.4 metric 100
192.168.59.0/24 dev enp0s8 proto kernel scope link src 192.168.59.118 metric 100
Одна вещь меня озадачила. Если мы посмотрим на интерфейсы, все серверы Calico в корневом пространстве имен имеют одинаковые MAC-адреса:ee:ee:ee:ee:ee:ee
, пока
$ ips ржать
показывает парные MAC-адреса Veth в пространствах имен контейнеров
10.1.238.149 cali00db5abf42d 2e:b1:c3:59:e4:09
10.1.238.138 cali6a901a5bd4a a6:b8:a9:c3:e7:77
10.1.238.146 cali9e5a2199a75 6e:c4:7d:a1:3b:d2
10.1.238.142 caliec07808c9ad 32:dc:93:ed:eb:51
Это означает, что устройствам в корневом каталоге ns не нужны «правильные» MAC-адреса, поскольку у нас есть маршрутизация и таблица разрешений IP.