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

Windows环境下Minikube Ingress路由不通且Ping超时求助

问题排查请求

在Windows系统中通过Docker Desktop驱动安装Minikube,启动后已启用Ingress插件。创建了对应的Deployment、Service和Ingress资源,并在hosts文件中配置了主机名与Ingress IP的映射,但开启minikube tunnel后,既无法Ping通Ingress IP,也无法访问部署的REST服务,请帮忙排查问题。


部署配置文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-shipit
  labels:
    app: demo-shipit
    platform: dms
    component: service
spec:
  selector:
    matchLabels:
      app: demo-shipit
      platform: dms
      component: service
  replicas: 2
  template:
    metadata:
      labels:
        app: demo-shipit
        platform: dms
        component: service
    spec:
      restartPolicy: Always
      containers:
        - name: demo-shipit
          image: demo:latest
          ports:
            - containerPort: 8080
          resources:
            limits:
              memory: "512Mi"
          envFrom:
            - configMapRef:
                name: demo-shipit

服务配置文件

apiVersion: v1
kind: Service
metadata:
  name: demo-shipit
  labels:
    app: demo-shipit
    platform: dms
    component: service
spec:
  ports:
    - port: 80
      targetPort: 8080
      protocol: TCP
      name: http
  type: NodePort
  selector:
    app: demo-shipit
    platform: dms
    component: service

Ingress配置文件

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-shipit
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    - host: demoshipt.test
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: demo-shipit
                port:
                  number: 80

hosts文件配置

192.168.49.2 demoshipt.test
172.17.0.15 hello-world.info
# Added by Docker Desktop
10.70.0.50 host.docker.internal
10.70.0.50 gateway.docker.internal
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section

排查步骤

  1. 检查Ingress控制器状态
    执行kubectl get pods -n ingress-nginx,确认Ingress控制器Pod处于Running状态。若Pod异常,优先解决控制器启动问题。

  2. 验证Ingress资源状态
    执行kubectl get ingress,查看Ingress的ADDRESS字段是否有有效IP,STATUS是否为Ready。若ADDRESS为空,说明Ingress未正确绑定控制器。

  3. 确认minikube tunnel运行状态
    确保minikube tunnel在前台持续运行(不要关闭终端),等待输出Status: machine tunneled提示,确认隧道已建立。

  4. 检查Service与Pod的关联
    执行kubectl get endpoints demo-shipit,查看ENDPOINTS字段是否存在Pod的IP和端口(格式如xxx.xxx.xxx.xxx:8080)。若为空,说明Service的selector标签与Pod不匹配,或Pod未正常启动。

  5. 验证Pod运行状态
    执行kubectl get pods -l app=demo-shipit,查看Pod状态是否为Running、READY是否为1/1。若Pod异常,执行kubectl logs <pod-name>查看日志定位问题。

  6. 修正Ingress注解问题
    当前Ingress使用nginx.ingress.kubernetes.io/rewrite-target: /$1,但path为/,$1无匹配分组会导致重写异常。可删除该注解,或调整path为/(.*),示例:

    paths:
      - path: /(.*)
        pathType: Prefix
        backend:
          service:
            name: demo-shipit
            port:
              number: 80
    
  7. 测试Service连通性
    执行minikube ssh进入节点,再执行curl demo-shipit,若能返回响应则问题出在Ingress或隧道;若不能访问,说明Service或Pod存在问题。

  8. 确认hosts映射IP正确性
    执行minikube ip获取Minikube节点IP,核对hosts文件中的192.168.49.2是否一致,不一致则更新hosts文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:13:30