水平扩展意味着我们通过在资源池中添加更多计算机来进行扩展。仍然可以选择集群中每个节点将拥有多少电量(CPU,RAM)。
使用Kubernetes管理集群时,非常容易为Pod设置任何CPU和内存限制。如何为群集节点(或Kubernetes中的Pod)选择最佳的CPU和内存大小?
例如,集群中有3个节点,每个节点有1个vCPU和1GB RAM。要处理更多负载,有2个选项:
一种简单的解决方案是计算每个选项的吞吐量和成本,然后选择较便宜的一个。有没有更高级的方法来选择具有水平可伸缩性的集群中节点的计算资源?
答案 0 :(得分:3)
对于此特定示例,我将选择2个vCPU而不是另一个1vCPU节点,但这主要是因为我认为在单个vCPU上针对任何严重问题运行OS都是错误的。要正常运行,系统需要2个以上可用的内核,否则很容易使一个vCPU不堪重负并使节点陷入尘埃。尽管没有理想的算法。这将取决于您的预算,工作负载的特征等。
根据经验,不要坚持太小的实例,因为一堆必须始终在它们上面运行的东西,无论它们的大小如何,节点越多,开销就越大。 3x 4vCpu + 16 / 32GB RAM对于初学者来说似乎是不错的计划,但同样……这取决于您的需求,需求和承受能力。
答案 1 :(得分:0)
答案与诸如等待时间和吞吐量之类的绩效指标有关:
延迟会影响吞吐量:更大的延迟=更少的吞吐量。
如果业务交易包含无法并行化的服务的多个顺序调用,则必须根据所需的等待时间值选择计算资源(CPU和内存)。在这种情况下,添加更多服务实例(水平扩展)将不会对延迟产生任何积极影响。 添加更多服务实例可以提高吞吐量,从而可以并行处理更多请求(如果没有瓶颈)。
换句话说,分配CPU和内存资源,以便服务具有所需的响应时间,并添加更多服务实例(水平扩展)以并行处理更多请求。