如何在请求Kubernetes服务时使用Session Affinity



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

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

此外,我希望在服务转发的请求中有一些相关性(即,如果可能的话,所有带有特定后缀的请求都应该映射到同一个pod,等等(。这是可以实现的吗?我看到的Closes是Ambassador,但这是服务级别的亲和力,而不是pod级别。

部署:无状态工作负载

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

使用Deployment部署的Pod应该是无状态的。

进入服务路由

当使用Ingress、L7代理时,路由可以基于http请求内容,但这取决于您使用的IngressController的实现。例如,Ingress nginx对粘性会话有一些支持,其他实现可能符合您的要求。例如,Istio支持类似的设置。

大使

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

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

Pod-to-Service路由

当集群中的pod向集群中的服务发出http请求时,kube代理默认情况下会以循环的方式进行路由。

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

如果希望pod到服务路由上的会话相关性,可以在Service对象上设置SessionAffinity: ClientIP字段。

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

相关内容

  • 没有找到相关文章

最新更新