选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

优化 IP 地址利用率

聚焦模式
优化 IP 地址利用率 - Amazon EKS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

得益于应用程序现代化,容器化环境的规模正在快速增长。这意味着部署的工作节点和 Pod 越来越多。

Amazon VPC CNI 插件为每个容器分配一个来自 VPC 的 CIDR 的 IP 地址。这种方法通过 VPC 流日志和其他监控解决方案等工具提供 Pod 地址的全面可见性。根据您的工作负载类型,这可能会导致 Pod 消耗大量的 IP 地址。

在设计 AWS 网络架构时,在 VPC 和节点级别优化 Amazon EKS IP 使用非常重要。这将帮助您缓解 IP 耗尽问题并增加每个节点的 pod 密度。

在本节中,我们将讨论可以帮助您实现这些目标的技术。

优化节点级 IP 消耗

前缀委派是亚马逊虚拟私有云(Amazon VPC)的一项功能,允许您为亚马逊弹性计算云(亚马逊 EC2)实例分配 IPv4 或添加 IPv6 前缀。它增加了每个网络接口 (ENI) 的 IP 地址,从而提高了每个节点的 pod 密度并提高了计算效率。自定义网络还支持前缀委托。

有关详细信息,请参阅 Linux 节点的前缀委派和使用 Windows 节点的前缀委派部分。

缓解 IP 耗尽问题

为防止您的集群消耗所有可用 IP 地址,我们强烈建议您在调整 VPCs 和子网时考虑增长。

采用IPv6是从一开始就避免这些问题的好方法。但是,对于可扩展性需求超过初始规划且无法采用的组织 IPv6,建议改进 VPC 设计是应对 IP 地址耗尽的应对措施。Amazon EKS 客户最常用的技术是向 VPC 添加不可路由的辅助 CIDRs 服务器,并将 VPC CNI 配置为在为 Pod 分配 IP 地址时使用此额外的 IP 空间。这通常被称为自定义网络

我们将介绍您可以使用 Amazon VPC CNI 的哪些变量来优化 IPs 分配给节点的热池。在本节结束时,我们将介绍一些其他架构模式,这些模式不是 Amazon EKS 固有的,但可以帮助缓解 IP 耗尽。

采用 IPv6 是解决这些 RFC1918 限制的最简单方法;我们强烈建议您在选择网络架构时考虑 IPv6 将其作为首选。 IPv6 提供了明显更大的总 IP 地址空间,集群管理员可以专注于迁移和扩展应用程序,而不必花精力绕过 IPv4 限制。

Amazon EKS 集群同时支持 IPv4 和 IPv6。默认情况下,EKS 集群使用 IPv4 地址空间。在创建集群时指定 IPv6 基于的地址空间将允许使用 IPv6。在 E IPv6 KS 集群中,Pod 和服务在接收 IPv6 地址的同时保持传统 IPv4 终端节点连接到 IPv6 集群上运行的服务的能力,反之亦然。集群内的所有 pod-to-pod通信总是通过终止进行 IPv6的。在 VPC (/56) 中, IPv6 子网的 IPv6 CIDR 块大小固定为 /64。这提供了 2^64(大约 18 万亿) IPv6 地址,允许您在 EKS 上扩展部署。

有关详细信息,请参阅 “运行 IPv6 EKS 集群” 部分;要获得实践经验,请参阅 “动手实践” IPv6 研讨会的 “了解 Amaz IPv6 on EKS” 部分。

EKS 集群处于 IPv6 模式中

优化 IPv4 集群中的 IP 消耗

本节专门针对正在运行传统应用程序和/或尚未准备好迁移到的客户 IPv6。虽然我们鼓励所有组织 IPv6 尽快迁移到,但我们认识到,有些组织可能仍需要考虑其他方法来扩展其容器工作负载 IPv4。因此,我们还将引导您了解架构模式,以优化 IPv4 (RFC1918) Amazon EKS 集群的空间消耗。

为增长做好计划

作为防止 IP 耗尽的第一道防线,我们强烈建议在考虑增长的情况下调整 IPv4 VPCs 和子网规模,以防止您的集群消耗所有可用 IP 地址。如果子网没有足够的可用的 IP 地址,您将无法创建新的 Pod 或节点。

在构建 VPC 和子网之前,建议从所需的工作负载规模向后移动。例如,使用 eksctl(用于在 EKS 上创建和管理集群的简单 CLI 工具)构建集群时,默认情况下会创建 19 个子网。/19 的网络掩码适用于允许分配超过 8000 个地址的大多数工作负载类型。

重要

在调整子网大小 VPCs 时,可能会有许多元素(Pod 和节点除外)会消耗 IP 地址,例如负载均衡器、RDS 数据库和其他 vpc 内服务。

此外,Amazon EKS 可以创建多达 4 个弹性网络接口 (X-ENI),这些接口是允许与控制平面通信所必需的(更多信息请点击此处)。在集群升级期间,Amazon EKS 会创建新的 X-,ENIs 并在升级成功后删除旧的 X。因此,对于与 EKS 集群关联的子网,我们建议网络掩码至少为 /28(16 个 IP 地址)。

