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
相关产品推荐
相关产品推荐

