Question

How to set static IP for loadbalancer in Kubernetes?

Imagine a following situation: I have a Kubernetes cluster and I want to have a statically assigned IP to LoadBalancers within those clusters. How or where I can obtain those static IPs?

Whenever I tear down Kubernetes Pods, IPs are assigned dynamically, which is fine, but if I want to assign the Kubernetes LoadBalancer a static IP, I have no way of knowing which IP address should be set, hence I need to change DNS records every time Kubernetes Master assigns a new IP address.

Subscribe
Share

Submit an answer
You can type!ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

What if we deleted the cluster and reuse the loadbalancer in the newly created cluster. I couldn’t find a way to achieve this. I tried to specify static IP in the service level but no matter what kubernetes creates a new LB. Cannot use the existing one.

Just searched all documentation and sites for some hours to see if something changes. But it seems that this is still not possible or at least not officially supported in any way.

It is very annoying when we are re-installing our ingress controller that the load balancer used ends up with a new IP which results in the need to update the the DNS entries and all our clients out there are going down.

I know that other cloud providers support static/stable IPs for their load balancer for kubernets.

@digitalocean: Isn’t there a supported way to keep the IP of the load banancers stable/static?

I dunno if this is too late, probably so, but in your Service yaml specify something like this:

loadBalancerIP: <your desired external ip>
type: LoadBalancer

same here. I’m using helms, and its a Hugh problem for me

Same here. I am using helm delete sometimes which tears down all the cluster resources. When I recreate the cluster, I get a new IP address for the LB. This is annoying because I have to update the DNS entries each time. It would be nice to have a fixed IP feature, in which we can specify a fixed IP address in the LB (or ingress) configuration.

Same problem here as @fkucuk . DigitalOcean are you listening? How can we solve this problem?

We are forced to delete and recreate the cluster because we’re still facing the “deleting and recreating a NFS pv will break mounting that NFS PV forever” problem. This when NFS breaks, we have to re-setup everying from zero.

And it sucks when all our external clients break because we have to update our DNS to point to the new LoadBalancer IP.

Same problem as here: https://www.digitalocean.com/community/questions/how-to-reuse-do-loadbalancer-previously-created-through-kubernetes Also see https://www.digitalocean.com/community/questions/how-to-update-to-1-15-k8s-in-do-managed-k8s where users will run into this very problem when upgrading their clusters.

This comment has been deleted

@PeterBocan How did you solve this? I was thinking that I might grab a floating IP, standup a droplet and set it up with nginx to proxy to my K8S load balancer. This way when the K8S IP changes, I only need to modify my proxy server and not DNS records.

There seems like there should be a better way.