无法使用 ELB 通过互联网访问 EKS 集群

问题描述 投票:0回答:1

我已经通过 terraform 创建了一个 EKS 集群,所有 Pod 都按预期运行。然而,我面临着网络挑战。我的 api-service pod 在端口 8000 上访问它时应该返回 hello world,如下所示:http://0.0.0.0:8000

我的网络能力不是很强,甚至不知道从哪里开始。我分享了运行其中一个 Pod 的实例的一些屏幕截图以及负载均衡器错误警告。

从下面的命令来看,节点端口似乎在 30000 上可用,这正是 ELB 想要的,不是吗?

kubectl get services -n=simple-app
NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
api-service   NodePort    172.20.255.168   <none>        8000:30000/TCP   9h

有人可以指出我正确的方向吗?我应该去哪里寻找?我应该问什么问题?为什么我的负载均衡器无法到达目标组?在哪里可以查看ELB是否可以访问VPC上的端口?

任何帮助将不胜感激!

enter image description here

enter image description here

enter image description here

amazon-web-services amazon-ec2 amazon-eks amazon-elb aws-security-group
1个回答
0
投票

负载均衡器似乎无法访问端口

30000
上的 api 服务,这就是为什么它显示目标不健康的原因。我要检查的第一件事是安全组。确保 EC2 节点具有允许来自负载均衡器的端口
30000
上的流量的入站规则,并确认负载均衡器的安全组允许到同一端口上的节点的出站流量。

接下来,查看您的 VPC 设置。如果您的节点位于私有子网中,但负载均衡器是公共的,则您需要确保公共子网和私有子网之间存在正确的路由,以便负载均衡器可以到达您的节点。

另外,检查负载均衡器上的健康检查配置。确保用于运行状况检查的路径(如 /api/health)实际存在并且可从负载均衡器访问。

最后,尝试通过 SSH 连接到您的一个节点并运行curl 命令以查看是否可以在本地访问端口

30000
上的服务:

curl http://localhost:30000

如果这不起作用,则服务或 Pod 本身可能存在问题。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.