我的Kubernetes集群中有一半从未使用过,因为Pods的计划方式



我有一个有4个节点的Kubernetes集群,理想情况下,我的应用程序应该有4个副本,均匀分布在每个节点上。然而,当pod被调度时,它们几乎总是只出现在其中两个节点上,或者如果我很幸运的话,出现在4个节点中的3个节点上。我的应用程序流量很大,我真的很想使用我支付的所有资源。

我怀疑发生这种情况的原因是Kubernetes试图在拥有最多可用资源的节点上调度新的pod,这是一个很好的概念,但如果它能在旧节点再次可用时重新调度pod,那就更好了。

我有什么选择?谢谢

您有很多选择!

首先也是最重要的:Pod亲和性和反亲和性,以确保您的Pod更喜欢放置在没有相同标签的Pod的主机上。

其次,您可以设置吊舱拓扑排列约束。这是一种更新的、更先进的方法,但通常是一种更好的解决方案,即简单的抗亲和力。

第三,您可以使用NodeSelector将Pods固定到特定节点。

最后,您可以编写自己的调度程序或修改默认的调度程序设置,但这是一个更高级的主题。不要忘记始终正确设置资源请求,这些请求应该设置为或多或少封装高峰流量期间使用情况的值,以确保节点有足够的可用资源来最大限度地利用Pod,而不会干扰其他Pod。

相关内容

最新更新