0x01 Kubernetes中Session的会话保持
背景说明: 基于kubernetes集群中部署Java项目,您发现在多pod模式下会出现登录成功但是页面无法跳转的问题,或验证明明输入正确却提示验证码错误无法登陆,而在单一pod时却可以成功登录并页面正常跳转,于是推测是cookie的问题。
解决方式: 进行K8S会话粘粘与保持, 但是针对于不同的实践环境又有所不同,例如采用ClusterIP、NodePort方式或者Ingress访问来访问我们的应用。
Service
描述: 网上的大部分文章提供的解决方案都是在service的配置文件中加入sessionAffinity: ClientIP
,功能是选择与请求来源ip更接近的pod,这样就会固定同一个session但可能会出现流量负载不均衡的情况。
演示案例:
apiVersion: v1
kind: Service
metadata:
name: tomcat
namespace: default
spec:
selector:
app: tomcat
release: canary
ports:
- name: http
targetPort: 8280
port: 8280
sessionAffinity: ClientIP
ingress-nginx
在i