AWS Fargate 集群无法使用 NAT 和 Internet 网关访问 Internet [关闭]

Posted

技术标签:

【中文标题】AWS Fargate 集群无法使用 NAT 和 Internet 网关访问 Internet [关闭]【英文标题】:AWS Fargate Cluster unable to access Internet with NAT and Internet Gateways in place [closed] 【发布时间】:2021-01-31 00:15:12 【问题描述】:

我正在尝试将容器部署到 AWS 上的私有网络 Fargate 集群。我的单个 VPC 上确实有一个 Internet 网关:

而且我的集群/服务所在的 VPC 中的特定子网确实有一个 NAT 网关:

该子网的路由似乎也可以:

并且该服务的安全组不会阻止任何传入连接:

但我的容器甚至没有以臭名昭著的异常开始:CannotPullContainerError: Error response from daemon:Get https://registry-name/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 为什么?谢谢。

【问题讨论】:

【参考方案1】:

您没有将子网配置为使用 NAT 网关。您的路由表当前将流量直接发送到 IGW,这使子网成为公共子网,而不是私有子网,这意味着该子网中的任何内容都需要分配一个公共 IP。与其他资源位于同一子网中的 NAT 网关不会神奇地为这些资源提供 Internet 访问权限,您必须适当地配置路由表。

您的网络需要这样配置:

公共子网:

已连接 IGW NAT 网关 需要从 Internet 访问的任何其他公共资源,例如公共负载平衡器。

私有子网:

到公有子网中 NAT 网关的路由。 没有通往 IGW 的路线。

【讨论】:

谢谢,您能具体说明一下我需要做什么吗?我有点困惑,因为我以为我只有私有子网。 您需要在您的 VPC 中创建 2 组子网,公有和私有。公共子网是通过 Internet 网关直接路由到 Internet 的子网。这就是你目前所拥有的。要使用 Internet 网关,资源需要分配给它的公共 IP,然后它可以使用其公共 IP 通过 IGW 直接访问 Internet。然后创建一些私有子网。私有子网是没有附加 IGW 的子网。私有子网使用到 NAT 网关的路由来提供对其内部资源的传出 Internet 访问。 我明白了。那么在那个子网上有igw而没有服务的公网IP地址就注定要下线了? @HasanCanSaral 是的。在那种情况下,该资源只能访问 VPC 中的资源,而永远不能访问 VPC 之外的任何内容。

以上是关于AWS Fargate 集群无法使用 NAT 和 Internet 网关访问 Internet [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

AWS Fargate 无法通过负载均衡器/公共 IP 访问 dockerized spring boot 应用程序

AWS Fargate 上的扩展和扩展如何工作?

如何将 AWS-Fargate 用作 Python 脚本

外部机密无法从私有集群访问 AWS STS

AWS ECS Fargate 任务的静态出站 IP

无法使用 Fargate 连接到 AWS 网络负载均衡器