有没有办法在 kubernetes 中为 sessionAffinity 提供 ClientIP 以外的自定义值?

Is there a way to provide custom value other than ClientIP for sessionAffinity in kubernetes?

首先请求转到我已经实现的代理服务,服务将请求随机转发到 pods,而不使用 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 而不是其他副本,导致负载平衡不均衡。但我也不希望随机转发请求。我希望根据我在 post 请求中设置的自定义值转发来自同一客户端或不同客户端的所有请求,而不是 clientIP 考虑到 clientIP 解析为每个请求的源 ip。

如您所见,here,它目前仅支持 ClientIPNone 值。

sessionAffinity string Supports "ClientIP" and "None". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

很遗憾,不允许使用其他值。