Skip to content

kube-vip-cloud-controller ignoring range in config map

Describe the bug The IP given for the service is the IP of the physical host and not from the config-map range and then later changes back to the correct range.

To Reproduce Steps to reproduce the behavior:

  1. Create a 3 node k3s cluster with ksup on raspberry pi 5's
  2. Follow these steps to get a working cluster VIP https://kube-vip.io/docs/usage/k3s/
  3. Then follow these steps to for kube-vip-cloud-controller https://kube-vip.io/docs/usage/cloud-provider/
  4. Deploy and expose hello-node workload https://kubernetes.io/docs/tutorials/hello-minikube/

Expected behavior I started writting this issue because the service IP was from the physcial host and not the range from the config-map. But as I was writing it, I double checked and it has changed back to the config map?

root@kube-1:/home/shadycuz# kubectl -n kube-system describe configmaps kubevip
Name:         kubevip
Namespace:    kube-system
Labels:       <none>
Annotations:  <none>

Data
====
range-global:
----
192.168.4.110-192.168.4.150


BinaryData
====

Events:  <none>
root@kube-1:/home/shadycuz# kubectl expose deployment hello-node --type=LoadBalancer --port=8080
service/hello-node exposed
root@kube-1:/home/shadycuz# kubectl get service hello-node
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP                   PORT(S)          AGE
hello-node   LoadBalancer   10.43.253.73   192.168.4.102,192.168.4.103   8080:30465/TCP   11s
root@kube-1:/home/shadycuz# kubectl get service hello-node
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
hello-node   LoadBalancer   10.43.253.73   192.168.4.110   8080:30465/TCP   8m8s

I was thinking maybe I didn't need to set up both the daemonset and the cloud-controller deployment? But now I'm thinking I didn't give the cloud-controller enough time to do its job and the physcial IP's were just placeholders?

Screenshots If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

  • OS/Distro: raspbian lite ARM64
  • Kubernetes Version: v1.33.3+k3s1
  • Kube-vip Version: 1.0.0

Kube-vip.yaml: If Possible add in your kube-vip manifest (please remove anything that is confidential)

Which one? The one for the cluster VIP or the cloud-controller one?

Additional context I have checked and I can reach the service on all 3 Ip's. Seems like maybe I shouldn't be able to reach them on http://192.168.4.103:8080/ and http://192.168.4.102:8080/

101 is the IP to kube-1... 102 to kube-2 etc.

EDIT:

I do see mention of my service in the daemon-set logs, not sure if thats to be expected:

2025/08/06 11:19:57 INFO Starting Kube-vip Manager with the ARP engine
2025/08/06 11:19:57 INFO Start ARP/NDP advertisement
2025/08/06 11:19:57 INFO Starting ARP/NDP advertisement
2025/08/06 11:19:57 INFO Starting UPNP Port Refresher
2025/08/06 11:19:57 INFO beginning services leadership namespace=kube-system "lock name"=plndr-svcs-lock id=kube-2
I0806 11:19:57.808674       1 leaderelection.go:257] attempting to acquire leader lease kube-system/plndr-svcs-lock...
2025/08/06 11:19:57 INFO cluster membership namespace=kube-system lock=plndr-cp-lock id=kube-2
I0806 11:19:57.808860       1 leaderelection.go:257] attempting to acquire leader lease kube-system/plndr-cp-lock...
2025/08/06 11:19:57 INFO New leader leader=kube-1
I0806 11:19:57.823949       1 leaderelection.go:271] successfully acquired lease kube-system/plndr-svcs-lock
2025/08/06 11:19:57 INFO (svcs) starting services watcher for all namespaces
2025/08/06 11:24:57 INFO [UPNP] Refreshing Instances "number of instances"=0
2025/08/06 11:29:57 INFO [UPNP] Refreshing Instances "number of instances"=0
2025/08/06 11:34:57 INFO [UPNP] Refreshing Instances "number of instances"=0
2025/08/06 11:36:24 INFO (svcs) adding VIP ip=192.168.4.110 interface=eth0 namespace=default name=hello-node
2025/08/06 11:36:24 INFO layer 2 broadcaster starting
2025/08/06 11:36:24 INFO inserting ARP/NDP instance name=192.168.4.110/32-eth0
2025/08/06 11:36:24 INFO [service] service=hello-node namespace=default "synchronised in"=43ms
2025/08/06 11:37:34 INFO removing ARP/NDP instance name=192.168.4.110/32-eth0