我找不到一个文档,该文档指定当关联部署使用多个副本扩展时Kubernetes服务的行为。
我假设存在某种负载平衡。与服务类型有关吗?
此外,我希望在服务转发的请求中具有某种亲和力(即,如果可能的话,具有特定后缀的所有请求应始终映射到同一Pod,等等)。那可以实现吗?我见过的Ambassador关闭,但这是服务级别的亲和力,而不是pod级别。
答案 0 :(得分:3)
我找不到一个文档,该文档指定在使用多个副本扩展关联部署时Kubernetes服务的行为。
使用Deployment
部署的Pod应该是无状态的。
使用Ingress
(L7代理)时,路由可以基于http请求内容,但这取决于您使用的IngressController的实现。例如。 Ingress-nginx对粘性会话具有 some 支持,其他实现可能正是您所需要的。例如。 Istio支持类似的设置。
大使
您撰写的Ambassador确实对会话相似性/粘性会话具有一些支持。
配置粘性会话使大使将请求路由到给定会话中的相同后端服务。换句话说,会话中的请求由相同的Kubernetes pod
提供服务
当群集中的Pod向群集中的服务发出http请求时,默认情况下,kube-proxy does routing以循环方式。
默认情况下,用户空间模式下的kube-proxy通过循环算法选择后端。
如果要在Pod到服务的路由上建立会话亲缘关系,可以在SessionAffinity: ClusterIP
对象上设置Service
字段。
如果要确保每次都将来自特定客户端的连接传递到同一Pod,可以通过将service.spec.sessionAffinity设置为“ ClientIP”(默认值为“无”)。