GKE Ingress前置于Ingress Nginx时健康检查异常问题咨询
已验证可行解决方案
方案1:正确配置关联BackendConfig资源
你之前配置BackendConfig未生效,核心原因是规则需要绑定到Nginx Ingress Controller对应的Service资源,而非GKE Ingress资源,配置步骤如下:
- 编写BackendConfig资源,指定健康检查规则:
apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: nginx-ingress-healthcheck spec: healthCheck: checkIntervalSec: 10 timeoutSec: 5 healthyThreshold: 2 unhealthyThreshold: 3 type: HTTP requestPath: /healthz port: 10254
- 给Nginx Ingress Controller的Service添加注解,绑定上述BackendConfig:
kubectl annotate svc <你的nginx-ingress-controller服务名> cloud.google.com/backend-config='{"default": "nginx-ingress-healthcheck"}' -n <nginx-controller所在命名空间> - 等待3分钟左右GKE负载均衡配置同步完成即可,无需修改Nginx Ingress本身的健康检查路径。
方案2:直接通过Service注解配置健康检查
如果不想单独维护BackendConfig资源,也可以直接在Nginx Ingress Controller的Service上添加以下两条注解实现相同效果:
cloud.google.com/health-check-path: /healthzcloud.google.com/health-check-port: "10254"
注意:以上所有配置均需作用于Nginx Ingress Controller的Service资源,配置到GKE Ingress资源上不会被GKE负载均衡识别,是绝大多数配置失败的核心诱因。
内容的提问来源于stack exchange,提问作者night-gold
相关产品推荐
相关产品推荐

