GKE外部IP无法访问求助:配置LoadBalancer后仍无法连接
先梳理核心矛盾点和排查步骤:
服务配置不匹配:你执行
kubectl get service显示的生效服务是hello,但提供的service.yaml定义的服务是hello-lib,说明当前运行的服务和你给出的配置文件并非同一个。先执行kubectl describe service hello,查看该服务的实际端口、targetPort以及selector配置,确认是否和后端Pod的监听端口、标签匹配。端口映射不一致:当前
hello服务暴露的是80端口(对应NodePort 31388),但你的yaml里配置的是8000端口。如果后端Pod监听的是8000端口,需确认生效服务的targetPort是否设置为8000——若服务的targetPort和Pod监听端口不匹配,流量将无法到达Pod。后端Pod状态验证:
- 执行
kubectl get pods -l app=hello,确认Pod处于Running状态且重启次数正常。 - 进入Pod检查端口监听:
kubectl exec <你的Pod名称> -- netstat -tulpn,确认8000端口有进程在监听。
- 执行
服务与Pod标签匹配检查:执行
kubectl get pods --show-labels,确认Pod的labels里包含app: hello,否则服务无法找到后端Pod,流量无法转发。LoadBalancer健康检查状态:GKE的LoadBalancer会自动配置健康检查,如果后端Pod未响应健康检查请求,External IP将无法访问。可登录GCP控制台,找到对应负载均衡器,查看健康检查状态是否正常。若健康检查失败,需确认Pod的健康检查路径(默认是/)是否能返回200状态码。
防火墙规则补充验证:虽然你创建了允许所有端口的规则,但需确认是否包含GKE节点的NodePort范围(默认30000-32767),以及负载均衡器健康检查的源IP段(130.211.0.0/22和35.191.0.0/16)是否被允许。
内容的提问来源于stack exchange,提问作者Patrick Phan

