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

GKE Ingress异常:部分Pod无网络端点/后端关联问题求助

GKE自研应用NEG无法自动关联端点排查方案

核心问题定位

你的自研frontend-app出现Pod就绪门<none>、Ingress后端无Pod、NEG SIZE=0的问题,核心是Pod未通过就绪检查——Kubernetes只会将就绪状态的Pod注册到Service端点池,同步至关联NEG;而hello-app正常是因为它自带符合要求的就绪探针配置。

具体排查步骤

1. 检查Deployment的就绪探针配置

  • 确认Deployment YAML中是否定义了readinessProbe:如果没有,Pod就绪状态会显示<none>,直接导致无法被纳入Service和NEG。参考hello-app的标准配置:
    readinessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
    
  • 如果已有就绪探针,验证path、port是否和你的frontend-app实际暴露的健康检查端点一致,比如你的app是否在/health而非/healthz返回健康状态。

2. 验证Pod的就绪状态细节

  • 执行命令查看Pod的事件和状态:
    kubectl describe pod <your-frontend-pod-name>
    
  • 重点检查Events部分是否有Readiness probe failed的报错,这直接说明探针配置和实际应用不匹配,比如端口不通、路径返回非200状态码。

3. 检查Service与NEG的关联配置

  • 确认Service YAML中是否正确启用NEG:需包含类似cloud.google.com/neg: '{"exposed_ports": {"80":{"name": "frontend-neg"}}}'的注解,且端口配置和Deployment的容器端口一致。
  • 确保Service的selector和Deployment的labels完全匹配,否则Service无法选中Pod,更无法同步至NEG。

4. 检查Ingress与NEG的绑定

  • 确认Ingress YAML中是否正确引用NEG:在backend.service.name对应的配置段,是否通过service.cloud.google.com/neg: '{"ingress": true}'注解启用NEG关联,或直接指定了NEG名称。
  • 确保Ingress的backend.service.port.number和Service的端口一致。

5. 验证应用本身的可访问性

  • 在集群内部测试Pod的健康端点:
    kubectl exec <your-frontend-pod-name> -- curl http://localhost:<app-port>/<health-path>
    
  • 如果返回非200状态码,说明应用本身的健康检查端点存在问题,需修复应用代码或配置。

总结

绝大多数这类问题都是就绪探针缺失或配置错误导致的,优先从Deployment的探针配置入手排查,再逐步验证Service、Ingress的关联逻辑。如果以上步骤无法解决,建议补充Pod的kubectl describe输出和完整YAML配置细节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:28:25