本页面介绍了 Google Kubernetes Engine (GKE) IP 地址利用率的网络分析器数据分析。如需了解所有数据分析类型,请参阅数据分析组和类型。
在 Recommender API 中查看数据分析
如需在 gcloud CLI 或 Recommender API 中查看这些数据分析,请使用以下数据分析类型:
google.networkanalyzer.container.ipAddressInsight
您需要以下权限:
recommender.networkAnalyzerGkeIpAddressInsights.list
recommender.networkAnalyzerGkeIpAddressInsights.get
如需详细了解如何使用 Recommender API 获取网络分析器数据分析,请参阅使用 Recommender CLI 和 API。
GKE Pod 范围分配率较高
此数据分析表明,GKE 集群的 Pod 地址范围中的 IP 地址利用率高于 80%。根据集群是创建为 VPC 原生集群还是基于路由的集群,GKE Pod 的 IP 地址分配政策会有所不同。
基于路由的集群
在 GKE 中,可以根据集群将流量从一个 Pod 路由到另一个 Pod 的方式来区分集群。使用 Google Cloud 路由的集群称为“基于路由的集群”。如需了解详情,请参阅创建基于路由的集群。
基于路由的集群具有一个用于 Pod 和服务的 IP 地址范围。虽然该范围同时用于 Pod 和服务,但它称为“Pod 地址范围”。
Pod 地址范围的最后一个 /20
用于服务。一个 /20
范围包含 212 = 4096
个地址。因此,4096
个地址用于服务,而该范围的其余地址用于 Pod。
Pod 地址范围的每个节点都有一个用于 Pod 的 /24
IP 地址范围。一个 /24
范围包含 28 = 256
个地址。回想一下,Pod 地址范围中有 4096
个地址用于服务。Pod 地址范围的剩余部分用于 Pod,并且大小必须足以容纳节点数 x 256 得出的地址数目。
Pod 地址范围的分配比率按以下公式计算:
例如,您计划创建一个 900
节点集群。那么您需要有 900 x 256 = 230,400
个地址用于 Pod。现在假设您的 Pod 地址范围为 /14
。一个 /14
范围包含 218 = 262,144
个地址。减去用于服务的 4096
个地址后,您还有 258,048
个地址,这足以支持 900
个节点。
VPC 原生集群
在 GKE 中,可以根据集群将流量从一个 Pod 路由到另一个 Pod 的方式来区分集群。使用别名 IP 地址范围的集群称为“VPC 原生集群”。如需了解详情,请参阅 VPC 原生集群。
在 VPC 原生集群中创建节点池时,您可以选择次要 IP 地址范围来为 GKE Pod 分配 IP。不同的节点池可以使用不同的次要范围来分配 Pod IP 地址。如需了解详情,请参阅多 Pod CIDR。网络分析器会计算用于为给定集群分配 Pod IP 地址的每个次要 IP 地址范围的分配率。如果总体分配率大于 80%,则会生成高利用率数据分析。
单个次要 IP 地址范围的分配比率按以下公式计算:
例如,/24
次要 Pod 范围可以支持 256
个 Pod。如果只有 1
个节点正在运行默认的 max_pods_per_node
、110
和 16
Pod,则比率会显示 100% (256/256
),而不是 6.25% (16/256
),因为即使有 240
个 Pod IP 地址未被使用,它们仍属于此节点。仅当有 256
个未使用的 Pod IP 地址时,才能成功创建另一个新节点。
总体分配率按以下公式计算:
例如,如果默认 Pod IP 地址和额外的 Pod IPv4 地址范围设置为 /22
并且有 2
个节点池,一个节点池使用默认的 Pod IP 地址范围且有 3
个节点,而第二个节点池使用额外的 Pod IP 地址范围且也有 3
个节点,并且默认 Pod 数上限设置为 110
。Kubernetes 会为集群上的节点分配 /24
CIDR 范围。有 6
个节点并分配 /24
CIDR 范围后,总共有 256 * 6 = 1536
个 IP 地址。这是两个 Pod IP 地址范围 (1024 * 2 = 2048
) 中可用 IP 地址总数的 75%。
请务必注意,如果次要 IP 地址在不同集群之间共享,则数据分析会显示所有集群的聚合总值。如需查看单个集群 IP 地址范围利用率,您可以运行 gcloud container cluster describe CLUSTER_NAME
来查看每个次要 IP 地址利用率状态。将 CLUSTER_NAME
替换为集群的名称。
相关主题
建议
- 对于基于路由的集群,如果您需要在此集群中创建其他节点池并用尽空间,请使用更大的 Pod 地址范围大小重新创建此集群。
- 对于 VPC 原生集群,请使用更大的 Pod IP 地址范围创建未来的节点池。
- 减少 Pod 数上限。
- 如要添加其他 Pod IPv4 地址范围,请为 Standard 集群和 Autopilot 集群使用多 Pod CIDR。
GKE Pod 范围分配限制自动扩缩
此数据分析表明,集群的 Pod IP 地址范围没有足够的地址,无法支持在所有节点池中创建最大数量的节点。“数据分析详细信息”页面包含一个表,其中展示了 GKE 集群的每个 Pod IP 地址范围中当前使用的 Pod IP 地址数量和最大 Pod IP 地址数量。
当完全自动扩缩的 IP 地址利用率值超过 100% 时,网络分析器会生成此数据分析。
当支持集群中最大节点数所需的 Pod IP 地址数量超过集群的 Pod IP 地址范围中的 IP 地址数量时,完全自动扩缩的 IP 地址利用率值会超过 100%。集群中最大节点数是集群的每个节点池中最大节点数的总和 (maxNodeCount)。
完全自动扩缩的 IP 地址利用率值是使用 GKE Pod 范围分配率较高中的公式计算得出的。
基于路由的集群
当 Pod 地址范围的分配比率超过 100% 且所有节点池都完全自动扩缩时,系统会生成此数据分析。由于缺少 IP 地址空间,系统不会创建 GKE 节点。
VPC 原生集群
如果用于分配 Pod IP 地址的任何次要 IP 地址范围没有足够的未分配的 IP 地址空间,则系统会生成此数据分析。IP 地址空间不足无法处理所有节点池完全自动扩缩的情况。
相关主题
如需了解详情,请参阅 GKE 网络的最佳实践和集群自动扩缩器限制。
建议
- 对于基于路由的集群,请使用更大的 Pod 地址范围重新创建集群。将此集群创建为 VPC 原生集群,因为这是推荐的网络模式。请参阅 VPC 原生集群和基于路由的集群。
- 对于 VPC 原生集群,请通过使用多 Pod CIDR 向集群级层添加其他 Pod 范围,并启用节点自动预配,以通过 Pod IP 地址自动分配来自动扩缩节点。如果您想更好地控制哪些 Pod IP 地址用于哪个节点池,您可以使用多 Pod CIDR 创建使用特定次要 IP 地址范围的节点池;但此方法仅适用于 Standard 集群。