Nginx 如何在kubernetes中为多个服务设置粘性会话?

Nginx 如何在kubernetes中为多个服务设置粘性会话?,nginx,kubernetes,websocket,sticky-session,session-affinity,Nginx,Kubernetes,Websocket,Sticky Session,Session Affinity,我有两项服务: 使用Nginx的Restful/websocket API服务(2个副本) 守护进程服务(1个副本) 守护进程服务将在某个点向前端发出websocket事件。但是,该事件似乎没有从守护进程服务成功地发送到前端 我还尝试将事件从API服务器发送到前端,该事件已成功发送到前端。(可能是因为前端已连接到API WebSocket服务器) 我为sticky session所做的工作: --- apiVersion:“v1” 种类:“服务” 元数据: 名称:“守护进程” 名称空间:应用程序

我有两项服务:

  • 使用Nginx的Restful/websocket API服务(2个副本)

  • 守护进程服务(1个副本)

  • 守护进程服务将在某个点向前端发出websocket事件。但是,该事件似乎没有从守护进程服务成功地发送到前端

    我还尝试将事件从API服务器发送到前端,该事件已成功发送到前端。(可能是因为前端已连接到API WebSocket服务器)

    我为sticky session所做的工作:

    ---
    apiVersion:“v1”
    种类:“服务”
    元数据:
    名称:“守护进程”
    名称空间:应用程序
    规格:
    端口:
    -协议:“TCP”
    港口:80
    目标港:80
    选择器:
    应用程序:“守护进程”
    类型:“节点端口”
    会话相关性:ClientIP
    ---
    ---
    apiVersion:“v1”
    种类:“服务”
    元数据:
    名称:“api”
    名称空间:应用程序
    规格:
    端口:
    -协议:“TCP”
    港口:80
    目标港:80
    选择器:
    应用程序:“api”
    类型:“节点端口”
    会话相关性:ClientIP
    ---
    apiVersion:getambassador.io/v2
    种类:地图
    元数据:
    注释:
    getambassador.io/resource-download:'2020-03-30T16:10:34.466Z'
    名称:api
    名称空间:应用程序
    规格:
    前缀:/api
    服务:api:80
    负载均衡器:
    策略:环形散列
    曲奇:
    名称:粘饼干
    ttl:60秒
    ---
    apiVersion:getambassador.io/v2
    种类:地图
    元数据:
    注释:
    getambassador.io/resource-download:'2020-03-30T16:10:34.466Z'
    名称:api ws
    名称空间:应用程序
    规格:
    前缀:/private
    服务:api:80
    使用\u websocket:true
    负载均衡器:
    策略:环形散列
    曲奇:
    名称:粘饼干
    ttl:60秒
    ---
    apiVersion:getambassador.io/v2
    种类:地图
    元数据:
    注释:
    getambassador.io/resource-download:'2020-03-30T16:10:34.466Z'
    名称:api守护进程
    名称空间:应用程序
    规格:
    前缀:/daemon
    服务:守护进程:80
    使用\u websocket:true
    负载均衡器:
    策略:环形散列
    曲奇:
    名称:粘饼干
    ttl:60秒
    
    来自kubernetes.io:

    服务:使用相同的Pod选择器创建一个服务,并使用该服务到达随机节点上的守护进程。(无法到达特定节点。)

    因此,我认为sessionAffinity无法与守护程序一起工作。

    来自kubernetes.io:

    服务:使用相同的Pod选择器创建一个服务,并使用该服务到达随机节点上的守护进程。(无法到达特定节点。)


    因此,我认为sessionAffinity无法与守护程序一起工作。

    对不起,我不知道守护程序,所以我没有使用守护程序,我只是使用了一个正常的部署来为我的守护程序服务。我通过让前端订阅
    /daemon
    解决了这个问题。很抱歉误解了您的问题。使前端订阅/daemon是否有帮助?为什么这会有帮助?只是想学点东西:)是的,它解决了我的问题。这是因为守护进程需要与其他服务具有相同的订阅服务器,但我不知道守护进程,所以我没有使用守护进程,我只是为我的守护进程服务使用了正常部署。我通过让前端订阅
    /daemon
    解决了这个问题,很抱歉误解了您的问题。使前端订阅/daemon是否有帮助?为什么这会有帮助?只是想学点东西:)是的,它解决了我的问题。它之所以能工作是因为守护进程需要与其他服务拥有相同的订阅服务器。使前端订阅/deamon完全解决了您的问题?是的,完全解决了我的问题。使前端订阅/deamon完全解决了您的问题?是的,完全解决了我的问题