【问题标题】:kubernetes pod resource cpu on nodes with different cpu cores count具有不同 cpu 核心数的节点上的 kubernetes pod 资源 cpu
【发布时间】:2021-10-14 15:03:34
【问题描述】:

这有点疯狂,但我们运行一个有 4 个节点的 Kubernetes 集群(使用 Docker 作为容器引擎):

  • node01/node02:8 核
  • node03/node04:4 核

对于容器化应用程序的真正 cpu 提供的 pod 资源请求 cpu 到底是什么,我感到困惑。

据我了解,部署中请求 1 个 CPU 的 pod 都将具有相同的 cpu 份额,因此这意味着容器在 node01/node02 上的运行速度将比 03/04 快?

【问题讨论】:

  • 您的问题不清楚。你在 Deployment 上设置了什么 CPU 请求?但是,是的,如果容器有更多的 CPU 资源或更快的可用 CPU,它通常会运行得更快。
  • 谢谢,在问题中添加了它,比如说 pods request.cpu = 1

标签: kubernetes


【解决方案1】:

不一定:

  • 如果应用程序是单线程的,那么无论它所在的系统有多少个内核,它都会以相同的速度运行。
  • 如果应用程序受磁盘或数据库限制,则添加更多内核不会使其运行更快。
  • 如果其他 pod(或非 Kubernetes 进程)在其中一个节点上运行,它们共享 CPU 资源,而繁忙的 8 核系统实际上可能比空闲的 4 核系统慢。
  • 如果 pod 规范有 resource requests,则可能会阻止它在较小的系统上运行
    resources:
       requests:
         cpu: 6 # can't run on the 4-core system
    
  • 如果 pod 规范有资源限制,这可能会阻止它使用所有内核,即使它被安排在更大的系统上
    resources:
       limits:
         cpu: 3 # even if it's scheduled on the 8-core system
    

【讨论】:

  • 实际上,我们遇到的问题是,当 pod 在小节点上运行时,nodejs 应用程序抛出 OOM 异常,我看到(通过 grafana nodejs 指标)在这种情况下,GC 运行次数少于大节点,这就是为什么我得出结论,即使 CPU 请求相同,Pod 在小节点上的 CPU 也会更少
  • 谢谢,所以 CPU 请求将是保证的 CPU,如果我的 pod 需要更多,如果没有更多可用份额,节点不能提供更多? (这就是为什么我只在小节点上看到 OOM)
  • CPU 和内存是不同的资源。能够并行运行更多任务并不一定意味着您将使用更多内存。相反,具有较少内核的节点也可能具有较少的可用内存,这就是您遇到 OOM 问题的原因。在您的 pod 上设置 memory: 请求和限制是一种很好的做法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 2019-06-03
相关资源
最近更新 更多