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

无法通过Ingress Controller访问Go Web应用问题求助

排查步骤

1. 确认Ingress Controller的关联与暴露状态

  • 你的Ingress资源ADDRESS字段为空,说明Contour Ingress Controller未成功接管该Ingress。检查Ingress YAML文件,是否指定了ingressClassName: contour(Contour默认需要此字段关联Ingress)。
  • 执行kubectl get ingressclass,确认存在名为contour的IngressClass资源。若不存在,需先创建对应IngressClass,或在Ingress中明确指定正确的类名。
  • 检查Contour的Envoy服务暴露方式:执行kubectl get svc -n projectcontour,找到contour-envoy服务:
    • 若为NodePort类型,需用集群节点IP(Kind集群默认是127.0.0.1)加上对应NodePort端口访问;
    • 若为LoadBalancer类型,在Kind集群中需确认kind_config.yaml是否配置了端口映射(比如将宿主机80端口映射到Envoy的80端口),此时EXTERNAL-IP应显示localhost或具体映射IP。

2. 解决DNS解析问题

  • curl simple-web-app-local失败,大概率是该域名未解析到Ingress Controller的入口IP。
  • 手动在本地hosts文件添加映射:若Ingress Controller入口IP为127.0.0.1,添加一行127.0.0.1 simple-web-app-local:
    • Linux/macOS:编辑/etc/hosts
    • Windows:编辑C:\Windows\System32\drivers\etc\hosts(需管理员权限)
  • 也可绕开DNS,直接用Host头测试:curl -H "Host: simple-web-app-local" 127.0.0.1:<envoy-port>,替换<envoy-port>为Envoy服务暴露的端口(如80或对应NodePort)。

3. 验证后端服务的连通性

  • 检查Pod状态:执行kubectl get pods,确认Web应用的Pod处于Running状态,且READY为1/1。若Pod异常,查看日志kubectl logs <pod-name>,确认应用是否正常监听8000端口。
  • 在集群内部测试Service连通性:临时启动测试Pod执行命令:
    kubectl run -it --rm busybox --image=busybox:1.28 -- curl <service-name>:8000
    
    替换<service-name>为你的Web应用Service名称,确认能正常返回响应。若此处失败,说明Service与Pod关联有问题,检查Service的selector是否匹配Pod标签,以及端口映射是否正确(目标端口为8000)。

4. 检查Contour组件的运行状态

  • 确认Contour和Envoy Pod均正常运行:kubectl get pods -n projectcontour,所有Pod应处于Running状态,无重启或错误。
  • 查看Contour控制器日志,排查Ingress处理错误:
    kubectl logs -n projectcontour deployment/contour
    
    检查是否有关于Ingress资源的报错信息,比如权限问题、规则无效等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:13:24