本篇内容介绍了“在K8S中如何实现会话保持”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
会话保持方案
方案一:通过service进行配置
在service配置配置形如下内容
apiVersion: v1kind: Servicemetadata: namespace: uat name: uat-ssospec: selector: app: uat-sso ports: - protocol: TCP port: 80 targetPort: 80 nodePort: 30666 type: NodePort # 会话保持3小时 sessionAffinity: ClientIP sessionAffinityConfig: clientIP: timeoutSeconds: 10800
其中关键配置如下
sessionAffinity: ClientIPsessionAffinityConfig: clientIP: timeoutSeconds: 10800
通过指定sessionAffinity: ClientIP开启了session保持。当设置了session保持之后,k8s会根据访问的ip来把请求转发给他以前访问过的pod,这样session就保持住了。其中timeoutSeconds指的是session保持的时间,这个时间默认是10800秒,也就是三个小时。
不过朋友说他配置了这个之后,貌似没产生作用,因为朋友他们单点登录是通过ingress进行转发,于是就有了第二种方案
方案二:通过ingress配置会话保持
配置形如下
apiVersion: networking.k8s.io/v1kind: Ingressmetadata: annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/affinity-mode: persistent nginx.ingress.kubernetes.io/session-cookie-name: route name: uat-sso-ingress namespace: uatspec: rules: - host: sso.com http: paths: - backend: service: name: uat-sso port: number: 80 path: / pathType: Prefix tls: - hosts: - sso.com secretName: tls.sso.com
其中关键配置如下
metadata: annotations: nginx.ingress.kubernetes.io/affinity: cookie nginx.ingress.kubernetes.io/affinity-mode: persistent nginx.ingress.kubernetes.io/session-cookie-name: route
其中nginx.ingress.kubernetes.io/affinity 属性,启用会话保持, 其值仅仅支持cookie。
nginx.ingress.kubernetes.io/affinity-mode 属性,设置为persistent时,则请求一直请求至同一pods服务,设置为balanced (默认设置)则请求会使用轮询的方式至后端pods服务
nginx.ingress.kubernetes.io/session-cookie-name 属性,自定义cookie名称, 其默认设置为 INGRESSCOOKIE,但我们可自定义,如上文的route。
“在K8S中如何实现会话保持”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!