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

使用AWS ALB及aws-load-balancer-controller时出现502 Bad Gateway错误求助

故障根因分析
  • 端口配置不匹配:Deployment定义中containerPort配置为80,但Service的targetPort指向8080,两者不一致会导致aws-load-balancer-controller同步目标组规则时出现校验偏差,引发偶发流量转发失败。从ALB日志可以看到target_status_code为-、response_processing_time为-1,符合ALB请求无法送达后端目标的典型特征,和之前排查的请求未到业务服务的结论一致。
  • 健康检查配置不合理:当前ALB健康检查间隔设置为300秒(5分钟),节点或Pod出现异常时最长需要5分钟才会被ALB从目标组中摘除,异常实例会持续接收流量导致502。
  • 控制器版本缺陷:你使用的aws-load-balancer-controller v2.1.3版本存在目标组规则同步延迟、异常残留旧目标IP的已知缺陷,当Pod发生重建、调度漂移时,ALB的目标组中会残留已经失效的IP/端口组合,请求路由到失效目标时直接返回502。
  • 单副本部署风险:当前服务副本数为1,无冗余能力,当Pod发生微小抖动、进程重启或节点网络波动时,没有备用实例承接流量,直接触发502。
修复方案
  • 修正端口配置一致性:先确认业务进程实际监听的端口,将Deployment的containerPort和Service的targetPort配置统一:如果业务监听80,把Service的targetPort改为80;如果业务监听8080,把Deployment的containerPort改为8080。
  • 优化ALB健康检查配置:修改Ingress注解,缩短健康检查间隔,增加异常阈值,加快异常节点摘除速度,参考配置如下:
alb.ingress.kubernetes.io/healthcheck-interval-seconds: '10'
alb.ingress.kubernetes.io/healthcheck-timeout-seconds: '5'
alb.ingress.kubernetes.io/healthy-threshold-count: '2'
alb.ingress.kubernetes.io/unhealthy-threshold-count: '2'
  • 升级负载均衡控制器版本:将aws-load-balancer-controller升级到v2.4.1及以上稳定版本,修复目标组同步缺陷。
  • 调整部署冗余配置:将服务副本数调整为至少2个,调度到不同可用区的节点上,避免单实例故障导致的流量中断。
  • 可选优化:将Service类型从NodePort改为IP型,ALB直接路由到Pod IP,减少kube-proxy转发链路,降低网络波动风险,需要在Ingress添加如下注解:
alb.ingress.kubernetes.io/target-type: ip
  • 效果验证:所有配置调整完成后,持续观测ALB 5xx监控指标,10分钟内无新增502即可确认修复生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:15:02