GKE LoadBalancer类型服务External IP地址无法访问问题求助
GKE LoadBalancer无法访问应用排查方案
- 校验Service端口转发配置
你的应用Pod监听的是8080端口,当前LoadBalancer对外暴露80端口,需确认Service的targetPort字段是否正确指向Pod的8080端口。未显式配置时targetPort默认与port字段值一致为80,会导致流量转发到Pod未监听的端口,无法响应请求。
执行以下命令查看Service详情:
检查输出中kubectl describe service nginx --namespace=nginxPort和TargetPort配置,若TargetPort不是8080,修改Service配置将targetPort设置为8080即可。 - 校验Pod本身服务可用性
先跳过LoadBalancer链路,直接验证Pod服务是否正常:
执行端口转发命令本地访问Pod:
本地访问kubectl port-forward pod/nginx-cb894bfc5-trnrk 8080:8080 --namespace=nginxhttp://localhost:8080,如果无法访问说明应用本身启动异常、或实际监听端口不是8080,需检查容器镜像的启动配置。 - 校验Service到Pod的转发链路
若端口转发能正常访问Pod,再验证ClusterIP连通性:
若命令无正常返回,说明Service转发链路异常,优先检查Service的kubectl run -it --rm --restart=Never busybox --image=busybox:1.28 -- wget -O- 10.99.240.181:80selector配置是否与Pod的app: nginx标签完全匹配。 - 校验GCP防火墙规则
GCP VPC默认会拦截未显式允许的入站流量,需确认防火墙规则已允许你的访问IP(或0.0.0.0/0)访问LoadBalancer的80端口,以及节点的31005端口(即Service对应的NodePort)。 - 校验LoadBalancer就绪状态
GKE LoadBalancer分配External IP后,完全就绪生效通常需要3-10分钟,若刚创建完就测试可等待一段时间后重试。
内容的提问来源于stack exchange,提问作者Azeez Lukman
相关产品推荐
相关产品推荐

