你好,我有空的 AWS ECS 集群,但无法将实例放入其中。我想使用启动模板和自动扩展组,但无法分配创建的 EC2 实例。
问题出现在ecs-agent.log
level=error time=2020-10-17T23:23:37Z msg="Unable to register as a container instance with ECS: RequestError: send request failed\ncaused by: Post \"https://ecs.eu-central-1.amazonaws.com/\": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)" module=client.go
level=error time=2020-10-17T23:23:37Z msg="Error registering: RequestError: send request failed\ncaused by: Post \"https://ecs.eu-central-1.amazonaws.com/\": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)" module=agent.go
笔记:
- 使用 AMI
ami-0eff571a24849e852
- 群集名称:
debug
- 区域是
eu-central-1
- 实例没有公网 IP
- 实例位于
10.10.100.0/24
子网 (10.10.100.14
) 中,并且 VPN 子网是10.10.0.0/16
- 实例可以通过 NAT 实例访问互联网:
[ec2-user@ip-10-10-100-14 ecs]$ ping google.com
PING google.com (216.58.212.142) 56(84) bytes of data.
64 bytes from ams15s21-in-f14.1e100.net (216.58.212.142): icmp_seq=1 ttl=109 time=50.1 ms
64 bytes from ams15s21-in-f142.1e100.net (216.58.212.142): icmp_seq=2 ttl=109 time=40.1 ms
- 外部 DNS 解析正常
[ec2-user@ip-10-10-100-14 ecs]$ nslookup google.com
Server: 10.10.0.2
Address: 10.10.0.2#53
Non-authoritative answer:
Name: google.com
Address: 216.58.212.142
- 为了确保万无一失,我已经从 VPC 和子网创建了实例到 ECS 的端点
- 我已经附加了没有限制的安全组进行测试
ecs.config
:
ECS_CLUSTER=debug
ECS_BACKEND_HOST=
- 我经历过https://aws.amazon.com/.../ecs-agent-disconnected/, 一切都好
- 附加的 IAM 角色具有策略
AmazonEC2ContainerServiceforEC2Role
- ECS 端点已正确解析
[ec2-user@ip-10-10-100-14 ecs]$ nslookup ecs.eu-central-1.amazonaws.com
Server: 10.10.0.2
Address: 10.10.0.2#53
Non-authoritative answer:
Name: ecs.eu-central-1.amazonaws.com
Address: 10.10.100.219
- 安全组,其中实例具有一条规则,并允许来自 NAT 实例所在 sg 的所有流量。(因为我还不能在这里上传图像,所以我必须使用其他提供商) https://ibb.co/kh7tb2J
有没有人有什么建议?
答案1
我已经解决了这个问题。
问题是由 VPC Endpoint 引起的。我将它们放置在错误的子网和安全组中。
我已将它们移至公共子网(NAT 实例旁边) 并与 NAT 实例位于同一组中 (允许来自我的 EC2 所在的 sg 的传入流量)。
根据文档:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/vpc-endpoints.html
附加到 VPC 终端节点的安全组必须允许来自 VPC 私有子网的端口 443 上的传入连接。