【问题标题】:Why the CPU usage of a GKE Workload is not equal to the sum of the CPU usage of its pods?为什么 GKE Workload 的 CPU 使用率不等于其 pod 的 CPU 使用率之和?
【发布时间】:2020-06-02 16:28:12
【问题描述】:

我试图弄清楚为什么 GKE“工作负载”CPU 使用率不等于其 pod 的 CPU 使用率总和。

下图显示了工作负载 CPU 使用情况。

Service Workload CPU Usage

下图显示了上述工作负载的 pod CPU 使用率。

Pod #1 CPU Usage

Pod #2 CPU Usage

例如,在 9:45,Workload cpu 使用率约为 3.7 个内核,但同时 Pod#1 的 CPU 使用率约为 0.9 个内核,Pod#2 的 CPU 使用率也约为 0.9 个内核。这意味着,服务 Workload CPU Usage 应该在 1.8 个内核左右,但事实并非如此。

有人知道这种行为吗?

谢谢。

【问题讨论】:

  • 澄清一下,您的意思是为什么部署 CPU 使用率大于单个 pod 的 CPU 使用率,对吗?
  • 是的,你是对的。我就是这个意思。

标签: kubernetes google-cloud-platform google-kubernetes-engine kubernetes-pod


【解决方案1】:

在您的 VM(由 Kubernetes 管理的节点)上,您拥有已部署的 pod(由您管理),还有一些在其上运行的服务,用于监督、管理、日志摄取……基本描述 @987654321 @

您可以通过执行此命令kubctl get all --namespace kube-system查看所有这些基本服务。

如果您安装了其他组件,例如 Istio 或 Knative,您将拥有额外的服务和命名空间。这些都获得了节点的一部分资源。

【讨论】:

  • 一开始我以为是因为我有Datadog Agent、Fluentd Collector、Twistlock等等。但是,即使我添加了这些组件的 CPU 使用率,我也无法接近 GCP 显示的部署 CPU 使用率。
【解决方案2】:

丹尼,

工作负载页面上的 CPU 图表是托管 pod 的 CPU 使用率汇总。这些值取自 Stackdriver Monitoring 指标容器/cpu/usage_time,请查看此link。该指标表示“以秒为单位的所有内核上的累积 CPU 使用率。这个数字除以经过的时间表示使用率作为内核数,而不管可能设置的任何内核限制。”

如果您对此还有其他问题,请告诉我。

【讨论】:

  • 阅读文档我明白了你的想法。但这对我来说仍然没有意义,因为托管 pod CPU 使用率图表和工作负载 CPU 使用率图表都使用了相同的指标。在这种情况下,我想知道为什么托管 pod 的 CPU 使用率总和不等于 Workload CPU 使用率。
  • Danny,工作负载页面上的 CPU 图表不是您的 pod CPU 负载的总和,我与您共享的信息是由与我一起在 Google 工作的同事提供的。所以,你可以相信我之前的消息。
【解决方案3】:

我怀疑这是 UI 中的错误。没有部署 CPU 使用率的实际指标。 Stackdriver Monitoring 仅收集 container, pod, and node 级别指标的数据,因此在这种情况下唯一真正可靠的指标是 pod CPU 使用率。

总部署 CPU 使用率图表可能意味着计算所有 pod 指标的总和,然后呈现给您。它不如 pod 或容器指标可靠,因为它不是直接指标。

如果您一直看到这种差异,我建议您通过 Google Public Issue Tracker 打开 UI 错误报告,向 GCP 工程师报告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    • 2012-10-09
    相关资源
    最近更新 更多