GKE Autopilot集群Ingress请求超时故障排查求助
GKE Autopilot内部Ingress 504超时排查方案
1. 确认Autopilot网络策略限制
Autopilot默认启用Pod安全标准和网络策略限制,内部负载均衡器的流量需要被允许到达后端Pod:
- 查看集群内所有网络策略:
kubectl get networkpolicies --all-namespaces - 如果存在默认拒绝所有流量的策略,需添加允许内部LB节点IP段访问Pod的规则(节点IP段可通过
gcloud container clusters describe <集群名> --zone <区域> | grep -A 5 clusterIpv4Cidr获取)
2. 检查Ingress后端健康检查状态
504超时大概率和健康检查失败导致后端被摘除有关:
- 查看Ingress关联的健康检查配置:
kubectl describe ingress <ingress名称>,找到Backend字段下的健康检查信息 - 登录GCP控制台查看负载均衡器的后端组状态,如果显示不健康,说明健康检查的路径、端口或协议不匹配httpbin服务的配置(httpbin默认健康检查路径为
/status/200)
3. 验证Service与BackendConfig配置
确认Service的关键配置及注解是否正确:
- 确保Service的
ports.targetPort和Pod的监听端口完全一致(httpbin默认监听80端口) - 如果使用自定义健康检查,需绑定BackendConfig注解:
对应的BackendConfig示例:cloud.google.com/backend-config: '{"default": "httpbin-backend-config"}'apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: httpbin-backend-config spec: healthCheck: checkIntervalSec: 5 port: 80 type: HTTP requestPath: /status/200
4. 检查GCP防火墙规则
内部负载均衡的健康检查流量来自固定IP段(35.191.0.0/16、130.211.0.0/22),需确保这些IP能访问Pod的端口:
- 查看集群关联的防火墙规则:
gcloud compute firewall-rules list --filter="name~gke-<集群名>-*" - 确认存在允许上述健康检查IP段访问节点NodePort(Ingress会自动为ClusterIP Service映射NodePort)的规则,若缺失需手动添加
5. 验证节点到Pod的可达性
虽然集群内Pod访问Service正常,但需确认节点层面能直接访问Pod:
- 获取节点IP:
kubectl get nodes -o wide - 登录节点(Autopilot节点需通过GCE控制台连接),执行
curl <Pod-IP>:<端口>,确认是否能正常返回200响应
内容的提问来源于stack exchange,提问作者Olgun Kaya
相关产品推荐
相关产品推荐

