k8s分发策略之SessionAffinity
前言
对于后端应用来说,使用有效的负载分发策略,有利于客户端访问到准确、不间断的后端服务,而不至于出现访问无效、失真的情况
分发策略SessionAffinity
基于客户端IP地址进行会话保持/关联的模式,即第1次将某个客户端发起的请求转发到后端的某个Pod上,之后从相同的客户端发起的请求都将被转发到后端相同的Pod上
- 补充
Round-Robin:轮替模式,即将客户端请求代理到合适的后端合适的Po
如上图所示,当Client第一次被代理到Backend Pod 1上,为了保证Client后续连接还是能够保证到Backend Pod 1上,需要采取的策略是SessionAffinity,当Client没有这个要求时,即可以随意被代理到某个Pod上,则需要采取的策略是Round-Robin,此策略为默认方式,可不进行配置。
在service上进行配置,示例
apiVersion: v1 kind: Service metadata: name: myapp namespace: ops spec: selector: app: myapp type: ClusterIP ports: - name: http protocol: TCP port: 8080 targetPort: 8080 sessionAffinity: ClientIP # 配置sessionAffinity策略 sessionAffinityConfig: clientIP: timeoutSeconds: 3600 # 最大会话停留时间