MetalLB IP address allocation strategy¶
In the context of setting up a Kubernetes cluster with KinD (Kubernetes in Docker) and MetalLB, IP address allocation is determined by the Docker network subnet and specific configuration parameters.^[400-devops__07-Monitoring-and-Observability__k8s-istio__samples__kind-lb__README.md]
Address Calculation¶
The strategy relies on a four-octet IPv4 structure to generate addresses for LoadBalancer type resources^[400-devops__07-Monitoring-and-Observability__k8s-istio__samples__kind-lb__README.md].
- 1st & 2nd Octets: Automatically determined by the Docker network subnet created by KinD.^[400-devops__07-Monitoring-and-Observability__k8s-istio__samples__kind-lb__README.md]
- 3rd Octet: Defined by the user via the
--ip-octet(or-s) parameter during cluster setup^[400-devops__07-Monitoring-and-Observability__k8s-istio__samples__kind-lb__README.md]. The default value is255^[400-devops__07-Monitoring-and-Observability__k8s-istio__samples__kind-lb__README.md]. - 4th Octet: Hardcoded to the range of
200-240^[400-devops__07-Monitoring-and-Observability__k8s-istio__samples__kind-lb__README.md].
This configuration results in a usable pool of 40 distinct public IP addresses per cluster^[400-devops__07-Monitoring-and-Observability__k8s-istio__samples__kind-lb__README.md].
Multi-Cluster Management¶
When running a single cluster, the ip-octet parameter is optional^[400-devops__07-Monitoring-and-Observability__k8s-istio__samples__kind-lb__README.md]. However, when provisioning multiple Kubernetes clusters, it is critical to assign a unique ip-octet value to each cluster^[400-devops__07-Monitoring-and-Observability__k8s-istio__samples__kind-lb__README.md]. This prevents IP address overlapping across the different instances^[400-devops__07-Monitoring-and-Observability__k8s-istio__samples__kind-lb__README.md].
For example, cluster1 might use --ip-octet 255 while cluster2 uses --ip-octet 245^[400-devops__07-Monitoring-and-Observability__k8s-istio__samples__kind-lb__README.md].
Related Concepts¶
- [[KinD]]
- [[Load Balancer]]
- [[Docker Networking]]
Sources¶
^[400-devops__07-Monitoring-and-Observability__k8s-istio__samples__kind-lb__README.md]