17

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

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

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

4

1 回答 1

10

部署:无状态工作负载

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

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

入口到服务路由

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

大使

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

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

Pod 到 Service 路由

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

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

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

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

于 2019-11-20T17:50:38.663 回答