如何对 Kubernetes 服务的请求使用会话亲和性?

Mug*_*gen 13 load-balancing kubernetes session-affinity kubernetes-ingress kubernetes-service

我找不到指定当附属部署使用多个副本扩展时 Kubernetes 服务行为方式的文档。

我假设有某种负载平衡。是否与服务类型有关?

此外,我希望在服务转发的请求中具有某种关联性(即,如果可能,所有具有特定后缀的请求应始终映射到同一个 pod,等等)。这是可以实现的吗?我见过的关闭是Ambassador,但这是服务级别的亲和力,而不是 pod 级别。

Jon*_*nas 9

部署:无状态工作负载

我找不到指定当附属部署使用多副本扩展时 Kubernetes 服务行为方式的文档。

部署的 PodDeployment应该是无状态的。

入口到服务路由

使用IngressL7-proxy 时,路由可以基于 http 请求内容,但这取决于您使用的 IngressController 的实现。例如Ingress-nginx一些粘性会话的支持,其他实现可能有你正在寻找的东西。例如Istio已经支持类似的设置。

大使

你写的大使也对会话亲和性/粘性会话一些支持。

配置粘性会话使大使将请求路由到给定会话中的同一后端服务。换句话说,会话中的请求由同一个 Kubernetes pod 提供服务

Pod 到 Service 路由

当集群中的 pod 向集群内的 Service 发出 http 请求时,kube-proxy默认以循环方式进行路由

默认情况下,用户空间模式下的 kube-proxy 通过循环算法选择后端。

如果您想要 pod 到服务路由的会话亲缘关系,您可以SessionAffinity: ClientIPService对象上设置该字段。

如果您想确保每次都将来自特定客户端的连接传递到同一个 Pod,您可以通过将 service.spec.sessionAffinity 设置为“ClientIP”(默认为“None”)来根据客户端的 IP 地址选择会话亲缘关系)。

  • 您实际上是指“服务到 Pod 路由”吗? (8认同)