什么在请求我的 k8s 集群中的所有 CPU?

时间:2021-02-16 14:23:51

标签: kubernetes

有没有办法查看哪些 pod/容器正在请求(不使用)一个节点(或集群中的所有节点)上的所有 cpu?

在部署到我们的集群时,我们不断收到“CPU 不足”错误,即使我已经将所有应用程序的 CPU 请求拒绝到合理的数量,并且几乎没有实际使用任何 CPU。根据我的计算,我部署的容器请求大约 400m。这小于可用 CPU 总量的 7%(3 个节点 x 2 个内核 = 6000m,对吗?)。但是仪表板告诉我每个节点的 CPU 请求接近 2 个内核 (80-90%)

对我来说,其他东西似乎要求太多 CPU(入口?logstash?保险库?保险库边车?指标服务器?k8s 管理层?)。有没有办法(例如通过 kubectl 或仪表板)查看所有请求的位置?

1 个答案:

答案 0 :(得分:3)

对于单个节点,它位于 kubectl describe node node-name 的扩展输出中。

记住一个 Pod 是在单个节点上调度的;它不能跨节点拆分。如果您有一个需要 100% CPU 的 pod,以及 3x 2 核节点的 CPU 利用率为 120%,那么没有单个节点有足够的容量来调度 pod,即使整个集群有 3x 80% = 240可用 CPU 百分比。

我的一般经验是,在较少的较大节点上调度 pod 比在较小的节点上更容易。部分原因是 kubelet 和任何 DaemonSet pod 等进程的开销;部分原因是我在上一段中描述的碎片问题。您也可以人为地降低 pod 的资源请求以使其得到调度,但如果它比您说的更忙,它很容易受到限制(由于 CPU 使用率)或被驱逐(由于内存使用率)。