无法从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
我遇到了同样的错误,我已经消除了它,它提供了我的程序访问AWS凭据(AWS访问密钥ID,AWS秘密访问密钥(:
$ aws configure
下一次我使用eksctl
时,它只是没有尝试自己进行身份验证,命令就通过了。
我怀疑这与此有关: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"的数据包在放弃之前可以在网络中进行六十四次"跳跃",而TTL为"1"的数据包包含在一个网络中。该功能允许合法流量到达预定目的地,但旨在防止网络中存在环路时数据包无休止地绕圈运行。
您是否有机会在以桥接模式启动的容器中运行上述命令?我也有类似的问题。如果是这种情况,您可以使用--network host
或通过将cred作为系统变量传递来运行它。