验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

在K8S中如何实现会话保持

阅读:610 来源:乙速云 作者:代码code

在K8S中如何实现会话保持

      会话保持方案

      方案一:通过service进行配置

      在service配置配置形如下内容

      apiVersion: v1
      kind: Service
      metadata:
        namespace: uat
        name: uat-sso
      spec:
        selector:
          app: uat-sso
        ports:
          - protocol: TCP
            port: 80
            targetPort: 80
            nodePort: 30666
        type: NodePort
        # 会话保持3小时
        sessionAffinity: ClientIP
        sessionAffinityConfig:
          clientIP:
            timeoutSeconds: 10800

      其中关键配置如下

      sessionAffinity: ClientIP
      sessionAffinityConfig:
          clientIP:
            timeoutSeconds: 10800

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

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

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

      配置形如下

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        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: uat
      spec:
        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。

    分享到:
    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
    相关文章
    {{ v.title }}
    {{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
    你可能感兴趣
    推荐阅读 更多>