

 **帮助改进此页面** 

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

# Amazon EKS 混合节点功能网关
<a name="hybrid-nodes-gateway-overview"></a>

Amazon EKS 混合节点功能网关可在您的 Amazon EKS 集群 VPC 和在 [EKS 混合节点](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-overview.html)上运行的 Kubernetes 容器之间自动联网。通过该网关，无需从 VPC 路由本地容器组（pod）网络，也无需协调网络基础设施更改。该网关可在 VPC 中基于 EC2 的网关节点和本地环境中 Cilium 管理的混合节点之间创建 VXLAN 隧道，并自动维护 VPC 路由表条目，以便流量到达正确的网关实例。

## 使用案例
<a name="hybrid-nodes-gateway-use-cases"></a>

混合节点网关可在 VPC 与本地环境之间实现以下流量功能：
+  **控制面板到 Webhook 的通信**：Kubernetes API 服务器可以访问在混合节点上运行的 Webhook 端点。如果没有网关，则无法从控制面板访问混合节点上的 Webhook，除非将容器组（pod）CIDR 设置为可在本地环境中路由。
+  **云端和本地的容器组（pod）到容器组（pod）的流量**：在 VPC 的 EC2 节点上运行的容器组（pod）可直接与在混合节点上运行的容器组（pod）通信，反之亦然。
+  **AWS 服务与混合容器组（pod）的连接**：应用程序负载均衡器、网络负载均衡器和 Amazon Managed Service for Prometheus 等 AWS 服务可访问在混合节点上运行的容器组（pod）。

## 架构
<a name="hybrid-nodes-gateway-architecture"></a>

两个网关容器组（pod）均作为部署在带标签的 EC2 节点上运行。基于 Kubernetes Lease 的主节点选举决定了哪个容器组（pod）处于活动状态。两个容器组（pod）在启动时都会创建一个 VXLAN 接口，并运行监视 `CiliumNode` 对象的节点协调程序，因此备用实例随时准备在失效转移后的 3 – 5 秒内转发流量。主节点身份变动时，只有主节点特定的操作（VPC 路由表更新和 `CiliumVTEPConfig` 管理）才会转移。

## 工作原理
<a name="hybrid-nodes-gateway-how-it-works"></a>

混合节点网关使用四种机制来实现连接：

 **VXLAN 隧道**：网关在 UDP 端口 8472（Cilium 默认值）上创建带有 VNI 2 的 VXLAN 接口 (`hybrid_vxlan0`)。该网关通过在 VXLAN 接口上对 FDB 条目、ARP 条目和路由进行编程，建立通往每个混合节点的隧道。当混合节点加入或离开集群时，节点控制器会监视 `CiliumNode` 对象并自动添加或移除隧道。

 **VPC 路由表管理**：当网关成为主节点时，它会在指定的 VPC 路由表中创建或替换路由。每条路由都将混合容器组（pod）CIDR 指向主节点的主 ENI，因此发往混合容器组（pod）的 VPC 流量将转发到活动网关实例。

 **Cilium VTEP 集成**：网关创建 `CiliumVTEPConfig` 自定义资源，告知混合节点上的 Cilium 代理将绑定 VPC 的流量发送到何处。该配置包含作为隧道端点的主节点 IP 和 VXLAN 接口 MAC 地址。当混合容器组（pod）向 VPC 地址发送流量时，Cilium 会将其封装在 VXLAN 数据包中并将其发送到网关。

 **主节点选举**：网关将基于 Kubernetes Lease 的主节点选举与主动-备用模式搭配使用。两个网关容器组（pod）在由容器组（pod）反关联性强制执行的不同节点上运行。两个容器组（pod）在启动时都会创建一个 VXLAN 接口，并运行一个节点协调程序，用于维护所有混合节点的 VTEP 条目。主节点执行 VPC 路由表更新和 Cilium VTEP 配置。如果主节点出现故障，则备用实例会检测到租约到期，获取租约，然后运行主节点设置序列。预期的失效转移时间约为 3 – 5 秒。

## 部署模式
<a name="hybrid-nodes-gateway-deployment-model"></a>

混合节点网关在 VPC 中的 EC2 实例上运行，并使用 Helm 图表进行部署。该网关支持以下部署目标：
+  **EKS 自动模式**：可创建 `NodePool` 和 `NodeClass`，它们会自动为网关节点配置正确的标签、污点和源/目标检查配置。这是建议的配置。
+  **EKS 托管节点组**：可创建禁用网关标签、污点和源/目标检查的专用托管节点组，然后在 Helm 值中设置 `autoMode.enabled=false`。

对于所有部署目标，建议至少使用两个节点，以实现高可用性。有关更多信息，请参阅 [开始使用 EKS 混合节点功能的网关](hybrid-nodes-gateway-getting-started.md)。

## 定价
<a name="hybrid-nodes-gateway-pricing"></a>

Amazon EKS 混合节点功能网关不收取额外费用，但您需要支付运行网关的基础设施费用，包括 EC2 实例和 EKS 自动模式管理费（如适用）。有关更多信息，请参阅 [Amazon EKS 定价](https://aws.amazon.com/eks/pricing/)。

## 区域可用性
<a name="hybrid-nodes-gateway-region-availability"></a>

除中国区域外，Amazon EKS 混合节点功能网关已在提供 EKS 混合节点的所有 AWS 区域推出。有关支持的区域的当前列表，请参阅[Amazon EKS 混合节点功能概述](hybrid-nodes-overview.md)。

## 开源
<a name="hybrid-nodes-gateway-open-source"></a>

Amazon EKS 混合节点功能网关代码库为开源。您可以在 [GitHub 存储库](https://github.com/aws/eks-hybrid-nodes-gateway)中查看源代码、报告问题并做出相关贡献。

## 限制和注意事项
<a name="hybrid-nodes-gateway-limitations"></a>

在部署混合节点网关之前，请考虑以下事项：
+  **没有流量加密**：网关创建的 VXLAN 隧道不加密流量。如果您需要在 VPC 和本地环境之间实现传输中加密，请使用加密传输方式，例如带有 MACsec 或 VPN 连接的 AWS Direct Connect。有关更多信息，请参阅 [Amazon EKS 中的数据保护](https://docs.aws.amazon.com/eks/latest/userguide/data-protection.html)。
+  **单个集群**：每个网关部署服务于一个 EKS 集群。如果您有多个带有混合节点的集群，请为每个集群部署一个单独的网关。
+  需要 **Cilium VTEP：网关需要** EKS 版本的 Cilium CNI，并在混合节点上启用 VTEP 支持。不支持其他 CNI 插件。

## 后续步骤
<a name="hybrid-nodes-gateway-next-steps"></a>
+  [开始使用 EKS 混合节点功能的网关](hybrid-nodes-gateway-getting-started.md) 
+  [Amazon EKS 混合节点功能网关配置参考](hybrid-nodes-gateway-configuration.md) 
+  [Amazon EKS 混合节点功能网关操作](hybrid-nodes-gateway-operations.md) 
+  [Amazon EKS 混合节点功能网关问题排查](hybrid-nodes-gateway-troubleshooting.md) 