AWS EKS负载均衡控制器是否支持路径路由?Ingress配置报错排查
AWS EKS ALB Ingress路径路由问题解答
AWS EKS的ALB负载均衡控制器原生支持基于路径的路由,你当前配置的遗漏和问题如下:
- 路径匹配规则配置不完整
当前配置的path: /game仅能精确匹配/game路径,无法覆盖/game/、/game/xxx这类子路径请求。如果需要匹配该路径下的所有请求,需要修改为path: /game/*,同理/web路径需要修改为/web/*。 - 缺少路径重写配置(核心报错原因)
ALB Ingress默认会将客户端请求的完整路径原封不动转发给后端服务。比如你访问http://example.com/game,转发到test2048服务的路径也是/game,如果test2048服务仅响应根路径/的请求、没有适配/game前缀路径的路由,就会返回404类错误。
如果后端服务没有适配路径前缀,可以选择两种方案修复:- 调整后端服务的路由规则,让其支持
/game、/web前缀的路径访问 - 添加路径重写配置,去掉前缀后再转发给后端:
- 首先升级Ingress API版本为
networking.k8s.io/v1(v1beta1版本在K8s 1.19+已废弃) - 在metadata.annotations中添加重写注解:
alb.ingress.kubernetes.io/rewrite-target: /$2 - 将对应路径修改为
path: /game(/|$)(.*)、path: /web(/|$)(.*),同时补充pathType: Prefix字段
- 调整后端服务的路由规则,让其支持
- 版本兼容风险
你使用的networking.k8s.io/v1beta1版本Ingress在Kubernetes 1.19及以上版本已经正式废弃,部分新的ALB控制器版本可能不再兼容该版本配置,导致路由规则不生效,建议尽快迁移到networking.k8s.io/v1版本。 - 额外排查项
如果修改上述配置后仍报错,可以依次排查:- 直接通过集群内部访问test2048、nginx服务,确认服务本身可以正常响应对应路径的请求
- 检查ALB、节点、Pod的安全组规则,确保ALB可以正常访问后端Pod的对应端口
- 查看ALB的健康检查状态,确认后端Pod都处于健康状态,没有被ALB标记为异常
内容的提问来源于stack exchange,提问作者nischeruku
相关产品推荐
相关产品推荐

