在完全私有的集群中无法运行kubectl和eks命令

0

【以下的问题经过翻译处理】 我已经创建了一个完全私有的 VPC(无法直接访问互联网),我们称之为 VPC-A。这个 vpc 是对等连接到另一个 VPC,我们称之为 VPC-B。此 VPC-B 具有互联网连接,并用作 VPC-A 的网关。

我使用 指南 在 VPC-A 的私有子网中仅部署了一个完全私有的集群(没有任何节点)。问题是我无法像 指南 中提到的那样运行任何 kubectl 和 eks 命令。在互联网上搜索了很多信息后,我发现了一些访问集群的方法。其中一种方法是在私有VPC中创建一个机器,然后尝试从那里访问集群。我还在GitHub上创建了许多问题,但没有得到适当的答案。以下是一些专家的答案:

您可以通过在该 VPC 内部署 EC2 实例并将 EKS K8s API 定义到您的 kubectl 来与 K8s API 通信。

好吧,我已经在集群的 vpc 中部署了一个实例,但每当我在私有VPC内部的实例上运行kubectl命令时,我都会收到以下错误消息:Unable to connect to the server: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

此外,在 EKS 完全私有集群指南 中提到

如果您的设置可以通过其私有地址到达 EKS API 服务器端点,并且具有出站互联网访问权限(对于 EKS:DescribeCluster),则所有 eksctl 命令都应该有效。

是否有人可以正确指导我如何创建这样的设置?

我运行了一些命令来检查访问服务器地址是否有问题。

nmap -p 443 1E9057EC8C316E£D"@JY$J&G%1C94A.gr7.eu-west-*.eks.amazonaws.com

Starting Nmap 7.80 ( https://nmap.org ) at 2022-09-09 11:11 UTC
Nmap scan report for 1E9057EC8C316E£D"@JY$J&G%1C94A.gr7.eu-west-.eks.amazonaws.com (192.168..)
Host is up (0.00031s latency).
Other addresses for 1E9057EC8C316E£D"@JY$J&G%1C94A.gr7.eu-west-.eks.amazonaws.com (not scanned): 192.168..
rDNS record for 192.168..: ip-192-168--.eu-west-*.compute.internal

PORT STATE SERVICE
443/tcp open https

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

另一个命令是

nslookup 1E9057EC8C316E£D"@JY$J&G%1C94A.gr7.eu-west-*.eks.amazonaws.com
Server: 127.0.0.53
Address: 127.0.0.53#53

Non-authoritative answer:

Name: 1E9057EC8C316E£D"@JY$J&G%1C94A.gr7.eu-west-.eks.amazonaws.com
Address: 192.168..*
Name: 1E9057EC8C316E£D"@JY$J&G%1C94A.gr7.eu-west-.eks.amazonaws.com
Address: 192.168..*

还有一个是

telnet 1E9057EC8C316E£D"@JY$J&G%1C94A.gr7.eu-west-.eks.amazonaws.com 443
Trying 192.168.....
Connected to 1E9057EC8C316E£D"@JY$J&G%1C94A.gr7.eu-west-.eks.amazonaws.com
Escape character is '^]'.
^CConnection closed by foreign hos

很明显,我可以从与API服务器相同的VPC中的机器访问API服务器端点。但是,当我运行kubectl命令时,仍然会收到此输出:

Unable to connect to the server: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

当我运行以下命令时

kubectl cluster-info dump

我收到以下错误消息

Unable to connect to the server: proxyconnect tcp: dial tcp: lookup socks5h on 127.0.0.53:53: server misbehaving

谢谢

1 回答
0

【以下的回答经过翻译处理】 最后一条错误消息似乎是指某种代理设置。通常情况下,当您的EKS API服务器端点仅具有私有访问权限时,您需要确保附加到EKS集群的安全组允许您从源机器进行连接。您还需要正确配置kubectl身份验证。如果您正在使用IAM访问权限,那么可以使用AWS CLI生成kubeconfig,具体命令如下:aws eks update-kubeconfig --name <cluster name> 在删除公共访问之前,请确保已将RBAC访问权限委派给Bastion主机内的IAM用户。

有关如何连接到仅具有私有访问权限的API服务器的更多信息:https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html#private-access

profile picture
专家
已回答 10 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则