1.Nginx 版本
root@ingress-nginx-controller-4b75b:/# /usr/sbin/nginx -v
nginx version: nginx/1.13.9
2.ingress 配置
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-fanout
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"
spec:
rules:
- host: <dnsname>
http:
paths:
- backend:
serviceName: <servicename>
servicePort: 80
path: /
3.回话保持原理
3.1两种方法:
a.session based on affinity
in the spec section:
sessionAffinity: ClientIP
b.session based on cookie
c.下面我介绍第二种
参考:The cookie is a piece of data that the client store and send to the web server to say: “Hey, I´m X! Redirect me to my pod!”. It works when there are multiple clients from the same IP, because it´s stored at web browser level. It needs an Ingress object, so you can use it with HTTPS or name-based virtual hosting. Similar to previous post.
参考:https://medium.com/@diegomrtnzg/redirect-your-users-to-the-same-pod-by-using-session-affinity-on-kubernetes-baebf6a1733b
用一个例子来演示会更加清晰