我已经通过 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上的端口?
任何帮助将不胜感激!
负载均衡器似乎无法访问端口
30000
上的 api 服务,这就是为什么它显示目标不健康的原因。我要检查的第一件事是安全组。确保 EC2 节点具有允许来自负载均衡器的端口 30000
上的流量的入站规则,并确认负载均衡器的安全组允许到同一端口上的节点的出站流量。
接下来,查看您的 VPC 设置。如果您的节点位于私有子网中,但负载均衡器是公共的,则您需要确保公共子网和私有子网之间存在正确的路由,以便负载均衡器可以到达您的节点。
另外,检查负载均衡器上的健康检查配置。确保用于运行状况检查的路径(如 /api/health)实际存在并且可从负载均衡器访问。
最后,尝试通过 SSH 连接到您的一个节点并运行curl 命令以查看是否可以在本地访问端口
30000
上的服务:
curl http://localhost:30000
如果这不起作用,则服务或 Pod 本身可能存在问题。
希望这有帮助!