从私有子网中的 EKS 工作节点访问 AWS Load Balancer

AWS LoadBalancer access from EKS worker nodes in provate subnets

我有一个 EKS 集群,其工作节点位于私有子网中。工作节点可以通过 nat 网关访问互联网。我有一个 Route53 托管区域记录路由流量(别名)到负载均衡器。

当我尝试从 EKS 集群中的 pod 访问 url(route53 记录)时,超时。我尝试在负载均衡器安全组的入站规则中允许工作节点安全组,但它不起作用。唯一可行的是,如果我在负载均衡器安全组的入站规则中允许 nat 网关的 public IP。

我相信这种设置很常见。我的问题是,在 LB SG 的入站规则中允许 nat 网关 public ip 的解决方案是正确的方法还是有更好更清洁的方法来允许访问?

根据您在此处的描述,您似乎有一个面向 Internet 的负载均衡器并试图从 pod 访问它。在这种情况下,流量需要流出到互联网(通过 nat 网关)并返回到负载均衡器,这就是为什么只有当您将 nat 网关的 public IP 添加到负载均衡器的 SG 时它才有效。 现在,就解决方案而言,这取决于您在这里尝试做什么:

  • 如果您只需要使用集群内的服务,您可以使用集群内为该服务创建的DNS 名称。在这种情况下,流量将留在集群内。你可以阅读更多 here
  • 如果您需要使服务可用于其他集群但同一个VPC,您可以使用私有负载均衡器并将工作节点的安全组添加到负载均衡器SG。
  • 如果服务需要暴露在 Internet 上,那么您的解决方案可以工作,但您必须向访问该服务的所有 public IP 打开 public 负载均衡器的 SG。