

 **帮助改进此页面** 

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

# 了解 EKS 自动模式下的 VPC 联网和负载均衡
<a name="auto-networking"></a>

本主题介绍如何在 EKS 自动模式下配置虚拟私有云（VPC）联网和负载均衡功能。虽然 EKS 自动模式会自动管理大多数联网组件，但您仍然可以通过 `NodeClass` 资源和负载均衡器注释来自定义集群联网配置的某些方面。

使用 EKS 自动模式时，AWS 会管理集群的 VPC 容器网络接口（CNI）配置和负载均衡器预置。您可以通过定义 `NodeClass` 对象并对服务和 Ingress 资源应用特定的注释来影响联网行为，同时保持 EKS 自动模式提供的自动运行模式优势。

## 联网功能
<a name="_networking_capability"></a>

EKS 自动模式具有一个能够处理节点和容器组（pod）联网的新联网功能。您可以通过创建 `NodeClass` Kubernetes 对象来对其进行配置。

以前的 AWS VPC CNI 配置选项不适用于 EKS 自动模式。

### 使用 `NodeClass` 配置联网
<a name="_configure_networking_with_a_nodeclass"></a>

借助 EKS 自动模式中的 `NodeClass` 资源，您可以自定义联网功能的某些方面。通过 `NodeClass`，您可以指定安全组选择，控制 VPC 子网中的节点放置，设置 SNAT 策略，配置网络策略以及启用网络事件日志记录。这种方法既可保持 EKS 自动模式的自动化运行模式，同时又可灵活自定义网络。

您可以使用 `NodeClass` 来：
+ 选择节点的安全组
+ 控制节点在 VPC 子网上的放置方式
+ 将节点 SNAT 策略设置为 `random` 或 `disabled` 
+ 启用 Kubernetes *网络策略*，包括：
  + 将网络策略设置为“默认拒绝”或“默认允许”
  + 启用将网络事件日志记录到文件。
+ 通过将容器组（pod）连接到不同的子网，将容器组（pod）流量与节点流量隔离开来。

了解如何[创建 Amazon EKS 节点类](create-node-class.md)。

### 注意事项
<a name="_considerations"></a>

EKS 自动模式支持下列功能：
+ EKS 网络策略。
+ Kubernetes 容器组的 `HostPort` 和 `HostNetwork` 选项。
+ 公有子网或私有子网中的节点和容器组（pod）。
+ 在节点上缓存 DNS 查询。

EKS 自动模式**不**支持下列功能：
+ 每容器组的安全组（SGPP）。要在自动模式下将不同的安全组应用于容器组（pod）流量，请改用 `NodeClass` 中的 `podSecurityGroupSelectorTerms`。有关更多信息，请参阅 [为容器组（pod）配置独立的子网和安全组](create-node-class.md#pod-subnet-selector)。
+ `ENIConfig` 中的自定义联网。您可以将容器组（pod）放在多个子网中，也可以使用 [为容器组（pod）配置独立的子网和安全组](create-node-class.md#pod-subnet-selector) 专门将它们与节点流量隔离开来。
+ 暖 IP、暖前缀和暖 ENI 配置。
+ 最低 IP 目标配置。
+ 开源 AWS VPC CNI 支持的其他配置。
+ 网络策略配置，例如 conntrack 计时器自定义（默认为 300 秒）。
+ 将网络事件日志导出到 CloudWatch。

### 网络资源管理
<a name="_network_resource_management"></a>

EKS 自动模式通过监控用于网络配置的节点类资源来处理前缀、IP 寻址及网络接口管理。该服务会自动执行多项关键操作：

 **前缀委派** 

EKS 自动模式会默认使用前缀委托（/28 前缀）进行容器组（pod）联网，并维护可根据调度的容器组（pod）数量进行扩展的预定义 IP 热池。检测到容器组（pod）子网碎片时，自动模式会预置辅助 IP 地址（/32）。由于这种默认的容器组（pod）联网算法，自动模式会根据每种实例类型支持的 ENI 和 IP 数量来计算每个节点的最大容器组（pod）数（假设是最坏的碎片化情况）。有关每个实例类型的最大 ENI 和 IP 数量的更多信息，请参阅《EC2 用户指南》中的[每个网络接口的最大 IP 地址数](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AvailableIpPerENI.html)。新一代（Nitro v6 及更高版本）实例系列通常会增加每种实例类型的 ENI 和 IP，自动模式会相应地调整最大容器组（pod）计算。

对于 IPv6 集群，仅使用前缀委派，自动模式始终使用每个节点 110 个容器组（pod）的最大容器组（pod）限制。

 **冷却管理** 

该服务为不再使用的前缀或辅助 IPv4 地址设置了冷却池。冷却时间到期后，这些资源将释放回 VPC。但是，如果容器组（pod）在冷却时间内重复使用这些资源，它们将从冷却池中恢复。

 **IPv6 支持** 

对于 IPv6 集群，EKS 自动模式会在主网络接口上为每个节点预置 `/80` IPv6 前缀。使用时 `podSubnetSelectorTerms`，前缀将在容器组（pod）子网的辅助网络接口上分配。

该服务还可确保对所有网络接口进行适当管理和垃圾回收。

## 负载均衡
<a name="auto-lb-consider"></a>

您可以使用服务和 Ingress 资源上的注释来配置由 EKS 自动模式预置的 AWS 弹性负载均衡器。

有关更多信息，请参阅 [创建 IngressClass 以配置应用程序负载均衡器](auto-configure-alb.md) 或 [使用服务注释配置网络负载均衡器](auto-configure-nlb.md)。

### EKS 自动模式负载均衡的注意事项
<a name="_considerations_for_load_balancing_with_eks_auto_mode"></a>
+ 默认目标模式是 IP 模式，而不是实例模式。
+ EKS 自动模式仅支持网络负载均衡器的安全组模式。
+  AWS 不支持将负载均衡器从自主管理型 AWS 负载均衡器控制器迁移到由 EKS 自动模式管理。
+ 不支持 `TargetGroupBinding` 规范中的 `networking.ingress.ipBlock` 字段。
+ 如果 Worker 节点使用自定义安全组（非 `eks-cluster-sg- ` 命名模式），则集群角色需要额外的 IAM 权限。默认 EKS 托管式策略仅允许 EKS 修改名为 `eks-cluster-sg-` 的安全组。如果没有修改自定义安全组的权限，EKS 将无法添加允许 ALB/NLB 流量到达容器组所需的 Ingress 规则。

#### CoreDNS 注意事项
<a name="dns-consider"></a>

EKS 自动模式不使用传统的 CoreDNS 部署在集群内提供 DNS 解析。相反，自动模式节点利用 CoreDNS 作为系统服务直接在每个节点上运行。如果将传统集群过渡到自动模式，则可以在工作负载移至自动模式节点后，从集群中移除 CoreDNS 部署。

**重要**  
如果您计划维护同时包含自动模式和非自动模式节点的集群，则必须保留 CoreDNS 部署。非自动模式节点依赖传统的 CoreDNS 容器组（pod）进行 DNS 解析，因为它们无法访问自动模式提供的节点级 DNS 服务。