【问题标题】:Kubernetes: CPU Resource allocation for PODKubernetes:POD 的 CPU 资源分配
【发布时间】:2020-03-30 05:36:47
【问题描述】:

我正在尝试为 kubernetes pod 中运行的服务分配 CPU 资源。服务主要是基于 nodejs 的带有一些数据库操作的 REST 端点。

在负载测试期间,为 pod 尝试了 100m 和 1000m 之间的不同组合。 对于预期的每秒请求数,当值小于 500m 时,作为 HPA 的一部分生成的 pod 比值大于 500m 时要多。我正在为 HPA 使用基于 CPU 的触发器。

我无法弄清楚我应该选择什么特定的 CPU 资源值。有人可以在这方面帮助我吗?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    两点:

    1. 如果您将 HPA 配置为根据 CPU 利用率自动缩放,那么如果 CPU 请求为 500m,则副本数比 1000m 多是有意义的。这是因为您为 HPA 定义的目标利用率与 Pod 的 CPU 请求相关。

      例如,如果您的目标利用率为 80%,并且 Pod 的 CPU 请求为 500m,那么如果实际 CPU 使用率超过 400m,HPA 会扩展您的应用程序。另一方面,如果 CPU 请求为 1000m,则 HPA 只有在 CPU 使用率超过 800m 时才会向上扩展。

    2. 为容器选择资源请求(例如 CPU)非常重要,但它本身也是一门艺术。 CPU 是容器可靠运行所需的最小 CPU 量。您可以通过在本地运行您的应用程序并尝试评估它实际使用的 CPU 量来找出该值,例如使用pstop

    【讨论】:

    • 感谢您的回复。是的,我发现这是一门艺术。 :) 我对一个特定 pod 在任何时间点应该处理多少个同时请求感到困惑。是什么决定了这个价值。
    • 如果你真的想找到一个合适的值,它需要一些实验和负载测试。
    • 是的,我做了实验。在稳定状态下,当 CPU 配置了 XC 时,每个 pod 服务大约每秒 X 个请求。当 CPU 配置了 YC 时,每个 pod 的服务大约是 Y 请求/秒。我还发现,当放置在同一个节点上时,“依赖”的 pod 会导致整个节点 CPU 随着请求率的上升而上升。我也不确定 PODS 的位置。
    • 调度器使用每个 Pod 的 CPU 请求来决定将 Pod 放置在哪个节点上。例如,如果您有一个具有 2 个空闲 CPU 内核的节点,并且您的 Pod 的 CPU 请求为 500m,那么调度程序可能会在该节点上放置 4 个这些 Pod。另一方面,如果 Pod 的 CPU 请求是 1000m,那么调度器最多会将这些 Pod 中的 2 个放在这个节点上。
    • 但 Pod 的 CPU 请求不应直接影响您的应用每秒处理的请求数。它仅由调度程序用于决定放置节点的位置。如果它对您的请求率有影响,那么只有当 Pod 超过其 CPU 限制(这与 CPU 请求不同)时才会出现这种情况,在这种情况下Pod 受到限制。
    猜你喜欢
    • 2020-05-21
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 2019-11-17
    • 1970-01-01
    相关资源
    最近更新 更多