Flask应用部署在GKE的LoadBalancer IP无法访问,求助排查
排查GKE中Flask应用LoadBalancer访问被拒绝的问题
针对你遇到的问题,按以下步骤逐一排查:
检查Flask应用的监听地址
默认情况下Flask仅绑定127.0.0.1,只能在容器内部本地访问,Kubernetes服务无法转发流量。需要确保应用监听0.0.0.0:- 代码层面:在
main.py中修改启动代码为app.run(host='0.0.0.0', port=5000) - 启动命令层面:将启动命令改为
python3 main.py --host=0.0.0.0
- 代码层面:在
验证容器端口监听状态
登录Pod内部检查5000端口是否对外监听:kubectl exec -it site -- netstat -tulpn # 容器无netstat时用ss命令 kubectl exec -it site -- ss -tulpn确认输出中存在
0.0.0.0:5000的监听记录,而非仅127.0.0.1:5000确认LoadBalancer服务就绪状态
执行kubectl get service site,检查EXTERNAL-IP字段是否已分配有效IP(而非<pending>)。GKE的LoadBalancer通常需要2-5分钟完成配置,若刚创建不久,等待几分钟再尝试访问。检查GCP防火墙规则
GKE会自动创建对应LoadBalancer的防火墙规则,但需确认规则是否允许外部流量访问服务的8080端口:- 登录GCP控制台 → VPC网络 → 防火墙
- 查找名称包含
k8s-fw-且关联目标服务端口的规则,确认其允许0.0.0.0/0的入站流量
核对服务端口映射配置
确认服务的target-port与容器实际监听的端口一致:
执行kubectl describe service site,检查TargetPort字段是否为5000;同时执行kubectl describe pod site,确认Ports字段的容器端口配置正确
内容的提问来源于stack exchange,提问作者2bon2b
相关产品推荐
相关产品推荐

