Kubernetes 服务:IPVS 负载均衡算法

Kubernetes Service: IPVS load balancing algorithm

发现here,有一种新的kube服务是IPVS,有很多负载均衡算法。

唯一的问题是我没有找到指定这些算法的位置。

我的理解:

  1. rr循环 ->循环调用后端pod
  2. lc: 最少连接 -> 将所有连接数最少的 pod 分组,并向其发送消息。哪种连接?只有来自此服务的那些?
  3. dh目标散列 -> ?基于 url?
  4. 的东西
  5. sh: 源哈希 -> ?基于 url?
  6. 的东西
  7. sed最短的预期延迟 -> ping 较少的后端或后端过去响应时间的一些逻辑
  8. nq: 从不排队 -> 与最少连接相同?但在某些时候拒绝消息?

如果有人有文档 link(未在 official page 中提供并且仍然说 IPVS 是测试版,而它是稳定同步 1.11)或所有这些文档背后的真实算法,请提供帮助。

我试过:Google在官方文档中使用术语搜索+查找。

它们在代码中定义 https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/apis/config/types.go#L193

  • rr round robin : 在可用的真实服务器之间平均分配作业
  • lc 最少连接 : 将更多作业分配给活动作业较少的真实服务器
  • sh source hashing : 通过查找静态分配的 hash table 通过它们的源 IP 地址
  • 将作业分配给服务器
  • dh 目标散列 : 通过根据目标 IP 地址
  • 查找静态分配的散列 table 来将作业分配给服务器
  • sed 最短预期延迟 :将传入作业分配给具有最短预期延迟的服务器。如果发送到第 i 个服务器,作业将经历的预期延迟为 (Ci + 1) / Ui,其中 Ci 是第 i 个服务器上的作业数,Ui是第i台服务器的固定服务率(权重)。
  • nq never queue : 如果有空闲服务器,则将传入作业分配给空闲服务器,而不是等待快速作业;如果所有服务器都忙,则采用 ShortestExpectedDelay 策略分配作业。

全部来自IPVS官方文档:http://www.linuxvirtualserver.org/docs/scheduling.html

此致