GKE 地址管理:IPv4 地址优化

本文档是面向网络架构师的系列文章中的一篇。该系列介绍了 IPv4 地址紧缺的组织可用的 Google Kubernetes Engine (GKE) 地址管理方案。

该系列包含以下部分:

本文档描述了确定 GKE CIDR 地址块需求的过程,然后介绍了一种决策模型,可帮助您确定为某些特定场景推荐哪种解决方案。最后,本文档简要介绍了各种解决方案,并列出了其相应的优缺点。

确定 GKE CIDR 地址块需求

本部分将确定集群的 CIDR 地址块大小。 正确执行此步骤非常重要,因为一旦创建集群,您就无法再更改或扩展 CIDR 地址块。

确定节点 CIDR 地址块大小

如需确定节点 CIDR 地址块大小,请按以下步骤操作:

  1. 确定集群在整个生命周期内所需的最大节点数。

    如果您可以根据客户的应用、设计和增长预测情况确定此数值,请将其用作所需的节点数。如果您无法确定所需的最大节点数,请将 5000 个节点的配额上限用作最大值。

  2. 针对所需节点数确定帐号需要的主机位数。

    如果您知道所需节点计数,可以使用表 1 计算生成网络掩码所需的主机位数。在所需节点数列中查找所需节点数。在下一步中,使用节点的主机位数列中对应的数字。

    所需节点数 节点的主机位数
    1-4 3
    5-12 4
    13–28 5
    29–60 6
    61–124 7
    125–252 8
    253–508 9
    509–1020 10
    1021–2044 11
    2045–4092 12
    4093–8188 13

    表格 1.节点地址所需的位数。

  3. 使用您在上一步中确定的节点的主机位数列中的数字生成 CIDR 地址块网络掩码:

    32 - 节点的主机位数 = 节点 CIDR 地址块网络掩码

    下图以图形方式展示了此等式。

    节点 CIDR 地址块网络掩码。

    例如,对于拥有 5000 个节点的集群,表 1 显示节点网络掩码中需要 13 个节点主机位。如需计算完整的网络掩码,请替换等式中节点的主机位数,即 32 - 13 = 19。结果显示网络掩码为 /19

确定 Pod CIDR 地址块大小

如需确定 Pod CIDR 地址块大小,请按以下步骤操作:

  1. 确定集群在整个生命周期内所需的每个节点的最大 Pod 数。

    如果您可以根据具体应用确定此数值,可将其用作每个节点所需的 Pod 数。如果您无法确定所需的最大数,请将每个节点 110 个 Pod 的配额上限用作最大值。

  2. 确定所需 Pod 数需要的主机位数。

    如果您知道每个节点所需的 Pod 数,可以使用表 2 来计算生成网络掩码所需的主机位数。在每个节点的 Pod 计数列中找到每个节点所需的 Pod 数。在下一步中,使用节点的主机位数列中对应的数字。

    每个节点的 Pod 计数 Pod 的主机位数
    1–8 4
    9–16 5
    17–32 6
    33–64 7
    65–110 8

    表格 2.每个节点的 Pod 所需的位数。

  3. 使用您在第二步(即确定节点 CIDR 地址块大小部分)中确定的节点的主机位数,以及在上一步中确定的 Pod 的主机位数,生成 CIDR 地址块网络掩码:

    32 -(节点的主机位数 + Pod 的主机位数)= Pod CIDR 地址块网络掩码

    下图以图形方式展示了此等式。

    Pod CIDR 地址块网络掩码。

    例如,如果每个节点需要 110 个 Pod,则每个节点需要 Pod 的 8 个主机位。然后,取节点的主机位数 (13),并将这些数字带入等式,即 32 - (13 + 8) = 11。结果显示网络掩码为 /11

确定集群 IP CIDR 地址块大小

如需确定集群 IP 地址的 CIDR 地址块大小,请按以下步骤操作:

  1. 确定集群在整个生命周期内所需的最大集群 IP 地址数。

    如果您可以根据具体应用确定此数值,可将其用作所需的集群 IP 地址数。如果您无法确定所需的最大数,请使用默认的 /20 网络掩码。如果使用默认网络掩码,则可跳过以下步骤。

  2. 确定集群 IP 地址的 CIDR 地址块的网络掩码。

    如果您知道所需的最大集群 IP 地址数,可以使用表 3 查找网络掩码。

    集群 IP 地址数 网络掩码
    1–32 /27
    33–64 /26
    65–128 /25
    129–256 /24
    257–512 /23
    513–1024 /22
    1025–2048 /21
    2049–4096 /20
    4097–8192 /19
    8193–16384 /18
    16385–32768 /17
    32769–65536 /16

    表格 3.服务的 CIDR 地址块网络掩码。

了解地址需求

当您查看前面步骤中的 CIDR 地址块需求时,需注意需要 IP 地址空间最多的是 Pod CIDR 地址块。大多数情况下,节点 CIDR 的需求量第二,其次是服务 CIDR 地址块。

现在您已经计算出集群 IP 地址需求,接下来需要检查可用的 RFC 1918 IP 地址空间并选择一个路径继续操作。

选择最佳解决方案

图 1 展示了一个决策树,可用于根据 CIDR 地址块需求确定最佳解决方案。查看解决方案部分概述了各个解决方案。

