K3s single node cluster + MetalLB (ARP issues) #1708
Replies: 3 comments
-
This also happens when deploying applications that create an ingress object. As a test I've deployed the Karma project which created an ingress, which correctly received an external IP
Again I'm not able to access this from my host, but I am from the VM itself. |
Beta Was this translation helpful? Give feedback.
-
Even more information: I've created a 3 node lima VM K3s cluster and deployed metalLB + ingress-nginx via the same Helm method. All the deployments are successful and the external IP address is granted to the ingress-nginx controller. A good point of information, is that from each of the lima VMs I'm able to curl and hit the ingress endpoint.
However on the local VMS I'm not able to arping via the lima0 interface and get a reply
|
Beta Was this translation helpful? Give feedback.
-
After thinking a bit more I was able to verify that this wasn't an issue with the MacOS bridge. To verify this I did a TCPdump on one of the lima VM nodes
and then from my host system performed an
On the lima VM
This pointed me back into the direction of metalLB and its configs, looking at the troubleshooting guide for metallb(https://metallb.universe.tf/troubleshooting/#troubleshooting-service-advertisements), there is a section for why the speaker wont advertise. Because I'm using L2 the below line stood out.
Taking another look at my
|
Beta Was this translation helpful? Give feedback.
-
TL;DR: It appears that the latest macOS 13.5 upgrade has broken what I believe is the ability for the VMs to ARP up additional addresses such as the metalLB addresses.
I've modified the current k3s example template (listed below) to deploy a single node k3s cluster on my MacBook Pro ( Intel )
The biggest change here is the use of
shared
network which was configured on my host MacBook Pro using the following--- Template ---
Using a little wrapper script I trigger the creation / start of the VM with
limactl start --name=localk3s --tty=false ./localk3s.yaml
This correctly creates the cluster and I'm able to access it via
kubectl
+helm
after fetching the kubeconfig (k3s.yaml) off the VM.Helm was used to install metalLB + ingress-nginx on the cluster. The controller and speaker for metalLB start successfully and an external IP address is correctly handed to the ingress-nginx controller
Locally on the lima VM I'm able to curl that endpoint without issue
If I attempt to curl from my host MacBook Pro I can see incomplete arp messages
On the lima VM itself I see the following
Before updating macOS to 13.5 I was able to curl and access the ingress endpoints via a browser on my host macOS system.
My searching did come across some ARP issues with multipass on macOS that seems related, but I'm having trouble hunting down what in the upgrade might have triggered this issue.
https://multipass.run/docs/troubleshoot-networking#heading--arp-problems
Has anyone else come across similar issues ?
Beta Was this translation helpful? Give feedback.
All reactions