总CPU请求高,但总使用率低(kubernetes资源)

总CPU请求高,但总使用率低(kubernetes资源),kubernetes,Kubernetes,我在集群中有一堆pod,它们几乎在请求节点上的所有(7.35/8)可用CPU资源: 即使它们的实际总使用量几乎为零(0.34/8) 目前请求最多的pod只请求210m,我想这不是一个惊人的数量——我还想为集群中的所有pod强制一些合理的最小请求大小。当然,当有很多豆荚时,这些会积累起来 似乎我可以轻松地将请求缩小10倍,并将限制保留在开始的地方 但是,在这样做之前,我是否还应该研究其他一些事情——减少副本数量等 另外,吊舱在节点之间的分布并不均匀,这看起来有点奇怪 您的请求值似乎被高估了。 您

我在集群中有一堆pod,它们几乎在请求节点上的所有(7.35/8)可用CPU资源:

即使它们的实际总使用量几乎为零(0.34/8)

目前请求最多的pod只请求210m,我想这不是一个惊人的数量——我还想为集群中的所有pod强制一些合理的最小请求大小。当然,当有很多豆荚时,这些会积累起来

似乎我可以轻松地将请求缩小10倍,并将限制保留在开始的地方

但是,在这样做之前,我是否还应该研究其他一些事情——减少副本数量等

另外,吊舱在节点之间的分布并不均匀,这看起来有点奇怪


您的请求值似乎被高估了。 您需要时间和指标来为您的工作负载找到合适的请求/限制

请记住,如果更改这些值,POD将重新启动

此外,在集群上发现一些不平衡的节点也是正常的。如果你不问的话,库伯内特斯永远不会移除一个豆荚

例如,如果您创建了一个包含3个节点的集群,请用pod填充这3个节点,然后再添加3个节点。新节点将保持为空

您可以在集群上设置一些,以使pod的数量适应您的工作负载。 这样,您的工作负载将以正确的平衡分布在节点之间。(如果使用默认设置,我建议如下:

  • 资源分配:基于历史值,使用缓冲区将您的请求设置为有意义的值。此外,为了保证pod资源分配,最好将请求和限制设置为相同的值。但这意味着您的pod无法突发获取新资源。需要注意的是,仅根据请求的值进行调度,所以如果节点并没有更多的资源剩余,那个么pod将被终止,若您的请求试图突破限制,那个么pod将被重新调度
  • 资源配额:检查Kubernetes是否具有合理的命名空间级别配额,以控制开发人员过度配置的资源
  • 亲缘关系/反亲缘关系:检查反亲缘关系的概念,以便在集群中安排副本或不同的pod。您可以确保一个主机或可用区域等只能有一个pod副本(在HA中有帮助),将不同的pod分散到不同的节点(层调度等)-检查此项

  • 有很好的答案,但我想补充一些更多的信息

    在计算每个容器需要多少资源时,有一个好的策略是非常重要的。 最理想的情况是,你的POD应该精确地使用你所请求的资源量,但这几乎是不可能实现的。如果使用量低于你的请求,你就在浪费资源。如果它更高,你就在冒着性能问题。把25%的余量考虑为一个很好的起点。好的设置取决于尝试和调整。没有适合每个人的最佳值,因为它取决于与应用程序本身、需求模型、错误容忍度等相关的许多因素

    这是一个很好的指南,通过详细的解释和示例来解释这些机制背后的思想

    此外,还将向您提供有关以下方面的官方文件:

    • 请求和限制

    • 资源类型

    • Pod和容器的资源请求和限制

    • 库伯内特斯的资源单位

    • 如何安排具有资源请求的POD

    • 如何运行具有资源限制的POD等


    以防万一您需要参考。

    参考标签,-此类问题可能属于serverfaultHello@u123。有进展吗?