nginx-ingress通过nginx.ingress.kubernetes.io/affinity配置cookie会话保持

举报
可以交个朋友 发表于 2023/12/12 15:26:09 2023/12/12
【摘要】 nginx-ingress 通过nginx.ingress.kubernetes.io/affinity配置cookie会话保持

一、背景

     使用ingress-nginx承接业务南北向流量,部分业务需要实现前端服务到后端服务的会话保持,即同一客户端访问固定的后端pod实例。

二、实现方案

     该方案通过annotation配置实现基于cookie会话保持。通过在ingress资源annotation里配置nginx.ingress.kubernetes.io/affinitynginx.ingress.kubernetes.io/affinity-mode实现。涉及配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx
  namespace: test
  annotations: 
    nginx.ingress.kubernetes.io/affinity: cookie
    nginx.ingress.kubernetes.io/affinity-mode: persistent
spec:
  rules:
    - host: www.nginx.com
      http:
        paths:
          - path: /
            backend:
              service:
                name: nodeport-ingress
                port:
                  number: 80
            property:
              ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
            pathType: ImplementationSpecific
  ingressClassName: nginx  tls: []
  • nginx.ingress.kubernetes.io/affinity: cookie #开启会话保持(固定写法)
  • nginx.ingress.kubernetes.io/affinity-mode: #支持2种session保持模式

    • balanced:ingress关联的后端部署规模扩大后,将重新分配一些会话,从而重新平衡服务器上的负载。

    • persistent:ingress关联的后端部署规模扩大后,不会重新平衡与新服务器的会话,提供了最大的粘性。

三、效果验证

  • 创建应用,并配置ingress资源

         

  • 使用curl命令多次访问,在访问中扩容副本,但是会话只转发到同一pod

       

  • 在使用balanced模式下,用如下curl语句多次访问测试,可以看出副本进行了扩容,同一个cookie却路由到了不同的pod实例,说明:balanced进行了平衡分配

         


qrcode_for_gh_0412fa5a12f4_344 (5).jpg

订阅本文作者或关注容器魔方

获取更多云原生技术资讯

本文评论区回复“云原生”,即可添加小助手微信k8s2222

领取应季云原生资料一份

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。