GKE IP 地址利用率数据分析

本页面介绍了 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 地址范围的分配比率按以下公式计算:

$\frac{\text {GKE 节点数} \times {256}}{\text {Pod 地址范围大小}-{4096}}$

例如,您计划创建一个 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 地址范围的分配比率按以下公式计算:

$\frac{\text {次要范围中分配给节点的 IP 地址数}}{\text {次要范围大小}}$

例如,/24 次要 Pod 范围可以支持 256 个 Pod。如果只有 1 个节点正在运行默认的 max_pods_per_node11016 Pod,则比率会显示 100% (256/256),而不是 6.25% (16/256),因为即使有 240 个 Pod IP 地址未被使用,它们仍属于此节点。仅当有 256 个未使用的 Pod IP 地址时,才能成功创建另一个新节点。

总体分配率按以下公式计算:

$\frac{\text {用于分配 Pod IP 地址的所有次要 IP 地址范围中的已分配 IP 总和}}{\text {用于分配 Pod IP 地址的次要 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 替换为集群的名称。

建议

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 集群。