Kubernetes:如何使用AWS负载平衡设置粘性会话

时间:2016-12-20 12:44:51

标签: amazon-web-services kubernetes

尝试了解在AWS中使用service type = loadbalancer时应如何配置粘性会话 我的后端是运行tomcat应用程序的2个pod 我看到该服务也创建了AWS LB,我在AWS LB配置中设置了正确的cookie值,但是当访问系统时,我看到我一直在我的pod / tomcat实例之间切换

我的服务配置

kind: Service
apiVersion: v1
metadata:
 annotations:
   service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
 labels:
   app: app1
 name: AWSELB
 namespace: local
spec:
 type: LoadBalancer
 ports:
 - port: 8080
   targetPort: 8080
 selector:
   app: app1

是否还缺少其他设置? 谢谢 千斤顶

3 个答案:

答案 0 :(得分:1)

您可以尝试通过将service.spec.sessionAffinity设置为" ClientIP"来设置基于客户端IP的会话亲和性。 (默认为"无")。 (http://kubernetes.io/docs/user-guide/services/

您还可以尝试运行可以更好地管理内部路由的入口控制器,请参阅:https://github.com/kubernetes/kubernetes/issues/13892#issuecomment-223731222

答案 1 :(得分:1)

不支持。请参阅具有血腥细节的https://github.com/kubernetes/kubernetes/issues/2867

答案 2 :(得分:0)

kube代理是L4。如果您的源IP相同,则无法区分客户端。您需要L7代理才能阅读这些详细信息。检查Ingress:https://github.com/kubernetes/ingress/tree/master/examples/affinity/cookie/nginx 这使用cookie来识别您的用户并跳过直接调用pod的L4 kube-proxy。