

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 为带前缀的 Amazon EKS 节点分配更多 IP 地址
<a name="cni-increase-ip-addresses"></a>

 **适用于**：带有 Amazon EC2 实例的 Linux 和 Windows 节点

 **适用于**：公有子网和私有子网

每个 Amazon EC2 实例支持最大数量的弹性网络接口以及可分配给每个网络接口的最大数量的 IP 地址。每个节点的每个网络接口都需要一个 IP 地址。可以将所有其他可用 IP 地址分配给 `Pods`。每个都 `Pod` 需要自己的 IP 地址。因此，您的节点可能有可用的计算和内存资源，但无法容纳其它 `Pods`，因为该节点已用完分配给 `Pods` 的 IP 地址。

您可以通过分配 IP 前缀而不是为节点分配单个辅助 IP 地址来显著增加节点可以分配给 `Pods` 的 IP 地址数量。每个前缀都包含多个 IP 地址。如果没有为集群配置 IP 前缀分配，则集群必须进行更多 Amazon EC2 应用程序编程接口（API）调用才能配置容器组（pod）连接所需的网络接口和 IP 地址。随着集群规模的扩大，这些 API 调用的频率可能会导致容器组（pod）和实例启动时间延长。这会导致扩展延迟以满足大型和尖峰工作负载的需求，并增加成本和管理开销，因为您需要配置额外的集群和 VPC 来满足扩展需求。有关更多信息，请参阅 GitHub 上的[Kubernetes 可扩展性阈值](https://github.com/kubernetes/community/blob/master/sig-scalability/configs-and-limits/thresholds.md)。

## 与适用于 Kubernetes 的 Amazon VPC CNI 插件功能的兼容性
<a name="cni-increase-ip-addresses-compatability"></a>

可以将 IP 前缀用于以下功能：
+ IPv4 源网络地址转换 - 有关更多信息，请参阅 [为容器组（pod）启用出站互联网访问权限](external-snat.md)。
+ 集群、容器组（pod）和服务的 IPv6 地址 - 有关更多信息，请参阅 [了解如何将 IPv6 地址分配给集群、容器组（pod）和服务](cni-ipv6.md)。
+ 使用 Kubernetes 网络策略限制流量 – 有关更多信息，请参阅[通过 Kubernetes 网络策略限制容器组（pod）流量](cni-network-policy.md)。

以下列表提供了适用的 Amazon VPC CNI 插件设置的相关信息。有关各项设置的更多信息，请参阅 GitHub 上的 [amazon-vpc-cni-k8s](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/README.md)。
+  `WARM_IP_TARGET` 
+  `MINIMUM_IP_TARGET` 
+  `WARM_PREFIX_TARGET` 

## 注意事项
<a name="cni-increase-ip-addresses-considerations"></a>

在使用此功能时，请考虑以下几点：
+ 每种 Amazon EC2 实例类型支持最大数量的容器组（pod）。如果托管节点组由多种实例类型组成，则集群中某个实例的最大容器组（pod）数量的最小值将应用于集群中的所有节点。
+ 默认情况下，可以在节点上运行的最大 `Pods` 数量为 110，但您可以更改该数字。如果您更改该数量并且有现有的托管节点组，则节点组的下一次 AMI 或启动模板更新会导致新节点出现时使用更改后的值。
+ 从分配 IP 地址过渡到分配 IP 前缀时，建议您创建新的节点组以增加可用 IP 地址的数量，而不是滚动替换现有节点。在同时分配 IP 地址和前缀的节点上运行容器组（pod）可能会导致通告的 IP 地址容量不一致，从而影响节点上未来的工作负载。有关执行过渡的建议方法，请参阅《Amazon EKS Best Practices Guide》**中的 [Prefix Delegation mode for Linux](https://docs.amazonaws.cn/eks/latest/best-practices/prefix-mode-linux.html)。
+ 安全组范围在节点级别 - 有关更多信息，请参阅[安全组](https://docs.amazonaws.cn/vpc/latest/userguide/VPC_SecurityGroups.html)。
+ 分配给网络接口的 IP 前缀支持在每个节点上运行更高密度的容器组（pod），并且实现最短的启动时间。
+ IP 前缀和 IP 地址与标准 Amazon EC2 弹性网络接口相关联。需要特定安全组的容器组被分配给分支网络接口的主 IP 地址。您可以将获取 IP 地址或从 IP 前缀获取 IP 地址的容器组（pod）与在同一节点上获取分支网络接口的容器组（pod）混合使用。
+ 仅适用于具有 Linux 节点的集群。
  + 将附加组件配置为向网络接口分配前缀后，将无法在不删除集群所有节点组中的所有节点的情况下将适用于 Kubernetes 附加组件的 Amazon VPC CNI 插件降级到 `1.9.0`（或 `1.10.1`）以下版本。
  + 如果容器组（pod）在与 VPC 外部的端点通信的同时使用了容器组（pod）的安全组（`POD_SECURITY_GROUP_ENFORCING_MODE`=`standard` 和 `AWS_VPC_K8S_CNI_EXTERNALSNAT`=`false`），则使用节点的安全组，而不是分配给容器组（pod）的任何安全组。

    如果您的 `Pods` 在与 VPC 外部的端点通信的同时使用了[容器组（pod）的安全组](security-groups-for-pods.md)（`POD_SECURITY_GROUP_ENFORCING_MODE`=`strict`），则使用 `Pod’s` 安全组。