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

Windows10 Docker Desktop K8s配置Nginx Ingress无法访问内部服务

Kubernetes访问问题排查解决方案

1. LoadBalancer EXTERNAL-IP长期pending问题

Docker Desktop内置的Kubernetes未实现云厂商的LoadBalancer接口,该状态属于环境默认特性,无需长时间等待,可通过两种方案处理:

  • 直接使用Ingress Controller暴露的NodePort访问:你当前部署的nginx ingress已经将80端口映射到集群节点的31430端口、443端口映射到32346端口,可直接访问http://local.ticket.dev:31430/api/users/currentuser测试连通性
  • 卸载旧版本nginx ingress,重新安装适配Docker Desktop的官方ingress-nginx版本,安装完成后nginx ingress服务的EXTERNAL-IP会自动变为localhost,可直接用80/443端口访问。旧版本卸载命令:
helm uninstall nginx-ingress-1629401528

安装时选择官方维护的ingress-nginx仓库中对应Docker Desktop环境的部署包即可。

2. HTTP强制跳转HTTPS问题

你请求日志中出现的307内部跳转是浏览器HSTS缓存导致,与Nginx Ingress配置无关,你添加的nginx.ingress.kubernetes.io/ssl-redirect: "false"配置已经生效,解决方案如下:

  • 如果你使用Chrome/Edge内核浏览器,访问浏览器内部地址chrome://net-internals/#hsts,在「Delete domain security policies」输入框填写local.ticket.dev,点击删除后清空浏览器缓存,或直接使用无痕模式访问测试
  • 优先使用curl命令测试,避免浏览器缓存干扰:
curl http://local.ticket.dev/api/users/currentuser

3. 无法访问内部服务问题

完成上述两项配置调整后如果仍然访问不通,按以下顺序排查:

  • 执行kubectl describe ingress ingress-service,检查Ingress规则的后端指向的服务名称、端口是否匹配,是否存在配置错误
  • 验证Auth服务本身可用性:执行端口转发命令kubectl port-forward service/auth-srv 3000:3000,访问http://localhost:3000/api/users/currentuser,确认Auth服务可以正常返回响应
  • 查看Nginx Ingress控制器日志,确认请求是否到达Ingress层、是否存在报错:
kubectl logs -f nginx-ingress-1629401528-controller-569576ddbd-2htxz
  • 执行ping local.ticket.dev,确认本地Hosts配置生效,域名正确解析到127.0.0.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:12:01