1

首先请求转到我已经实现的代理服务,服务将请求随机转发到 Pod,而不使用 sessionAffinity。我想根据我使用 post 方法在请求参数中设置的自定义值向同一个 pod 发送请求。我在我的服务 yml 中使用了 sessionAffinity。

这是带有 sessionAffinity 的服务 yml:

apiVersion: v1
metadata:
  name: abcd-service
  namespace: ab-services
spec:
  ports:
  - name: http
    protocol: TCP
    port: ****
    targetPort: ****
    nodePort: *****
  selector:
    app: abcd-pod
  sessionAffinity: ClientIP
  sessionAffinityConfig:
    clientIP:
      timeoutSeconds: 600
  type: NodePort

现在的问题是,当多个客户端从同一 IP 地址发送请求时,所有请求都被定向到单个 pod 而不是其他副本,导致负载平衡不均匀。但我也不希望随机转发请求。我希望根据我在发布请求中设置的自定义值而不是通过 clientIP 转发来自同一客户端或不同客户端的所有请求,因为 clientIP 解析为每个请求的源 IP。

4

1 回答 1

3

如您在此处阅读的,它目前仅支持ClientIPNone值。

sessionAffinity 字符串支持“ClientIP”和“None”。用于维护会话亲和性。启用基于客户端 IP 的会话亲和性。必须是 ClientIP 或 None。默认为无。更多信息: https ://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

不幸的是,不允许其他值。

于 2020-02-20T12:21:11.293 回答