正如发现的here,有一种新的kube服务是IPVS并且有许多用于负载平衡的算法。
唯一的问题是我没有找到指定这些算法的位置。
我的理解:
rr
:round-robin - >在一个循环中一个接一个地调用后端podlc
:最少连接 - >将具有最低连接数的所有pod分组,并向其发送消息。哪种联系?只有来自这项服务的人?dh
:目的地哈希 - >?基于网址的东西?sh:
源哈希 - >?基于url的东西?sed
:最短的预期延迟 - >后端用较少的ping或一些逻辑在后端响应过去的时间nq
:从不排队 - >最少连接?但在某些方面拒绝消息?如果有人有文档链接(official page中没有提供,仍然说IPVS是beta,而它是稳定的sinc 1.11)或所有这些背后的真实算法,请帮助。
我试过:谷歌搜索官方文档中的条款+查找。
它们在代码https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/apis/config/types.go#L193中定义
rr
循环法:在可用的真实服务器之间平均分配工作lc
最少连接:将更多作业分配给具有较少活动作业的真实服务器sh
源哈希:通过按源IP地址查找静态分配的哈希表,将作业分配给服务器dh
目标哈希:通过按目标IP地址查找静态分配的哈希表,将作业分配给服务器sed
最短预期延迟:以最短的预期延迟将传入的作业分配给服务器。如果发送到第i个服务器,作业将经历的预期延迟是(Ci + 1)/ Ui,其中Ci是第i个服务器上的作业数,Ui是第i个服务器的固定服务速率(权重)。nq
从不排队:如果存在,则将传入的作业分配给空闲服务器,而不是等待快速服务器;如果所有服务器都忙,则采用ShortestExpectedDelay策略来分配作业。所有这些都来自IPVS官方文档:http://www.linuxvirtualserver.org/docs/scheduling.html
问候