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
排查步骤
检查Ingress控制器状态
执行kubectl get pods -n ingress-nginx,确认Ingress控制器Pod处于Running状态。若Pod异常,优先解决控制器启动问题。验证Ingress资源状态
执行kubectl get ingress,查看Ingress的ADDRESS字段是否有有效IP,STATUS是否为Ready。若ADDRESS为空,说明Ingress未正确绑定控制器。确认minikube tunnel运行状态
确保minikube tunnel在前台持续运行(不要关闭终端),等待输出Status: machine tunneled提示,确认隧道已建立。检查Service与Pod的关联
执行kubectl get endpoints demo-shipit,查看ENDPOINTS字段是否存在Pod的IP和端口(格式如xxx.xxx.xxx.xxx:8080)。若为空,说明Service的selector标签与Pod不匹配,或Pod未正常启动。验证Pod运行状态
执行kubectl get pods -l app=demo-shipit,查看Pod状态是否为Running、READY是否为1/1。若Pod异常,执行kubectl logs <pod-name>查看日志定位问题。修正Ingress注解问题
当前Ingress使用nginx.ingress.kubernetes.io/rewrite-target: /$1,但path为/,$1无匹配分组会导致重写异常。可删除该注解,或调整path为/(.*),示例:paths: - path: /(.*) pathType: Prefix backend: service: name: demo-shipit port: number: 80测试Service连通性
执行minikube ssh进入节点,再执行curl demo-shipit,若能返回响应则问题出在Ingress或隧道;若不能访问,说明Service或Pod存在问题。确认hosts映射IP正确性
执行minikube ip获取Minikube节点IP,核对hosts文件中的192.168.49.2是否一致,不一致则更新hosts文件。
内容的提问来源于stack exchange,提问作者Pallab

