【发布时间】:2019-12-01 03:24:06
【问题描述】:
在 Kubernetes 中,服务通过服务 ip 相互通信。使用 iptables 或类似的东西,每个 TCP 连接都被透明地路由到可用于被调用服务的 pod 之一。如果调用服务没有关闭 TCP 连接(例如,使用 TCP keepalive 或连接池),它将连接到一个 pod,而不使用可能产生的其他 pod。
处理这种情况的正确方法是什么?
我自己不满意的想法:
每次 api 调用后关闭连接
为了将请求分发到不同的 pod,我是否让每次调用都变慢了?感觉不对。
最少连接数
我可以强制调用者打开多个连接(假设它会在这些连接之间分配请求)但是应该打开多少个?调用者(可能不应该)不知道有多少个 pod。
禁用突发
我可以限制被调用服务的资源,使其在多个请求时变慢,并且调用者将打开更多连接(希望与其他 pod)。同样,我不喜欢任意减慢请求速度的想法,这仅适用于 cpu 绑定服务。
【问题讨论】:
标签: kubernetes kube-proxy