问题描述
我有一个“升空”部署类型(即绝不是云原生的),我想设置粘性会话,以使请求(如果有的话)继续由同一个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)和源端口(每个会话都不同)启动的,并且此会话在整个持续时间内保持“粘性”。