Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 具有sessionAffinity的OpenShift服务将流量转发到两个POD_Kubernetes_Openshift_Session Affinity - Fatal编程技术网

Kubernetes 具有sessionAffinity的OpenShift服务将流量转发到两个POD

Kubernetes 具有sessionAffinity的OpenShift服务将流量转发到两个POD,kubernetes,openshift,session-affinity,Kubernetes,Openshift,Session Affinity,OpenShift容器平台3.11 假设在同一名称空间中有一个客户机机架和三个相等的服务器机架。服务器吊舱可通过以下服务获得: apiVersion: v1 kind: Service metadata: name: server spec: ports: - name: "8200" port: 8200 targetPort: 8200 selector: test.service: se

OpenShift容器平台3.11

假设在同一名称空间中有一个客户机机架和三个相等的服务器机架。服务器吊舱可通过以下服务获得:

  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

sessionAffinity:ClientIP
声明,只要客户端具有相同的IP,其请求就会转发到相同的服务器pod(除非达到超时秒)。这个设置按预期工作了几个月,直到突然请求被分配到两个服务器吊舱之间。重新启动客户端pod暂时解决了问题,请求只被转发到一个服务器pod一段时间。然而,几天后,同样的问题再次出现

我的问题:关于OpenShift服务和
sessionAffinity:ClientIP
是否有任何东西可以解释为什么来自同一个客户端的请求(IP不变)可能“突然”分布在两个服务器吊舱之间?


其他一些背景:

客户端pod在连接到服务器pod时接收会话令牌(而不是cookie)。会话令牌缓存在服务器机架内,但不在服务器机架之间共享。因此,当客户端连接到其他服务器时,它将收到会话令牌的权限被拒绝。然后,客户端请求一个新的会话令牌。如果客户机的请求被转发到同一个服务器pod,并且服务器只是偶尔更改(例如,因为第一台服务器崩溃),则上述设置工作正常。但是,如果客户端的请求分布在两台或多台服务器之间,则会话令牌将在每秒钟或每三次请求时无效。

查看Kubernetes源,我们假设长连接时间(250毫秒以上)会触发选择新端点

我们现在不再通过OpenShift服务在服务器之间分发客户端连接,而是在客户端和服务器之间使用额外的nginx pod