K8S如何保持会话

1,587次阅读
没有评论

说明

在日常的开发需求中,经常会遇到需要把客户端的请求在经过代理转发之后,与后端源站的节点保持一致,即需要把请求都转发到同一个 pod 里面。例:语音留言,一段话会分成几段发送给服务端,服务端又是分布式的,如果代理服务器没有做会话保持,则会分发到不同节点上,导致消息不连贯。所以我们需要 k8s 的 service 保持会话。

配置

官网也是提供了相应的解决方案: 会话亲和性

在这些代理模型中,绑定到 Service IP:Port 的流量被代理到合适的后端,客户端不需要知道任何关于 Kubernetes、Service 或 Pod 的信息。

如果要确保来自特定客户端的连接每次都传递给同一个 Pod,你可以通过设置 Service 的  .spec.sessionAffinity  为  ClientIP  来设置基于客户端 IP 地址的会话亲和性(默认为  None)。

会话粘性超时

你还可以通过设置 Service 的  .spec.sessionAffinityConfig.clientIP.timeoutSeconds  来设置最大会话粘性时间(默认值为 10800,即 3 小时)。

说明:

在 Windows 上不支持为 Service 设置最大会话粘性时间。

正文完
 0
评论(没有评论)
验证码