在K8s中考虑src IP和src端口的粘性会话

问题描述

我有一个“升空”部署类型(即绝不是云原生的),我想设置粘性会话,以使请求(如果有的话)继续由同一个pod处理(来自客户端的透视)。

Client --> LB --> Ingress --> Service --> Deployment

由于LB会进行SNAT,因此我认为service.spec.sessionAffinityConfig.clientIP可以工作,但是由于所有请求都将使用相同的负载均衡器源IP,因此工作负载将无法在所有负载均衡器之间真正平衡部署中的Pod。

您能以任何方式在粘性会话行为中考虑源IP和端口对吗?

编辑1:部署在Oracle Cloud中运行。我们正在以纯TCP模式(即OSI Layer4)使用Oracle Cloud Loadbalancer服务。

解决方法

该问题描述的实际上是K8s中的默认流量管理行为。每个TCP会话中的数据包都以同一容器为目标。 TCP会话是从特定的源IP(在我们的示例中为LB)和源端口(每个会话都不同)启动的,并且此会话在整个持续时间内保持“粘性”。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...