【问题标题】:If a pod die, so does the cookies and sessions it issued disappear?如果一个 pod 死了,它发出的 cookie 和会话也会消失吗?
【发布时间】:2026-01-10 06:45:02
【问题描述】:

这里是kubernetes新手,所以这个问题可能没有意义并提前道歉。请多多包涵。

据我了解,入口控制器直接与 pod 通信。原因之一是它与用户 cookie 和会话与将它们发布给用户的 pod 保持关联。

但是当 pod 死掉时,那些 cookie 和会话也会死掉吗?所以用户前。例如,将不得不重新登录。对吗?

提前致谢。

【问题讨论】:

    标签: kubernetes kubernetes-ingress


    【解决方案1】:

    来自docs

    当后端服务器被移除时,请求被重新路由到 另一个上游服务器。这不需要 cookie 是 更新,因为密钥的一致哈希会改变。

    假设您有多个 Pod 副本(通过部署/复制控制器),这意味着如果其中一个副本 Pod 死了,kubernetes 会将其从服务的端点列表中删除,因此 nginx 中的 Lua 平衡器从上游服务器列表中删除该端点,这意味着一致的哈希环被重建,请求将被重新路由到其他保持相同会话 cookie 的副本 pod。

    用户是否需要重新登录取决于应用程序如何存储或使用cookie来决定用户是否登录。

    【讨论】:

    • 好吧,如果 Pod A 死掉了,并且 Pod A 向用户 A 发出了会话,那么用户 A 的会话就会失效,因此用户 A 需要重新登录。对吗?
    • 这一切都取决于服务本身是如何实现的(它存储会话数据的方式和位置),它实际上与 Kubernetes 关系不大。
    • 负载均衡器自己处理会话,即使之前服务的 pod 宕机了,负载均衡器处理它,不用担心 pod。
    • 感谢您的回答,不胜感激。所以我必须将我的会话数据持久存储在某个地方,这样每当我的一个 pod 死机时,新的替换 pod 就可以从持久存储中读取该数据。这个链接可能与我所说的有关。 *.com/questions/48750142/…
    【解决方案2】:

    入口控制器没有存储与用户会话或 cookie 相关的状态。如果您的 pod 没有为传入会话标识符在某处持久化状态,而只是持久化到本地磁盘或内存,那么当 pod 重新启动时,您将丢失该状态。同样,如果您的工作负载扩展到超过 1 个副本,并且您的会话仅持久化到磁盘或内存,那么当请求被路由到另一个副本时,会话将不存在。

    【讨论】:

      最近更新 更多