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

Win10系统Docker Desktop环境下无法访问Kubernetes NodePort服务

Win10 Docker Desktop Kubernetes NodePort服务无法访问问题解决

问题背景

在Win10机器的Docker Desktop环境中部署Kubernetes服务后,Pod和Service均显示正常运行,但通过localhost:30004或127.0.0.1:30004无法访问服务。

配置文件

pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: voting-app-pod
  labels:
    name: voting-app-pod
    app: demo-voting-app
spec:
  containers:
    - name: voting-app
      image: kodekloud/examplevotingapp_vote:v1
      ports:
        - containerPort: 80

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: voting-service
  labels: 
    name: voting-service
    app: demo-voting-app
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30004
  selector:
    name: voting-app-pod
    app: demo-voting-app

集群状态

执行kubectl get pods,svc输出:

NAME                 READY   STATUS    RESTARTS   AGE
pod/voting-app-pod   1/1     Running   0          37m

NAME                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes       ClusterIP   10.96.0.1        <none>        443/TCP        11d
service/voting-service   NodePort    10.107.145.225   <none>        80:30004/TCP   6m45s

解决方法

1. 使用WSL2 IP访问

Win10下Docker Desktop默认采用WSL2后端,NodePort端口实际映射到WSL2虚拟机而非本地localhost:

  • 打开PowerShell/CMD,执行命令获取WSL2 IP:
    wsl hostname -I
    
  • 使用输出的IP访问服务:http://<WSL2_IP>:30004

2. 检查Windows防火墙设置

Windows防火墙可能拦截了30004端口的入站请求:

  • 打开「Windows Defender防火墙」→「高级设置」→「入站规则」
  • 新建规则,允许TCP端口30004的入站连接

3. 验证Docker Desktop配置

  • 打开Docker Desktop设置,进入「Kubernetes」选项,确认「Enable Kubernetes」已勾选
  • 进入「Resources」→「WSL Integration」,确保对应WSL发行版已启用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 08:06:29