您可以使用 EKS 子网计算器电子表格样本来规划您的网络。该电子表格根据工作负载和 VPC ENI 配置计算 IP 使用情况。将 IP 使用情况与 IPv4 子网进行比较,以确定配置和子网大小是否足以应付您的工作负载。请记住,如果您的 VPC 中的子网用完了可用 IP 地址,我们建议使用 VPC 的原始 CIDR 块创建一个新子网。请注意,现在 Amazon EKS 允许修改集群子网和安全组

自定义网络

如果您即将耗尽 RFC1918 IP 空间,则可以使用自定义网络模式通过在专用的额外子网内调度 Pod IPs 来节省可路由性。虽然自定义网络将接受辅助 CIDR 范围的有效 VPC 范围,但我们建议您使用 CG-NAT 空间中的 CIDRs (/16),也就是说100.64.0.0/10,与范围相比,这些空间在企业环境中使用的可能性要小。198.19.0.0/16 RFC1918

有关详细信息,请参阅 “自定义网络” 的专用部分。

自定义网络

增强的子网发现

增强型子网发现通过标记新子网,使 Amazon VPC CNI 可以发现这些子网,从而为 IP 耗尽提供了一种简化的网络配置替代方案。借助增强型子网发现,当前的工作负载可以在相同的子网上继续运行,Amazon Elastic Kubernetes Service (Amazon EKS) 现在可以在新的 “可用子网” 上安排更多容器。

如果您的集群当前子网的 IP 地址已用完,则只需按如下方式向 Amazon EKS 集群添加其他子网即可:

  1. 将新的 CIDR 块关联到您的 VPC。

  2. 在新的 CIDR 块中创建一个新的子网,并用 “kubernetes” 对其进行标记。 io/role/cni” = “1"。

  3. 将 Amazon VPC CNI 插件的 ENABLE_SUBNET_DISCOVERY 配置设置为 “true”(自版本 1.18.0 起默认)。

在您的 VPC 和 Amazon EKS 集群上启用增强型子网发现后,新的弹性网络接口 (ENIs) 将连接到您的 Amazon EKS 节点,如下图所示:

增强的子网发现

有关更多信息,请参阅 AWS 容器博客上的 Amazon VPC CNI 推出增强型子网发现

优化 IPs 温水池

在默认配置下,VPC CNI 将整个 ENI(和关联的 IPs)保留在温池中。这可能会消耗大量的 IPs,尤其是在较大的实例类型上。

如果您的集群子网可用的 IP 地址数量有限,请仔细检查以下 VPC CNI 配置环境变量:

  • WARM_IP_TARGET

  • MINIMUM_IP_TARGET

  • WARM_ENI_TARGET

您可以将的值配置MINIMUM_IP_TARGET为与您期望在节点上运行的 Pod 数量非常匹配。这样做可以确保在创建 Pod 时,CNI 无需调用 EC2 API 即可从温池中分配 IP 地址。

请注意,将值设置WARM_IP_TARGET得太低会导致对 EC2 API 的额外调用,这可能会导致请求受到限制。对于大型集群,使用和MINIMUM_IP_TARGET以避免限制请求。

要配置这些选项,您可以下载aws-k8s-cni.yaml清单并设置环境变量。在撰写本文时,最新版本位于此处。检查配置值的版本是否与已安装的 VPC CNI 版本相匹配。

警告

更新 CNI 时,这些设置将重置为默认值。在更新 CNI 之前,请对其进行备份。查看配置设置以确定更新成功后是否需要重新应用这些设置。

您可以即时调整现有应用程序的 CNI 参数,而无需停机,但您应该选择能够满足您的可扩展性需求的值。例如,如果您使用的是批处理工作负载,我们建议您更新默认工作负载WARM_ENI_TARGET以满足 Pod 规模的需求。设置WARM_ENI_TARGET为较高的值将始终保持运行大批量工作负载所需的热 IP 池,从而避免数据处理延迟。

警告

改进 VPC 设计是应对 IP 地址耗尽的建议措施。考虑诸如 IPv6 和次要之类的解决方案 CIDRs。在排除其他选项之后,调整这些值以最大限度地减少 Warm 的数量 IPs 应该是一种临时解决方案。错误配置这些值可能会干扰群集操作。在对生产系统进行任何更改之前,请务必查看此页面上的注意事项。

监控 IP 地址清单

除了上述解决方案外,了解 IP 利用率也很重要。您可以使用 CNI 指标助手监控子网的 IP 地址清单。一些可用的指标是:

  • 集群可以支持的最大数量 ENIs

  • ENIs 已分配的数量

  • 当前分配给 Pod 的 IP 地址数量

  • 可用 IP 地址的总数和最大数量

您还可以设置CloudWatch 警报,以便在子网的 IP 地址用完时收到通知。

警告

确保 VPC CNI 的DISABLE_METRICS变量设置为 false。

进一步的考虑

还有其他不是 Amazon EKS 固有的架构模式可以帮助解决 IP 耗尽问题。例如,您可以优化跨多个账户的通信 VPCs或在多个账户之间共享 VPC,以限制 IPv4 地址分配。

在此处了解有关这些模式的更多信息:

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。