Kubernetes部署Ingress后访问localhost报ERR_EMPTY_RESPONSE问题
Kubernetes部署应用访问localhost报ERR_EMPTY_RESPONSE问题修复
从现有集群资源状态判断,核心故障原因是Ingress资源未绑定ingress-nginx控制器:
- 查询结果中
ingress-service的CLASS字段显示为<none>,v0.46.0版本的ingress-nginx默认只会接管配置了对应IngressClass的Ingress规则,未绑定的规则不会被加载到控制器的转发配置里,请求打到80端口时无匹配路由,直接返回空响应。 - 旧版本通过
kubernetes.io/ingress.class注解关联控制器的逻辑,在v0.46.0版本中默认关闭,不会生效。
修复操作步骤
- 第一步:验证集群内存在对应IngressClass,执行命令:
kubectl get ingressclass
正常部署ingress-nginx后会自动创建名为nginx的IngressClass资源。 - 第二步:修改k8s目录下的Ingress资源配置文件,在
spec段新增ingressClassName: nginx字段,配置示例:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-service spec: ingressClassName: nginx # 原有rules、backend等配置保持不变
- 第三步:重新应用配置更新资源:
kubectl apply -f k8s/ - 第四步:等待10秒左右执行
kubectl get ingress ingress-service验证,当CLASS列显示为nginx、ADDRESS列出现控制器对应地址后,再访问localhost即可正常转发。
附加排查项
如果上述操作完成后仍无法访问,做两项检查:
- 执行
kubectl get svc确认业务对应的Service资源正常存在,端口配置和Ingress规则中配置的backend端口完全一致 - 执行以下命令查看ingress-nginx控制器日志,定位具体转发错误:
kubectl logs -n ingress-nginx ingress-nginx-controller-686556747b-kd4tn
内容的提问来源于stack exchange,提问作者k312XD
相关产品推荐
相关产品推荐

