Windows Docker Desktop环境Nginx Ingress Controller转发请求异常问题
问题根因
- Ingress未绑定对应控制器:Ingress NGINX Controller v1.0+ 版本要求Ingress资源明确指定要关联的IngressClass,未指定的Ingress规则不会被控制器加载,因此初始日志会抛出
ingress does not contain a valid IngressClass错误。 - 配置字段大小写不匹配:你提供的初始Ingress配置中,规则下引用的Service端口名称为大写
HTTP,但Service定义中的端口名称为小写http,Kubernetes中端口名称大小写敏感,会导致路由匹配失败。 - HTTPS请求无对应规则:当前Ingress未配置TLS字段及对应证书,控制器不会为该域名生成HTTPS路由配置,因此HTTPS访问会落到NGINX默认后端返回404。
解决步骤
- 明确Ingress与控制器的绑定关系:除了添加你已经使用的注解外,更符合
networking.k8s.io/v1规范的方式是在Ingress的spec下添加如下配置:
spec: ingressClassName: nginx # 其余原有配置保持不变
- 修正端口名称大小写:将Ingress规则中
port.name的HTTP改为和Service一致的小写http。 - 若需支持HTTPS访问,先为
kubernetes.docker.internal签发TLS证书,将证书存入集群Secret,再在Ingress配置中添加TLS配置关联对应Secret和域名即可。 - 配置更新生效后,使用HTTP协议访问
http://kubernetes.docker.internal即可正常转发到后端Pod。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

