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

FastAPI应用部署至Minikube后无法通过NodePort访问问题排查

排查Minikube中FastAPI应用NodePort无法访问的问题

以下是针对该场景的具体排查步骤:

1. 确认Minikube的正确访问方式

不同Minikube驱动的网络访问逻辑存在差异:

  • 若使用Docker驱动:直接通过minikube ip:30001可能无法访问,可执行minikube service fastapi-service,命令会自动输出可访问的URL或打开浏览器;也可以用端口转发临时测试:
    kubectl port-forward service/fastapi-service 30001:8000
    
    之后访问localhost:30001即可。
  • 若使用VirtualBox/VMware驱动:先通过minikube ip获取集群IP,再确认本地防火墙是否允许30001端口的入站请求。

2. 验证Pod内应用是否正常运行

即使Pod状态显示Running,也要确认应用是否真的启动并监听端口:

  • 查看Pod启动日志:
    kubectl logs $(kubectl get pods -l app=fastapi-app -o name)
    
    确认日志中出现Uvicorn running on http://0.0.0.0:8000这类启动成功的信息。
  • 进入Pod内部测试应用连通性:
    kubectl exec -it $(kubectl get pods -l app=fastapi-app -o name) -- curl localhost:8000
    
    如果返回{"message":"Hello World!"},说明应用在Pod内运行正常。

3. 检查Service与Pod的关联状态

确认Service已正确关联到目标Pod:

  • 查看Service详情:
    kubectl describe service fastapi-service
    
    在Endpoints字段中,应该能看到Pod的IP地址(格式如172.17.0.4:8000)。如果Endpoints为空,说明标签匹配失败(虽然配置中selector和Pod标签一致,但仍需确认拼写是否完全一致)。
  • 确认Service端口配置:
    kubectl get service fastapi-service
    
    检查PORT(S)列是否显示8000:30001/TCP,确认nodePort确实为30001。

4. 验证镜像内容一致性

确认K8s中使用的luwinkler/fastapi:latest镜像和本地测试的容器镜像内容一致:

  • 若使用私有仓库,需确保Minikube集群能正常拉取镜像;也可以直接在Minikube集群内构建镜像:
    minikube docker-env
    # 根据输出提示执行环境变量设置命令,然后本地构建镜像
    docker build -t luwinkler/fastapi:latest .
    
    之后重启Deployment让Pod使用本地镜像:
    kubectl rollout restart deployment fastapi-app
    

内容的提问来源于stack exchange,提问作者Lucas Winkler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:30:32