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

Minikube集群中用DevSpace时FastAPI Docs出现502网关错误求助

问题:使用DevSpace后Ingress访问FastAPI Docs出现502 Bad Gateway

在Minikube集群中正常运行应用时,可通过Ingress访问FastAPI Docs;但使用DevSpace启动后,虽能确认Pod内代码已同步变更,访问192.168.64.112/api/v1/project/tasks/docs时却出现502 Bad Gateway错误。


相关配置文件

api-pod.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: project-api
spec:
  replicas: 1
  selector:
    matchLabels:
      app: project-api
  template:
    metadata:
      labels:
        app: project-api
    spec:
      containers:
        - image: project/project-api:0.0.1
          name: project-api
          command: ["uvicorn"]
          args: ["endpoint:app", "--port=8000", "--host", "0.0.0.0"]
          imagePullPolicy: IfNotPresent
          livenessProbe:
            httpGet:
              path: /api/v1/project/tasks/
              port: 8000
            initialDelaySeconds: 5
            timeoutSeconds: 1
            periodSeconds: 600
            failureThreshold: 3
          ports:
            - containerPort: 8000
              name: http
              protocol: TCP

---
apiVersion: v1
kind: Service
metadata:
  name: project-api
spec:
  selector:
    app: project-api
  ports:
    - port: 8000
      protocol: TCP
      targetPort: http
  type: ClusterIP

api-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: project-ingress
spec:
  rules:
    - http:
        paths:
          - path: /api/v1/project/tasks/
            pathType: Prefix
            backend:
              service:
                name: project-api
                port:
                  number: 8000
  ingressClassName: nginx

---
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: nginx
spec:
  controller: k8s.io/ingress-nginx

集群资源状态

Endpoints(kubectl get ep)

NAME          ENDPOINTS         AGE
project-api   172.17.0.6:8000   17m

Service(kubectl get svc)

NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
project-api   ClusterIP   10.97.182.167   <none>        8000/TCP   17m

Ingress(kubectl get ingress)

NAME          CLASS   HOSTS   ADDRESS          PORTS   AGE
api-ingress   nginx   *       192.168.64.112   80      17m

运行环境

  • MacOS Monterey: 12.4
  • Minikube version: v1.26.0(使用hyperkit作为虚拟机)
  • Ingress controller: k8s.gcr.io/ingress-nginx/controller:v1.2.1
  • Devspace version: 5.18.5

排查与解决步骤

1. 验证Pod内应用可用性

进入DevSpace启动的Pod,直接测试应用端口:

curl localhost:8000/api/v1/project/tasks/docs

如果返回异常,检查DevSpace是否覆盖了启动命令(比如将--host 0.0.0.0改为127.0.0.1,导致仅Pod本地可访问)。

2. 检查Service到Pod的连通性

在集群内启动临时Pod,测试Service访问:

kubectl run -it --rm busybox --image=busybox:1.35 -- wget -O- http://project-api:8000/api/v1/project/tasks/docs

如果失败,确认DevSpace未修改Pod标签:执行kubectl describe pod <devspace-pod-name>,检查app: project-api标签是否存在,确保Service的Selector能匹配Pod。

3. 查看Ingress Controller日志

通过日志定位502错误原因:

kubectl logs -n ingress-nginx deployment/ingress-nginx-controller

常见触发点:应用启动失败未监听端口、Ingress路径转发不匹配、DevSpace同步机制导致应用重启异常。

4. 检查DevSpace配置干扰

查看devspace.yaml,确认:

  • 未设置冲突的端口转发规则
  • 代码同步未破坏应用依赖或导致进程崩溃

5. 确认Liveness Probe状态

执行kubectl describe pod <devspace-pod-name>,检查Liveness Probe的成功/失败记录,如果Probe失败,Pod会被标记为不健康,Ingress将停止转发流量。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 07:16:27