示例服务设置。(如需支持屏幕阅读功能的 PDF 版本,请点击图片。)
图 1. 示例服务设置。(如需支持屏幕阅读功能的 PDF 版本,请点击图片。)

查看解决方案

本部分介绍了各个解决方案及其使用场景,并汇总了各自的优缺点及其他问题。

分配可用的地址空间

何时使用:

  • 在查看可用的 IP 地址空间并完成图 1 中的流程后,您已确定有足够的 RFC 1918 地址空间可分配供集群 CIDR 地址块使用。例如,虽然 10.0.0.0/8 地址可能已用完,但 172.16.0.0/12192.168.0.0/16 地址空间中还有空间足以满足 CIDR 地址块需求。

说明:

  • 此解决方案无需执行其他特殊配置步骤;请分配地址空间并继续安装。

优点:

  • 最简单的解决方案。
  • 无需特殊配置。

缺点:

  • 会耗尽可用的 IP 地址空间。

其他问题:

转换 GKE Pod CIDR 地址块

何时使用:

  • 在查看可用的 IP 地址空间并完成图 1 中的流程后,您已确定有足够的 RFC 1918 地址空间可分配给节点地址块,但没有足够的空间供集群 CIDR 地址块使用。因此,您必须转换 Pod(可能还要转换服务)CIDR 地址块。

说明:

  • 如需转换 GKE 集群中的 Pod CIDR 地址块,请实现 ip-masquerade-agent 功能,如图 2 所示。此功能会隐藏节点 IP 地址后面的 Pod IP 地址。通过这种设计,还可以对服务 CIDR 地址块重复使用 CIDR 地址块。

    GKE 集群中的 Pod CIDR 地址块的 NAT。(如需支持屏幕阅读功能的 PDF 版本,请点击图片。)
    图 2. GKE 集群中的 Pod CIDR 地址块的 NAT。(如需支持屏幕阅读功能的 PDF 版本,请点击图片。)

    此架构由几个部分组成:

    • 用于描述与 NAT 相关的 CIDR 地址块特征的新术语。
    • ip-masquerade-agent 功能。
    • 重复使用的 RFC 1918 CIDR 地址块。
    • 在本地连接上进行过滤。

优点:

  • 减少 Pod CIDR 的 IPv4 地址分配障碍。
  • 可扩展至受支持的最大 Pod CIDR 地址块。
  • 将重用的 RFC 1918 CIDR 地址块与全局路由表分隔开来。
  • 仍可实现多集群 Istio 网状网。
  • 仍可进行网络端点组配置。

缺点:

  • NAT 引入了需要解决的新问题,例如地址网络共享和日志记录等。
  • VPC 中的某些资源无法与分配了和 Pod CIDR 范围相同的 CIDR 范围的本地资源进行通信。如果重复使用服务范围,则共享服务 CIDR 地址块的本地资源也存在此问题。问题在于,重复使用的 CIDR 地址块显示为 VPC 本地路由,因此绝不会路由到 VPC 之外。

其他问题:

  • 请谨慎选择要对 GKE CIDR 地址块重复使用哪些 RFC 1918 CIDR 地址块。
  • 请勿向本地网络通告重复使用的 RFC 1918 CIDR 地址块。
  • 由于重复使用的 CIDR 地址块位于 VPC 路由表中,因此在使用 VPC 对等互连或 VPN 连接时需谨慎。

转换所有 GKE CIDR 地址块

何时使用:

  • 查看可用的 IP 地址空间并完成图 1 中的流程后,您已确定没有足够的 RFC 1918 地址空间可分配给集群 Pod 或节点 CIDR 地址块。因此,您必须转换所有 CIDR 地址块。

说明:

  • 如需转换 GKE 集群中的所有 CIDR 地址块,您需要实现图 3 所示的架构。

    GKE 集群中所有 CIDR 地址块的 NAT。(如需支持屏幕阅读功能的 PDF 版本,请点击图片。)
    图 3. GKE 集群中所有 CIDR 地址块的 NAT。(如需支持屏幕阅读功能的 PDF 版本,请点击图片。)

    此架构由几个部分组成:

    • 用于描述与 NAT 相关的 CIDR 地址块特征的新术语。
    • 重复使用的 RFC 1918 CIDR 地址块。
    • 具有共享网络的主机 VPC。
    • 称作隔离的 VPC 的服务 VPC,它包含 GKE 集群。
    • 称作隔离的 VPC 网关的 Compute Engine 实例,该实例执行 NAT,并且在隔离的 VPC 和主机 VPC 中都具有网络接口。
    • 内部负载平衡器 CIDR 地址块的概念。
    • 两个 VPC 中的静态路由,用于正确地定向流量。
    • 在本地连接上进行过滤。

优点:

  • 减少 IPv4 地址分配障碍。
  • 可扩展至受支持的最大集群。
  • 允许对多个集群进行批量复制。
  • 将重复使用的 RFC 1918 CIDR 地址块与全局路由表很好地隔离开来。
  • 仍可进行网络端点组配置。

缺点:

  • 比之前的解决方案更加复杂。
  • NAT 引入了需要解决的新问题,例如地址网络共享和日志记录等。
  • 在某些部署中无法实现多集群 Istio 网状网。

其他问题:

  • 请谨慎选择要对 GKE CIDR 地址块重复使用哪些 RFC 1918 CIDR 地址块。
  • 请勿向本地网络通告重复使用的 RFC 1918 CIDR 地址块。

后续步骤