我找不到一个文档来指定当附属部署使用多个副本进行扩展时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地址选择会话关联。