我有几个 Raspberry Pi 3B/3B+,正在运行凯利开启。Pis 仅使用 WiFi 连接。我正在尝试使用金属LB来实现负载平衡,但是我在让它工作时遇到了问题。
MetalLB 的工作原理是捕获分配给它的“虚拟” IP 的 ARP 请求,并发送 ARP 回复以将流量引导到正确的节点。要实现这一点,ARP 请求需要从内核转发到 MetalLB 运行的用户空间。
这应该可以正常工作,但就我而言,它只是偶尔起作用。我尝试调试问题,据我所知,当这不起作用时,没有外部 ARP 请求到达用户空间。如果我arping
从另一台计算机使用,对 Pis 上的常规 IP 的请求会得到正确的答复,但分配给 MetalLB 的“虚拟”IP 不会得到答复。
我编写了一个小程序,它基本上与 MetalLB 功能相同,打印出它看到的 ARP 包,并且它看到相当多的“is-at”回复,但它看到的唯一“who-has”请求是发生在 k3s 为 Kubernetes 设置的 flannel 网络内部的请求。
我一直无法弄清楚为什么它偶尔会工作,或者是什么让它停止工作(或者就此而言启动)。大多数时候它都不工作。重启后它似乎更有可能工作,但它绝不是一致的,而且无论如何都是短暂的。
如果我将接口设置为混杂模式,它似乎可以工作,但这不是一种健康的操作模式,一段时间后整个 Pi 就会脱离网络并需要重新启动。
我这里遗漏了什么?我该如何调试并找到解决方案?