Service ClusterIP allocation

    When Kubernetes needs to assign a virtual IP address for a Service, that assignment happens one of two ways:

    dynamically

    the cluster’s control plane automatically picks a free IP address from within the configured IP range for type: ClusterIP Services.

    statically

    you specify an IP address of your choice, from within the configured IP range for Services.

    Across your whole cluster, every Service ClusterIP must be unique. Trying to create a Service with a specific ClusterIP that has already been allocated will return an error.

    Sometimes you may want to have Services running in well-known IP addresses, so other components and users in the cluster can use them.

    but as it was explained before, the IP address 10.96.0.10 has not been reserved; if other Services are created before or in parallel with dynamic allocation, there is a chance they can allocate this IP, hence, you will not be able to create the DNS Service because it will fail with a conflict error.

    The allocation strategy implemented in Kubernetes to allocate ClusterIPs to Services reduces the risk of collision.

    The range is divided, based on the formula min(max(16, cidrSize / 16), 256), described as never less than 16 or more than 256 with a graduated step between them.

    Dynamic IP assignment uses the upper band by default, once this has been exhausted it will use the lower range. This will allow users to use static allocations on the lower band with a low risk of collision.

    This example uses the IP address range: 10.96.0.0/24 (CIDR notation) for the IP addresses of Services.

    Range Size: 28 - 2 = 254
    Band Offset: min(max(16, 256/16), 256) = min(16, 256) = 16
    Static band start: 10.96.0.1
    Static band end: 10.96.0.16
    Range end: 10.96.0.254

    pie showData title 10.96.0.0/24 “Static” : 16 “Dynamic” : 238

    This example uses the IP address range: 10.96.0.0/20 (CIDR notation) for the IP addresses of Services.

    Range Size: 212 - 2 = 4094
    Band Offset: = min(256, 256) = 256
    Static band start: 10.96.0.1
    Static band end: 10.96.1.0
    Range end: 10.96.15.254

    pie showData title 10.96.0.0/20 “Static” : 256 “Dynamic” : 3838

    JavaScript must be enabled to view this content

    This example uses the IP address range: 10.96.0.0/16 (CIDR notation) for the IP addresses of Services.

    Range Size: 216 - 2 = 65534
    Band Offset: min(max(16, 65536/16), 256) = min(4096, 256) = 256
    Static band start: 10.96.0.1
    Static band ends: 10.96.1.0
    Range end: 10.96.255.254

    pie showData title 10.96.0.0/16 “Static” : 256 “Dynamic” : 65278