【问题标题】:How kubernetes request and limit works in pressure?Kubernetes 请求和限制如何在压力下工作?
【发布时间】:2019-10-24 18:54:15
【问题描述】:

让我们假设 Kubernetes 集群有一个工作节点(1 个核心和 256MB RAM)。所有的 pod 都将在工作节点中调度。

一开始我部署了一个带有配置的 pod(请求:cpu 0.4,限制:cpu 0.8),它部署成功。由于机器有 1 个核心空闲,因此需要 0.8 个 cpu

我可以部署另一个具有相同配置的 pod 吗?如果是,第一个 pod 的 cpu 会减少到 0.4 吗?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    在两个不同的地方考虑资源请求和限制。

    只有在调度 pod 时才会考虑请求。如果您在具有 1.0 CPU 的节点上调度两个每个请求 0.4 CPU 的 Pod,那么它们都适合并且都可以在那里调度(以及其他总共请求最多 0.2 CPU 的 Pod)。

    限制节流 CPU 利用率,但也受节点的实际物理限制。如果一个 pod 尝试使用 1.0 CPU,但其 pod 规范将其限制为 0.8 CPU,它将受到限制。如果其中两个 Pod 在同一个假设节点上运行,并且只有 1 个实际 CPU,那么它们将受内核调度策略的约束,实际上可能每个都获得大约 0.5 个 CPU。

    (内存遵循相同的基本模型,除了如果 pod 超出其限制或节点上使用的总内存超过可用内存,则 pod 将被 OOM 杀死。如果您的节点有 256 MB RAM,并且每个 pod 有 96 MB 的内存请求和 192 MB 的限制,它们都可以被调度 [192 MB 请求的内存适合] 但如果任何一个单独分配超过 192 MB 的 RAM [它自己的限制] 或者如果总数该节点上所有 Kubernetes 和非 Kubernetes 进程使用的内存超过了物理内存限制。)

    【讨论】:

      【解决方案2】:

      允许小数请求。 spec.containers[].resources.requests.cpu 为 0.5 的容器保证 CPU 是要求 1 个 CPU 的容器的一半。表达式 0.1 等价于表达式 100m,可以读作“一百毫普”。有人说“一百毫核”,这被理解为同一个意思。带小数点的请求,比如 0.1,被 API 转换为 100m,精度不允许小于 1m。出于这个原因,可能首选 100m 形式。 CPU 总是作为绝对数量被请求,而不是相对数量; 0.1 与单核、双核或 48 核机器上的 CPU 数量相同。

      来自here

      在您的条件下,您可以在节点上运行 2 个 pod。

      【讨论】:

        猜你喜欢
        • 2013-08-20
        • 1970-01-01
        • 2021-09-03
        • 1970-01-01
        • 2022-11-04
        • 2019-10-03
        • 2020-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多