EKS集群Helm安装Kong API网关服务异常问题咨询
异常根因
- 核心问题为Kong官方Helm Chart默认配置的版本兼容性bug:对应部署版本的Kong Ingress Controller(KIC)默认强制使用HTTP2协议请求Kong网关的健康检查、配置同步状态校验接口,但同版本Kong网关的Admin/状态接口默认未开启HTTP2监听支持,直接返回
http2 requests not supported yet的500错误。 - 连锁故障逻辑:KIC每3秒发起的配置状态校验请求全部失败,导致控制器容器健康检查不通过,Pod始终无法达到就绪状态;EKS集群的LoadBalancer类型Service需要等待后端就绪Pod满足最小可用数后,才会触发AWS侧弹性负载均衡的创建与IP分配流程,因此kong-proxy服务的ExternalIP会一直停留在
Pending状态。 - 该故障与自定义values配置、当前使用的Helm v3.8、Kubernetes v1.21版本无直接关联,完全按照官方文档的默认参数部署就会触发,是Kong 2.8.x搭配KIC 2.4/2.5版本在EKS环境的已知适配问题。
修复方案
- 现有部署升级修复:显式关闭KIC侧强制HTTP2访问的配置,同时保留Proxy侧的HTTP2对外支持能力,执行以下命令即可:
helm upgrade kong kong/kong -n kong \ --set ingressController.controller.http2=false \ --set proxy.http2.enabled=true
- 全新部署修复:先清理现有异常资源后重新带参数安装:
# 卸载现有异常部署 helm uninstall kong -n kong # 等待命名空间内所有Kong相关CRD、Pod、Service资源完全删除后,重新安装 helm install kong kong/kong -n kong --create-namespace \ --set ingressController.controller.http2=false \ --set proxy.http2.enabled=true
部署校验
部署完成后等待1-2分钟,执行以下操作确认故障修复:
- 执行
kubectl get pods -n kong,确认所有Pod内的ingress-controller、proxy容器均为Running状态,无异常重启 - 执行
kubectl get svc -n kong,确认kong-proxy服务成功分配AWS ELB对应的外部IP,不再处于Pending状态 - 查看容器日志,确认不再输出
checking config status failed、http2 requests not supported yet类重复报错
内容的提问来源于stack exchange,提问作者GI D
相关产品推荐
相关产品推荐

