本文档是面向网络架构师的系列文章中的一篇。该系列介绍了 IPv4 地址紧缺的组织可用的 Google Kubernetes Engine (GKE) 地址管理方案。
该系列包含以下部分:
- 简介和概览
- IPv4 地址优化(本文档)
- GKE Pod CIDR 地址块的 NAT(网络地址转换)
- 为 GKE Pod CIDR 地址块配置 NAT
- 所有 GKE CIDR 地址块的 NAT
- 为所有 GKE CIDR 地址块配置 NAT
- 为 NAT 日志记录配置 ULOGD2 和 Cloud SQL
- 为 GKE 配置专用公共 IP 地址
本文档描述了确定 GKE CIDR 地址块需求的过程,然后介绍了一种决策模型,可帮助您确定为某些特定场景推荐哪种解决方案。最后,本文档简要介绍了各种解决方案,并列出了其相应的优缺点。
确定 GKE CIDR 地址块需求
本部分将确定集群的 CIDR 地址块大小。 正确执行此步骤非常重要,因为一旦创建集群,您就无法再更改或扩展 CIDR 地址块。
确定节点 CIDR 地址块大小
如需确定节点 CIDR 地址块大小,请按以下步骤操作:
确定集群在整个生命周期内所需的最大节点数。
如果您可以根据客户的应用、设计和增长预测情况确定此数值,请将其用作所需的节点数。如果您无法确定所需的最大节点数,请将 5000 个节点的配额上限用作最大值。
针对所需节点数确定帐号需要的主机位数。
如果您知道所需节点计数,可以使用表 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.节点地址所需的位数。
使用您在上一步中确定的节点的主机位数列中的数字生成 CIDR 地址块网络掩码:
32 - 节点的主机位数 = 节点 CIDR 地址块网络掩码
下图以图形方式展示了此等式。
例如,对于拥有 5000 个节点的集群,表 1 显示节点网络掩码中需要 13 个节点主机位。如需计算完整的网络掩码,请替换等式中节点的主机位数,即 32 - 13 = 19。结果显示网络掩码为
/19
。
确定 Pod CIDR 地址块大小
如需确定 Pod CIDR 地址块大小,请按以下步骤操作:
确定集群在整个生命周期内所需的每个节点的最大 Pod 数。
如果您可以根据具体应用确定此数值,可将其用作每个节点所需的 Pod 数。如果您无法确定所需的最大数,请将每个节点 110 个 Pod 的配额上限用作最大值。
确定所需 Pod 数需要的主机位数。
如果您知道每个节点所需的 Pod 数,可以使用表 2 来计算生成网络掩码所需的主机位数。在每个节点的 Pod 计数列中找到每个节点所需的 Pod 数。在下一步中,使用节点的主机位数列中对应的数字。
每个节点的 Pod 计数 Pod 的主机位数 1–8 4 9–16 5 17–32 6 33–64 7 65–110 8 表格 2.每个节点的 Pod 所需的位数。
使用您在第二步(即确定节点 CIDR 地址块大小部分)中确定的节点的主机位数,以及在上一步中确定的 Pod 的主机位数,生成 CIDR 地址块网络掩码:
32 -(节点的主机位数 + Pod 的主机位数)= Pod CIDR 地址块网络掩码
下图以图形方式展示了此等式。
例如,如果每个节点需要 110 个 Pod,则每个节点需要 Pod 的 8 个主机位。然后,取节点的主机位数 (13),并将这些数字带入等式,即 32 - (13 + 8) = 11。结果显示网络掩码为
/11
。
确定集群 IP CIDR 地址块大小
如需确定集群 IP 地址的 CIDR 地址块大小,请按以下步骤操作:
确定集群在整个生命周期内所需的最大集群 IP 地址数。
如果您可以根据具体应用确定此数值,可将其用作所需的集群 IP 地址数。如果您无法确定所需的最大数,请使用默认的
/20
网络掩码。如果使用默认网络掩码,则可跳过以下步骤。确定集群 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 地址块需求确定最佳解决方案。查看解决方案部分概述了各个解决方案。
查看解决方案
本部分介绍了各个解决方案及其使用场景,并汇总了各自的优缺点及其他问题。
分配可用的地址空间
何时使用:
- 在查看可用的 IP 地址空间并完成图 1 中的流程后,您已确定有足够的 RFC 1918 地址空间可分配供集群 CIDR 地址块使用。例如,虽然
10.0.0.0/8
地址可能已用完,但172.16.0.0/12
或192.168.0.0/16
地址空间中还有空间足以满足 CIDR 地址块需求。
说明:
- 此解决方案无需执行其他特殊配置步骤;请分配地址空间并继续安装。
优点:
- 最简单的解决方案。
- 无需特殊配置。
缺点:
- 会耗尽可用的 IP 地址空间。
其他问题:
- 为了确保优化您的 IP 地址分配,请使用灵活的 Pod CIDR 功能。
转换 GKE Pod CIDR 地址块
何时使用:
- 在查看可用的 IP 地址空间并完成图 1 中的流程后,您已确定有足够的 RFC 1918 地址空间可分配给节点地址块,但没有足够的空间供集群 CIDR 地址块使用。因此,您必须转换 Pod(可能还要转换服务)CIDR 地址块。
说明:
如需转换 GKE 集群中的 Pod CIDR 地址块,请实现
ip-masquerade-agent
功能,如图 2 所示。此功能会隐藏节点 IP 地址后面的 Pod IP 地址。通过这种设计,还可以对服务 CIDR 地址块重复使用 CIDR 地址块。图 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 所示的架构。
图 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 地址块。
后续步骤
- 如需更好地了解本文档中的基础技术,请参阅以下标准参考文档:
- 探索有关 Google Cloud 的参考架构、图表、教程和最佳做法。查看我们的 Cloud Architecture Center。