【问题标题】:How many cores do kubernetes pods use when it's CPU usage is limited by policy?当 CPU 使用率受策略限制时,kubernetes pod 使用多少个内核?
【发布时间】:2019-06-24 17:24:11
【问题描述】:

Kubernetes 允许限制 pod 资源的使用。

requests:
  cpu: 100m
  memory: 128Mi
limits:
  cpu: 200m   # which is 20% of 1 core
  memory: 256Mi

假设我的 kubernetes 节点有 2 个核心。我在这个节点上以 CPU 限制运行这个 pod:200m。在这种情况下,我的 pod 会使用它的底层节点的 1Core 的 200m 还是 2Core 的 100m+100m

我的gunicorn worker's number formula 或 nginx 工作人员的编号等需要此计算。 在 gunicorn 文档中它说

通常我们建议 (2 x $num_cores) + 1 作为工人数量 开始吧。

那么我应该使用 5 个工人吗? (我的节点有 2 个核心)。或者我的 pod 只分配了 200m cpu 并且我应该考虑我的 pod 有 1 个核心,这甚至都没有关系?

TLDR: 当 pod 的 cpu 使用受到 kubernetes 限制时,pod 使用多少个内核?如果我在 pod 内运行 top,我会看到 2 个内核可用。但我不确定我的应用程序使用的是 2 核的 10%+10% 还是 1 核的 20%..

【问题讨论】:

    标签: kubernetes gunicorn google-kubernetes-engine


    【解决方案1】:

    它将限制为一个核心的 20%,即 200m。此外,limit 意味着一个 pod 最多可以接触那么多 CPU,但不能再多。所以 pod CPU 利用率不会总是达到极限。

    集群的总 CPU 限制是集群中所有节点使用的内核总数。

    如果你有一个 2 节点集群并且第一个节点有 2 个核心,第二个节点有 1 个核心,那么 K8s CPU 容量将是 3 个核心(2 核心 + 1 核心)。如果您有一个请求 1.5 个核心的 pod,那么它不会被调度到第二个节点,因为该节点的容量只有 1 个核心。相反,它将被安排到第一个节点,因为它有 2 个核心。

    【讨论】:

    • Mhm,所以即使很难,我也可以通过使用top 命令看到 pod 内有 2 个内核可用,这并不意味着我的应用程序实际上可以使用 2 个内核的 10%+10%。相反,它只会占据 1 个核心的 20%?
    • 是的..它将使用最多 1 个核心的 20% 作为限制。
    • K8S 文档对此有点含糊,但它指出:“容器可能或可能不允许在较长时间内超过其 CPU 限制。但是,它不会因为过多的 CPU 使用而被杀死。” - kubernetes.io/docs/concepts/configuration/…
    【解决方案2】:

    CPU 以称为毫核的单位测量。集群中的每个节点都会内省操作系统以确定节点上的 CPU 内核数量,然后将该值乘以 1000 以表示其总容量。例如,如果一个节点有 2 个核心,则该节点的 CPU 容量将表示为 2000m。如果你想使用单核的 1/10,你可以将其表示为 100m。

    因此,如果您在集群中提供了200m milicores,那么它将坚持一个核心并占用该核心的 20%。现在,如果您为另一个 pod 提供了 1.5m,那么只有它会占用多个核心。

    【讨论】:

    • 嗯,我明白了,非常感谢您的解释。所以我应该将所有限制在 1000m 以下的 pod 视为单核,我的应用程序将只使用单核对吗?所以在我的情况下,我会使用 3 个 gunicorn 工人。因为(2 x $num_cores) + 1 转换为 2x1+1=3 对吗?很抱歉提出了一个愚蠢的问题,只是为了确定..
    • 是的,您应该假设如果设置为 CPU 的限制小于 1000m,那么它将仅驻留在单核中。由于您有 3 个工作节点和 1 个核心。每个工作节点总共将拥有 1000m CPU。因此,您将无法分配任何超过 1000m 限制的 pod。但是,正如你所说,你只需要 200m 的限制,我想你会没事的
    猜你喜欢
    • 2017-01-25
    • 2019-02-10
    • 2016-08-19
    • 1970-01-01
    • 2018-06-18
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    相关资源
    最近更新 更多