我已经在AWS EKS上部署了AWS负载平衡控制器。我已经创建了k8s入口资源我正在部署java web应用程序与k8s部署。我想确保会话保持,使我的应用程序工作。
我读到,如果我设置下面的注释,那么粘性会话将工作:
alb.ingress.kubernetes.io/target-type: ip
但是我看到入口是路由请求到不同的副本,每次让登录失败,因为会话cookie不持久。
我错过了什么?
alb.ingress.kubernetes.io/target-type: ip
但是启用粘性的注释是:
alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true
也可以设置cookie_duration_settings
。
alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=300
如果您想从K8s级别管理stick会话,您可以使用,sessionAffinity: ClientIP
kind: Service
apiVersion: v1
metadata:
name: service
spec:
selector:
app: app
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 10000