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

GKE中Pod运行正常但Ingress提示不健康、端口显示异常问题求助

问题根因

  • GKE默认的gce类Ingress对应的外部HTTP(S)负载均衡,默认使用HTTP类型的健康检查,不会自动读取Pod配置的TCP探针规则,对非HTTP服务自然会判定为不健康。
  • 你观察到的Ingress识别为80端口的问题,是因为GCE Ingress默认会将健康检查的请求发往NodePort对应的节点端口,且默认使用HTTP 80端口作为后端服务的健康检查端口,不会自动关联Service配置的443端口属性。

可行解决方案

方案1:自定义Ingress健康检查规则(优先推荐)

直接通过Ingress的BackendConfig注解自定义TCP类型的健康检查,不需要额外加Nginx边车,改动最小:

  1. 先创建BackendConfig资源:
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: clearspring-tcp-hc
spec:
  healthCheck:
    type: TCP
    port: 8080
    checkIntervalSec: 10
    timeoutSec: 5
    healthyThreshold: 1
    unhealthyThreshold: 5
  1. 在你的Service的metadata.annotations中添加关联配置,绑定刚才的BackendConfig:
metadata:
  name: clearspring-service443
  annotations:
    cloud.google.com/backend-config: '{"default": "clearspring-tcp-hc"}'
  1. 重新apply Service和Ingress配置,等待1-2分钟负载均衡配置同步即可。

方案2:改用支持TCP代理的负载均衡

如果你的服务全程是TCP协议不需要HTTP层面的路由,直接用GKE的TCP负载均衡更合适,不需要部署Ingress:
将Service类型改为LoadBalancer,添加对应注解即可:

apiVersion: v1
kind: Service
metadata:
  name: clearspring-service443
  annotations:
    networking.gke.io/load-balancer-type: "External"
    cloud.google.com/load-balancer-type: "External"
spec:
  type: LoadBalancer
  selector:
    app: clearspring
  ports:
    - name: https
      protocol: TCP
      port: 443
      targetPort: 8080

如果需要HTTPS证书卸载,可以在创建LoadBalancer类型Service时关联Google-managed SSL证书即可。

方案3:继续使用边车方案的修正方法

如果坚持用Nginx边car的方式,需要注意将健康检查的端口明确配置给Ingress,不要依赖自动识别:

  • 给Nginx边车暴露独立的端口比如80,专门用于返回200健康响应
  • 在BackendConfig中指定健康检查端口为80,类型为HTTP,路径为/即可解决之前配置不生效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:42:01