Service ClusterIP 分配

    当 Kubernetes 需要为 Service 分配虚拟 IP 地址时,该分配会通过以下两种方式之一进行:

    动态分配

    集群的控制面自动从所配置的 IP 范围内为 type: ClusterIP 选择一个空闲 IP 地址。

    静态分配

    根据为 Service 所配置的 IP 范围,选定并设置你的 IP 地址。

    在整个集群中,每个 Service 的 ClusterIP 都必须是唯一的。 尝试使用已分配的 ClusterIP 创建 Service 将返回错误。

    有时你可能希望 Services 在众所周知的 IP 上面运行,以便集群中的其他组件和用户可以使用它们。

    但如前所述,IP 地址 10.96.0.10 尚未被保留。如果在 DNS 启动之前或同时采用动态分配机制创建其他 Service, 则它们有可能被分配此 IP,因此,你将无法创建 DNS Service,因为它会因冲突错误而失败。

    Kubernetes 中用來将 ClusterIP 分配给 Service 的分配策略降低了冲突的风险。

    范围根据公式 min(max(16, cidrSize / 16), 256) 进行划分, 描述为不小于 16 且不大于 256,并在二者之间有一个渐进的步长。

    默认情况下,动态 IP 分配使用地址较高的一段,一旦用完,它将使用较低范围。 这将允许用户在冲突风险较低的较低地址段上使用静态分配。

    此示例使用 IP 地址范围:10.96.0.0/24(CIDR 表示法)作为 Service 的 IP 地址。

    范围大小:28 - 2 = 254
    带宽偏移量:min(max(16, 256/16), 256) = min(16, 256) = 16
    静态带宽起始地址:10.96.0.1
    静态带宽结束地址:10.96.0.16
    范围结束地址:10.96.0.254

    pie showData title 10.96.0.0/24 “静态分配” : 16 “动态分配” : 238

    此示例使用 IP 地址范围 10.96.00/20(CIDR 表示法)作为 Service 的 IP 地址。

    范围大小:212 - 2 = 4094
    带宽偏移量: = min(256, 256) = 256
    静态带宽起始地址:10.96.0.1
    静态带宽结束地址:10.96.1.0
    范围结束地址:10.96.15.254

    pie showData title 10.96.0.0/20 “静态分配” : 256 “动态分配” : 3838

    必须启用 JavaScript 才能查看此页内容

    此示例使用 IP 地址范围 10.96.0.0/16(CIDR 表示法)作为 Service 的 IP 地址。

    范围大小:216 - 2 = 65534
    带宽偏移量:min(max(16, 65536/16), 256) = min(4096, 256) = 256
    静态带宽起始地址:10.96.0.1
    静态带宽结束地址:10.96.1.0
    范围结束地址:10.96.255.254

    pie showData title 10.96.0.0/16 “静态分配” : 256 “动态分配” : 65278