如何解决AWS Fargate Cluster无法使用NAT和Internet网关访问Internet
我正在尝试将容器部署到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)为什么?谢谢。
解决方法
您没有将子网配置为使用NAT网关。您的路由表当前将流量直接发送到IGW,这使该子网成为公共子网,而不是私有子网,这意味着该子网中的任何内容都需要为其分配一个公共IP。与其他资源位于同一子网中的NAT网关无法神奇地使这些资源访问Internet,您必须适当地配置路由表。
您的网络需要这样配置:
公共子网:
- 附加了IGW
- NAT网关
- 需要从Internet上访问的任何其他公共资源,例如公共负载平衡器。
私有子网:
- 到公共子网中NAT网关的路由。 没有通往IGW的路线。
[此答案仅适用于公共子网]
根据我的经验,您必须为ECS Fargate任务启用自动分配公共IP,因为根据您的配置,它位于公共子网中。缺点是,它也将允许互联网访问您的Fargate Task。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。