Kubernetes会话亲和性超时时长:从首次还是末次连接起算?
Kubernetes ClientIP会话亲和性超时的计算起点
在Kubernetes Service中可配置Session Affinity(会话亲和性)属性,其默认超时时长为10800秒(3小时)。不少人会疑惑:这个超时时长是从首次连接建立时、末次连接活动时还是其他时间点开始计算?
Kubernetes v1.22 API文档对此没有明确说明,仅描述:
timeoutSeconds [整数]:指定ClientIP类型会话亲和性的持续时长(秒)。当ServiceAffinity为"ClientIP"时,值必须>0且<=86400(1天)。默认值为10800(3小时)
明确结论
ClientIP会话亲和性的超时是从末次连接活动时间点开始计算的。
当客户端IP首次与Service绑定到某个后端Pod后,只要该客户端在超时窗口内有新的请求或连接活动,超时计时器就会被重置。只有当该客户端IP在整个超时周期内没有任何流量活动时,原有的会话亲和绑定才会失效,后续请求会被重新调度到任意可用的后端Pod。
从Kubernetes的kube-proxy实现逻辑(包括iptables、IPVS两种模式)来看,都是基于客户端IP维护会话条目,每次有流量经过时自动刷新超时时间,而非固定从首次连接建立的时间点开始倒计时。
内容的提问来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

