如何在对 Kubernetes 服务的请求中使用 Session Affinity?
How to use Session Affinity on requests to Kubernetes service?
我找不到指定 Kubernetes 服务在使用多个副本扩展附属部署时的行为方式的文档。
我假设存在某种负载平衡。与服务类型有关吗?
另外,我希望在服务转发的请求中有一些亲和力(即,如果可能,所有具有特定后缀的请求都应始终映射到同一个 pod,等等)。这是可以实现的吗?我见过的关闭是 Ambassador,但这是服务级别的亲和力,而不是 pod 级别。
部署:无状态工作负载
I could not find a documentation that specifies how Kubernetes service behaves when the affiliated deployment is scaled with multi replicas.
使用 Deployment
部署的 Pods 应该是无状态的。
进入服务路由
当使用 Ingress
、L7-proxy 时,路由可以基于 http 请求内容,但这取决于您使用的 IngressController 的实现。例如。 Ingress-nginx has some support for sticky sessions and other implementations may have what you are looking for. E.g. Istio 已支持类似设置。
大使
您写的 Ambassador 也有 一些 支持 session affinity / sticky sessions.
Configuring sticky sessions makes Ambassador route requests to the same backend service in a given session. In other words, requests in a session are served by the same Kubernetes pod
Pod 到服务路由
当集群中的 pod 向集群中的服务发出 http 请求时,kube-proxy does routing 默认采用 循环 方式。
By default, kube-proxy in userspace mode chooses a backend via a round-robin algorithm.
如果你想在 Pod 到服务的路由上建立会话关联,你可以在 Service
对象上设置 SessionAffinity: ClientIP
字段。
If you want to make sure that connections from a particular client are passed to the same Pod each time, you can select the session affinity based on client’s IP addresses by setting service.spec.sessionAffinity to “ClientIP” (the default is “None”).
我找不到指定 Kubernetes 服务在使用多个副本扩展附属部署时的行为方式的文档。
我假设存在某种负载平衡。与服务类型有关吗?
另外,我希望在服务转发的请求中有一些亲和力(即,如果可能,所有具有特定后缀的请求都应始终映射到同一个 pod,等等)。这是可以实现的吗?我见过的关闭是 Ambassador,但这是服务级别的亲和力,而不是 pod 级别。
部署:无状态工作负载
使用I could not find a documentation that specifies how Kubernetes service behaves when the affiliated deployment is scaled with multi replicas.
Deployment
部署的 Pods 应该是无状态的。
进入服务路由
当使用 Ingress
、L7-proxy 时,路由可以基于 http 请求内容,但这取决于您使用的 IngressController 的实现。例如。 Ingress-nginx has some support for sticky sessions and other implementations may have what you are looking for. E.g. Istio 已支持类似设置。
大使
您写的Ambassador 也有 一些 支持 session affinity / sticky sessions.
Configuring sticky sessions makes Ambassador route requests to the same backend service in a given session. In other words, requests in a session are served by the same Kubernetes pod
Pod 到服务路由
当集群中的 pod 向集群中的服务发出 http 请求时,kube-proxy does routing 默认采用 循环 方式。
By default, kube-proxy in userspace mode chooses a backend via a round-robin algorithm.
如果你想在 Pod 到服务的路由上建立会话关联,你可以在 Service
对象上设置 SessionAffinity: ClientIP
字段。
If you want to make sure that connections from a particular client are passed to the same Pod each time, you can select the session affinity based on client’s IP addresses by setting service.spec.sessionAffinity to “ClientIP” (the default is “None”).