部署在EKS的AWS Load Balancer Controller粘性会话不生效如何解决
AWS EKS ALB Controller粘性会话失效缺失配置说明
- 核心粘性开关注解缺失:
alb.ingress.kubernetes.io/target-type: ip仅指定ALB的目标注册类型为Pod IP,本身不具备开启粘性会话的能力,必须额外添加alb.ingress.kubernetes.io/target-group-attributes注解,显式配置粘性参数:stickiness.enabled=true,stickiness.type=lb_cookie - 粘性会话时长未显式配置:默认ALB粘性Cookie有效期为1天,如有自定义会话保持时长需求,可在上述target-group-attributes参数中追加
stickiness.lb_cookie.duration_seconds=自定义秒数,最大支持604800秒(7天) - 多路径/多服务场景下注解未覆盖全:如果你的Ingress配置了多条路径规则对应不同后端服务,需要确保所有需要粘性会话的服务对应的目标组都配置了上述粘性参数;如果使用了IngressGroup特性,需避免组级别注解覆盖单个Ingress的粘性配置
- 应用侧Cookie覆盖校验:需要确认你的Java Web应用没有主动修改、删除ALB自动下发的
AWSALB、AWSALBCORS前缀的Cookie,应用侧的Set-Cookie操作如果覆盖了上述Cookie会直接导致粘性失效 - 后端Pod健康状态校验:如果后端Pod频繁出现健康检查失败、重启、上下线的情况,ALB会自动将请求转发到其他健康节点,表现为粘性失效,需要确认Deployment的就绪探针、存活探针配置合理,Pod运行状态稳定
- ALB Controller版本校验:低于v2.1.0版本的AWS Load Balancer Controller存在粘性会话注解适配缺陷,需升级到v2.1.0及以上版本保证注解生效
完整Ingress配置示例
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: java-web-ingress annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip # 粘性会话完整配置 alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.type=lb_cookie,stickiness.lb_cookie.duration_seconds=86400 spec: ingressClassName: alb rules: - host: your-app-domain.com http: paths: - path: / pathType: Prefix backend: service: name: java-web-svc port: number: 8080
内容的提问来源于stack exchange,提问作者SRJ
相关产品推荐
相关产品推荐

