You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask除法微服务部署Kubernetes遇连接拒绝(net::ERR_CONNECTION_REFUSED)

解决Minikube中除法微服务连接拒绝问题

针对你部署到Minikube的除法微服务出现net::ERR_CONNECTION_REFUSED的问题,按以下步骤排查修复:

1. 修正Flask服务绑定地址

默认情况下,Flask的app.run(port=5004)仅绑定127.0.0.1,容器内仅能本地访问,Kubernetes无法转发外部请求。修改代码中的启动行:

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5004)

重新构建Docker镜像并推送至仓库。

2. 使用正确的Minikube访问方式

NodePort服务不能直接用localhost:5004访问,需通过Minikube节点IP+分配的NodePort端口访问:

  • 执行命令直接获取服务访问URL:
    minikube service divide-service-py --url
    
    用输出的URL拼接路径/divide?num1=10&num2=2即可访问。
  • 或手动获取NodePort:
    kubectl get service divide-service-py
    
    查看输出中PORT(S)列的第二个端口(格式为5004:3XXXX/TCP,3XXXX即为NodePort),然后访问$(minikube ip):3XXXX/divide?num1=10&num2=2。

3. 验证容器内服务可用性

进入运行中的Pod,测试服务是否正常响应:

kubectl exec -it $(kubectl get pods -l app=divide-service-py -o jsonpath='{.items[0].metadata.name}') -- /bin/bash

在容器内执行:

curl localhost:5004/divide?num1=8&num2=2

若返回正确的JSON结果,说明容器内服务正常;否则检查代码或依赖安装是否存在问题。

4. 确认Docker镜像正确性

本地先测试镜像是否正常运行:

docker run -p 5004:5004 katzir/divide-py:latest

在本地访问localhost:5004/divide?num1=6&num2=3,确认服务正常后再推送到镜像仓库。

5. 检查Kubernetes资源状态

  • 确认Pod处于Running状态:
    kubectl get pods
    
  • 查看Pod事件,排查启动异常:
    kubectl describe pod $(kubectl get pods -l app=divide-service-py -o jsonpath='{.items[0].metadata.name}')
    
  • 确认Service的Selector与Pod的Labels完全匹配(你的配置中已匹配app: divide-service-py,可忽略此步)。

内容的提问来源于stack exchange,提问作者Adar Katzir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 01:30:23