EKS集群Kong网关重启后仅能访问单节点Pod问题排查求助
问题排查方向
以下是可能导致Kong重启后仅转发流量到单个节点Pod的几个常见原因及排查步骤:
1. Kong的K8s服务发现配置异常
- 检查Kong Deployment的环境变量
KONG_K8S_ENDPOINT_MODE,若设置为node,Kong会优先转发到节点IP而非Pod IP,可能导致流量集中在单个节点。应确保该参数设为ip(默认值),让Kong直接对接Pod的Endpoint。 - 确认Kong使用的ServiceAccount具备访问K8s
Endpoint、Service资源的权限,若权限不足,Kong无法同步所有Pod的地址信息。
2. 后端K8s Service配置问题
- 检查后端服务的Service类型:若使用
NodePort/LoadBalancer,Kong可能直接转发到节点端口,而非Pod。建议改为ClusterIP类型,让Kong通过Service的ClusterIP访问所有关联Pod。 - 验证Service的
selector标签是否准确匹配所有4个Pod,若标签误写,会导致Service仅关联单个节点的Pod。 - 查看Service的
sessionAffinity配置:若设置为ClientIP,虽会固定客户端流量到特定Pod,但重启Kong后应重新分配;若全局流量都集中在单节点,需确认是否该配置导致异常路由。
3. 集群网络策略/安全组限制
- 检查EKS节点的安全组规则,确认Kong所在节点与另一节点的Pod之间允许通信(比如Pod端口的入站规则),若安全组仅开放同节点通信,会导致跨节点Pod无法被访问。
- 排查集群内的
NetworkPolicy资源,确认没有规则限制Kong只能访问特定节点标签的Pod。
4. Kong Upstream配置问题
- 若手动配置了Kong Upstream,检查是否仅添加了单个节点的IP作为Target,而非所有Pod的IP。
- 通过Kong Admin API或K8s自定义资源(如
KongUpstream)查看Target列表,确保所有4个Pod的IP都已被添加:# 在集群内执行(需能访问Kong Admin端口) curl http://<kong-admin-service>:8001/upstreams/<your-upstream-name>/targets
5. 集群DNS解析异常
- 进入Kong Pod内部,执行
nslookup <backend-service-name>,检查返回的IP是否包含所有Pod的Endpoint地址。若仅返回单个IP,可能是CoreDNS配置问题,或Service的Endpoint未正确同步。
内容的提问来源于stack exchange,提问作者user1807948
相关产品推荐
相关产品推荐

