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

WSL(Ubuntu)环境下Kubernetes Ingress无法正常工作问题排查

Minikube Nginx Ingress在WSL环境无法访问问题排查

问题背景

在WSL(Ubuntu)环境下使用Minikube部署Nginx服务,Pod和Service内部测试正常,但Ingress无法对外提供访问;相同配置在原生Ubuntu主机上可正常运行。

配置文件

Nginx Pod YAML

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    name: my-nginx
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80

Service YAML

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    name: my-nginx
  name: nginx-service
spec:
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 80
  selector:
    name: my-nginx
status:
  loadBalancer: {}

Ingress YAML

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host:
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-service
            port:
              number: 8080

当前状态检查结果

执行 kubectl get ingress 输出:

NAME            CLASS   HOSTS   ADDRESS        PORTS   AGE
nginx-ingress   nginx   *       192.168.49.2   80      141m

执行 kubectl describe ingress nginx-ingress 输出:

Name:             nginx-ingress
Labels:           <none>
Namespace:        default
Address:          192.168.49.2
Ingress Class:    nginx
Default backend:  <default>
Rules:
  Host        Path  Backends
  ----        ----  --------
  *
              /   nginx-service:8080 (10.244.0.16:80)
Annotations:  nginx.ingress.kubernetes.io/rewrite-target: /
Events:
  Type    Reason  Age                   From                      Message
  ----    ------  ----                  ----                      -------
  Normal  Sync    5m49s (x2 over 6m2s)  nginx-ingress-controller  Scheduled for sync

测试验证

  • Pod内部服务正常:kubectl exec -it nginx-pod -- curl localhost 可正常获取Nginx默认页面
  • 直接访问Ingress地址 curl http://192.168.49.2/ 请求挂起,无响应

针对性解决方案(WSL环境)

1. 切换Minikube网络驱动

WSL默认的网络驱动可能存在NAT转发问题,建议切换到Docker驱动:

# 停止并删除现有集群
minikube stop && minikube delete
# 用Docker驱动启动集群(需WSL2已安装Docker)
minikube start --driver=docker
# 启用Ingress插件
minikube addons enable ingress

2. 启用Minikube Tunnel

WSL2的NAT网络无法直接暴露Minikube的负载均衡地址,需通过tunnel转发端口:

# 启动隧道,绑定到所有地址
minikube tunnel --bind-address 0.0.0.0

启动后可通过Windows主机的localhost或WSL的IP访问Ingress服务。

3. 检查WSL网络转发规则

确保WSL的IPTABLES转发规则正常:

sudo iptables -P FORWARD ACCEPT

同时检查Windows防火墙是否允许WSL相关的入站流量,可临时关闭防火墙测试。

4. 验证Ingress控制器状态

确认Ingress控制器Pod正常运行:

kubectl get pods -n ingress-nginx

若Pod异常,查看日志排查:

kubectl logs -n ingress-nginx <ingress-controller-pod-name>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:15:17