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

为何GKE显示后端实例不健康?Keycloak配置GCE Ingress后健康检查失败

你提到的NAG应为NEG(网络端点组),你的问题确实和防火墙规则、GKE Ingress健康检查配置缺失有关,按照以下步骤修复即可:

1. 配置GCP负载均衡&健康检查放行防火墙规则

GCP全局负载均衡的健康检查和流量请求来自固定官方IP段,需要在VPC防火墙中放行到GKE集群节点的对应端口:

  • 放行源段:130.211.0.0/22、35.191.0.0/16
  • 放行端口:Keycloak服务端口(8443或8080)、健康检查端口9990
  • 目标资源:GKE集群节点(通过节点标签匹配)

可直接使用gcloud命令创建规则,替换其中占位符即可:

gcloud compute firewall-rules create allow-gke-ingress-keycloak \
  --direction=INGRESS \
  --priority=1000 \
  --network=<你的VPC名称> \
  --action=ALLOW \
  --rules=tcp:8443,tcp:9990 \
  --source-ranges=130.211.0.0/22,35.191.0.0/16 \
  --target-tags=gke-<你的GKE集群名>-<集群随机后缀>-node

集群节点标签可在GCE实例页面查看任意GKE节点的标签获取

2. 配置Ingress自定义健康检查

你当前未给Ingress配置自定义健康检查规则,GCP LB默认会请求服务端口的根路径/判断健康状态,和Keycloak实际的健康检查路径/health、端口9990不匹配,也是后端不健康的核心原因。

首先创建BackendConfig资源定义健康检查规则,保存为backendconfig.yaml:

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: keycloak-backendconfig
  namespace: keycloak
spec:
  healthCheck:
    checkIntervalSec: 10
    timeoutSec: 5
    healthyThreshold: 3
    unhealthyThreshold: 3
    type: HTTP
    requestPath: /health
    port: 9990

随后修改keycloak-service.yaml,添加注解关联BackendConfig:

metadata:
  name: keycloak-service
  namespace: keycloak
  annotations:
    cloud.google.com/neg: '{"ingress": true}'
    cloud.google.com/backend-config: '{"default": "keycloak-backendconfig"}' # 新增该注解

3. 验证Keycloak端口配置

你当前Keycloak Service的targetPort为8443,需确认Keycloak启动时已开启HTTPS监听8443端口;如果未配置HTTPS,可将targetPort改为8080(对应你之前LoadBalancer正常使用的端口),同时同步修改防火墙放行端口为8080即可。

所有配置修改完成后重新apply所有资源,等待5-10分钟待GCP Ingress和健康检查规则更新完成,后端实例即可恢复健康状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:39:03