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

Minikube Ingress访问时无限挂起问题求助

问题描述

我已通过minikube addons enable ingress启用Ingress,并验证其处于运行状态:

$ kubectl get pods -n ingress-nginx
NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-pzhzn        0/1     Completed   0          53m
ingress-nginx-admission-patch-k9xdn         0/1     Completed   0          53m
ingress-nginx-controller-7c6974c4d8-rkcrp   1/1     Running     0          53m

随后获取了Minikube IP:

$ minikube ip
192.168.49.2

Deployment/Service/Ingress定义如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: karpenter-test-deployment
  labels:
    app: karpenter-test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: karpenter-test
  template:
    metadata:
      labels:
        app: karpenter-test
    spec:
      containers:
      - name: karpenter-test-manager
        image: localhost/test-karpenter-manager:latest
        imagePullPolicy: Never
        ports:
        - containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
  name: karpenter-test-service
spec:
  selector:
    app: karpenter-test
  ports:
    - protocol: TCP
      port: 8000
      targetPort: 8000
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: karpenter-test-service
            port:
              number: 8000

已验证Pod处于运行状态:

$ kubectl get pods -o wide
NAME                                        READY   STATUS    RESTARTS   AGE   IP           NODE       NOMINATED NODE   READINESS GATES
karpenter-test-deployment-945ff8f95-fbv24   1/1     Running   0          95m   10.244.0.3   minikube   <none>           <none>

但访问http://192.168.49.2/api时页面无限挂起,通过kubectl port-forward service/karpenter-test-service 8000:8000可正常访问http://localhost:8000/api,询问原因及解决办法。

原因分析
  1. Ingress重写规则错误:当前配置的nginx.ingress.kubernetes.io/rewrite-target: /会把所有/api前缀的请求重写到服务的根路径/,但你的服务实际只响应/api路径(port-forward时访问/api正常),重写后请求访问的是服务未处理的根路径,导致超时挂起。
  2. Minikube Ingress端口未暴露:Minikube中Ingress Controller的Service默认是LoadBalancer类型,需要通过minikube tunnel建立宿主机到集群的端口转发,否则直接用Minikube IP无法访问Ingress服务。
解决办法

方法1:修正Ingress重写规则

如果服务需要接收/api路径的请求,调整重写规则或直接移除重写注解:

  • 如需保留路径前缀,修改Ingress配置:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - http:
      paths:
      - path: /api/(.*)
        pathType: Prefix
        backend:
          service:
            name: karpenter-test-service
            port:
              number: 8000
  • 如不需要重写,直接删除rewrite-target注解:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
spec:
  rules:
  - http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: karpenter-test-service
            port:
              number: 8000

方法2:启动Minikube Tunnel

在终端执行以下命令(保持窗口打开):

minikube tunnel

之后再访问http://192.168.49.2/api即可正常转发请求。

额外验证步骤

  • 检查Ingress配置是否正确关联服务:
kubectl describe ingress minimal-ingress
  • 查看Ingress Controller日志排查转发问题:
kubectl logs -n ingress-nginx ingress-nginx-controller-7c6974c4d8-rkcrp

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:13:12