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

Google Cloud Kubernetes Ingress遇default backend -404错误求助

问题诊断与修复方案

从你提供的kubectl describe ing输出里的警告信息——failed to identify user specified default backend, couldn't find nodeport for default/sv-security, using system default——就能定位到核心问题:你在Ingress配置里错误地使用了NodePort(32290),或者虽然尝试过用Service的80端口,但配置逻辑存在问题,导致GKE的Ingress控制器无法正确关联到你的后端Service。

具体错误点

  • Ingress的作用是将外部流量路由到集群内的Service,它需要关联的是Service的ClusterIP端口(也就是你Service定义里的spec.port: 80),而非NodePort。NodePort是给集群外部直接访问节点用的,Ingress控制器不会通过NodePort来转发流量。
  • 你尝试用servicePort: 32290是完全错误的,这会让Ingress控制器找不到正确的后端路径,最终 fallback到系统默认的404 backend。

修正后的Ingress配置

把你的Ingress YAML改成下面这样,确保指向Service的ClusterIP端口(80),同时推荐使用更稳定的networking.k8s.io/v1 API版本(GKE已支持很久):

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-sv-security
  annotations:
    kubernetes.io/ingress.allow-http: "false"
spec:
  defaultBackend:
    service:
      name: sv-security
      port:
        number: 80

额外检查项

  • 确认后端Pod的健康状态:GKE的Ingress控制器只会把流量转发到处于Ready状态的Pod。你可以用kubectl get pods -l run=sv-security查看Pod状态,确保每个Pod都配置了就绪探针(readinessProbe),且探针返回成功。
  • 验证Service与Pod的关联:执行kubectl describe service sv-security,检查Endpoints字段是否有Pod的IP地址——如果是空的,说明Service的标签选择器和Pod的标签不匹配,需要修正Pod的run: sv-security标签。
  • 等待Ingress控制器完成配置:GKE创建Ingress后需要几分钟时间配置负载均衡器,你可以通过kubectl get ingress ingress-sv-security查看ADDRESS字段是否稳定,并且事件里没有新的警告。

为什么之前的配置失败?

当你指定servicePort: 32290时,Ingress控制器会尝试寻找Service上对应的端口定义,但你的Service里并没有定义port: 32290(只有nodePort: 32290),所以控制器找不到匹配的端口,只能使用系统默认的后端,最终出现404错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:09:04