在K8S中如何实现会话保持

其他教程   发布日期:2023年08月28日   浏览次数:508

本篇内容介绍了“在K8S中如何实现会话保持”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    会话保持方案

    方案一:通过service进行配置

    在service配置配置形如下内容

    1. apiVersion: v1
    2. kind: Service
    3. metadata:
    4. namespace: uat
    5. name: uat-sso
    6. spec:
    7. selector:
    8. app: uat-sso
    9. ports:
    10. - protocol: TCP
    11. port: 80
    12. targetPort: 80
    13. nodePort: 30666
    14. type: NodePort
    15. # 会话保持3小时
    16. sessionAffinity: ClientIP
    17. sessionAffinityConfig:
    18. clientIP:
    19. timeoutSeconds: 10800

    其中关键配置如下

    1. sessionAffinity: ClientIP
    2. sessionAffinityConfig:
    3. clientIP:
    4. timeoutSeconds: 10800

    通过指定sessionAffinity: ClientIP开启了session保持。当设置了session保持之后,k8s会根据访问的ip来把请求转发给他以前访问过的pod,这样session就保持住了。其中timeoutSeconds指的是session保持的时间,这个时间默认是10800秒,也就是三个小时。

    不过朋友说他配置了这个之后,貌似没产生作用,因为朋友他们单点登录是通过ingress进行转发,于是就有了第二种方案

    方案二:通过ingress配置会话保持

    配置形如下

    1. apiVersion: networking.k8s.io/v1
    2. kind: Ingress
    3. metadata:
    4. annotations:
    5. nginx.ingress.kubernetes.io/affinity: cookie
    6. nginx.ingress.kubernetes.io/affinity-mode: persistent
    7. nginx.ingress.kubernetes.io/session-cookie-name: route
    8. name: uat-sso-ingress
    9. namespace: uat
    10. spec:
    11. rules:
    12. - host: sso.com
    13. http:
    14. paths:
    15. - backend:
    16. service:
    17. name: uat-sso
    18. port:
    19. number: 80
    20. path: /
    21. pathType: Prefix
    22. tls:
    23. - hosts:
    24. - sso.com
    25. secretName: tls.sso.com

    其中关键配置如下

    1. metadata:
    2. annotations:
    3. nginx.ingress.kubernetes.io/affinity: cookie
    4. nginx.ingress.kubernetes.io/affinity-mode: persistent
    5. 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中如何实现会话保持的详细内容,更多关于在K8S中如何实现会话保持的资料请关注九品源码其它相关文章!