We are excited about Calico v3.5 release. This release provides more control and allows much finer-grained dynamic IP management vs the static allocation of a fixed set of addresses to each node in native Kubernetes. Here are the details:
IP address allocation based on topology
In some cases, it may be desirable to allocate pod IP addresses based on your cluster topology. For example, you may have pods deployed across several racks and want to minimize the number of routes required in the network, or you may need to assign addresses in such a way to adhere to some external firewall or company policy.
In Calico v3.5, you can now use IP pools to select a particular group of nodes based on node labels. Workloads deployed to a node will be assigned an address from within the IP pools which select that node.
Additionally, Calico now inherits node labels from Kubernetes, so you can take advantage of topology information already present in your cluster. For more details on how this works, and a step-by-step example, see the Calico documentation for this feature.