3

无法从 Windows 10 PC 使用 eksctl 创建 AWS EKS 集群。这是我正在执行的命令

eksctl create cluster --name revit --version 1.17 --region ap-southeast-2 --fargate

eksctl 版本:0.25.0

AWS CLI 版本:aws-cli/2.0.38 Python/3.7.7 Windows/10 exe/AMD64

执行创建集群命令时出错

2020-08-08T19:05:35+10:00 [ℹ]  eksctl version 0.25.0
2020-08-08T19:05:35+10:00 [ℹ]  using region ap-southeast-2
2020-08-08T19:05:35+10:00 [!]  retryable error (RequestError: send request failed
caused by: Put "http://169.254.169.254/latest/api/token": dial tcp 169.254.169.254:80: connectex: A socket operation was attempted to an unreachable network.) from ec2metadata/GetToken - will retry after delay of 54.121635ms
2020-08-08T19:05:35+10:00 [!]  retryable error (RequestError: send request failed
caused by: Put "http://169.254.169.254/latest/api/token": dial tcp 169.254.169.254:80: connectex: A socket operation was attempted to an unreachable network.) from ec2metadata/GetToken - will retry after delay of 86.006168ms
4

2 回答 2

3

我有同样的错误,我已经摆脱了它,提供我的 AWS 凭证以进行编程访问(AWS 访问密钥 ID、AWS 秘密访问密钥):

$ aws configure

下次我使用eksctl它时,它只是没有尝试自行验证并通过了命令。

于 2021-01-06T11:50:07.967 回答
0

我怀疑这与此有关:https ://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/

具体来说:


防御开放的第 3 层防火墙和 NAT 最后,IMDSv2 中有最后一层防御,旨在保护被错误配置为开放路由器、第 3 层防火墙、VPN、隧道或 NAT 设备的 EC2 实例。使用 IMDSv2,默认情况下,包含秘密令牌的 PUT 响应将无法在实例之外传播。这是通过将包含秘密令牌的低级 IP 数据包的默认生存时间 (TTL) 设置为“1”来实现的,该值远低于典型值,例如“64”。处理数据包的硬件和软件(包括 EC2 实例)在每个数据包传递时都会从每个数据包的 TTL 字段中减去 1。如果 TTL 为 0,则丢弃数据包,并将错误消息发送回发送者。因此,一个 TTL 为“64”的数据包在放弃之前可以在网络中进行 64 次“跳跃”,而一个 TTL 为“1”的数据包只能存在于一个网络中。此功能允许合法流量到达预期目的地,但旨在阻止数据包在网络中存在环路时无休止地循环运行。


您是否有机会从以桥接模式启动的容器中运行上述命令?我有一个类似的问题。如果是这种情况,您可以使用--network host或通过将凭据作为系统变量传递来运行它。

于 2020-08-10T12:24:39.437 回答