gpt4 book ai didi

kubernetes - 具有 sessionAffinity 的 OpenShift 服务将流量转发到两个 Pod

转载 作者:行者123 更新时间:2023-12-03 20:50:27 26 4
gpt4 key购买 nike

OpenShift 容器平台 3.11
假设在同一命名空间中有一个客户端 Pod 和三个相同的服务器 Pod 的设置。服务器 pod 可通过服务获得:

  apiVersion: v1
kind: Service
metadata:
name: server
spec:
ports:
- name: "8200"
port: 8200
targetPort: 8200
selector:
test.service: server
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 10800 # default
Setup of client and server pods sessionAffinity: ClientIP声明只要客户端具有相同的 IP,它的请求就会被转发到同一个服务器 pod(除非达到 timeoutSeconds)。这个设置按预期工作了几个月,直到突然请求在两个服务器 pod 之间分配。重新启动客户端 pod 暂时解决了问题,并且请求仅转发到一个服务器 pod 一段时间。然而,几天后,同样的问题再次出现。
我的问题:是否有关于 OpenShift 服务和 sessionAffinity: ClientIP 的任何信息?这解释了为什么来自同一客户端且 IP 未更改的请求可​​能会“突然”分布在两个服务器 pod 之间?

一些额外的上下文:
当客户端 Pod 连接到服务器 Pod 时,它会收到一个 session token (不是 cookie)。 session token 缓存在服务器 Pod 内,但不在服务器 Pod 之间共享。因此,当客户端连接到不同的服务器时,它会收到拒绝 session token 的权限。然后客户端请求一个新的 session token 。如果客户端的请求被转发到同一个服务器 pod 并且只是有时服务器发生变化(例如因为第一台服务器崩溃),则上述设置工作正常。但是,如果客户端的请求分布在两个或多个服务器之间,则 session token 将随着每第二个或第三个请求而无效。

最佳答案

看 Kubernetes proxysocket源,我们假设连接时间长(超过 250 毫秒)会触发新端点的选择。
我们现在不是通过 OpenShift 服务在服务器之间分配客户端连接,而是在客户端和服务器之间使用额外的 nginx pod。

关于kubernetes - 具有 sessionAffinity 的 OpenShift 服务将流量转发到两个 Pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63149656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com