检查kubernetes Pod CPU和内存

时间:2019-02-05 09:51:56

标签: kubernetes

我试图查看kubernetes容器使用了多少内存和CPU。为此,我运行了以下命令:

kubectl top pod podname --namespace=default

我遇到以下错误:

W0205 15:14:47.248366    2767 top_pod.go:190] Metrics not available for pod default/podname, age: 190h57m1.248339485s
error: Metrics not available for pod default/podname, age: 190h57m1.248339485s
  1. 该错误该怎么办?还有其他方法可以获取Pod的CPU和内存使用情况吗?
  2. 我看到了此命令的示例输出,该示例显示CPU为250m。该如何解释?

  3. 如果我们进入Pod并运行linux top命令,是否得到相同的输出?

13 个答案:

答案 0 :(得分:18)

kubectl top pod <pod-name> -n <fed-name> --containers

仅供参考,这是在v1.16.2上

答案 1 :(得分:14)

如果要在不安装任何第三方工具的情况下检查pod的cpu /内存使用情况,则可以从cgroup获取pod的内存和cpu使用情况。

  1. 进入pod的执行模式<section class="product-description pt-5"> <div class="container"> <div class="row"> <div class="col-12"> <div id="accordion" class="accordion"> <div class="card mb-0"> <div class="card-header collapsed" data-toggle="collapse" href="#collapseOne"> <a class="card-title">Opis produktu</a> </div> <div id="collapseOne" class="card-body collapse py-3" data-parent="#accordion"> <div class="col-8 px-0">Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. </div> </div> <div class="card-header collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo"> <a class="card-title">Konserwacja</a> </div> <div id="collapseTwo" class="card-body collapse py-3" data-parent="#accordion"> <div class="col-8 px-0">Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. </div> </div> <div class="card-header collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseThree"> <a class="card-title">Inna zakładka</a> </div> <div id="collapseThree" class="card-body collapse py-3" data-parent="#accordion"> <div class="col-8 px-0">Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. </div> </div> </div> </div> </div> </div> </div> </section>
  2. 转到kubectl exec pod_name -- /bin/bash获取CPU使用情况 运行cd /sys/fs/cgroup/cpu
  3. 转到cat cpuacct.usage了解内存使用情况 运行cd /sys/fs/cgroup/memory

注意:此用法以字节为单位。

答案 2 :(得分:11)

使用 k9s 可以非常简单地检查所有资源的 CPU 和内存使用情况。

enter image description here

答案 3 :(得分:5)

您需要运行指标服务器才能使以下命令处理正确的数据:

  1. kubectl 获取 hpa
  2. kubectl 顶级节点
  3. kubectl 顶部 pods

没有度量服务器: 通过运行以下命令进入 pod:

  1. kubectl exec -it pods/{pod_name} sh
  2. cat /sys/fs/cgroup/memory/memory.usage_in_bytes

您将获得 pod 的内存使用量(以字节为单位)。

答案 4 :(得分:1)

  1. docs中所述,您应该安装metrics-server

  2. 250m表示250毫秒CPU,CPU资源以measured为单位,在Kubernetes中等于:

    • 1个AWS vCPU
    • 1个GCP核心
    • 1个Azure vCore
    • 具有超线程功能的裸机英特尔处理器上的1个超线程
      

    允许使用分数。一个请求0.5 CPU的容器是   保证的CPU数量是请求1个CPU的容器的一半。您   可以使用后缀m表示毫。例如100m CPU,100   milliCPU和0.1 CPU都相同。精度不超过1m   允许。

         

    CPU始终被请求为绝对数量,而不是相对数量   数量; 0.1与单核,双核上的CPU数量相同,   或48核计算机。

  3. 否,kubectl top pod podname显示给定Pod的度量标准,Linux topfree在容器中运行,并基于Linux系统报告的度量标准报告报告,该报告基于存储在其中的信息虚拟文件系统 /proc/,他们不知道它在哪里运行。

    这些链接上有更多详细信息:

答案 5 :(得分:1)

要检查 Kubernetes 中各个 Pod 的使用情况,请在终端中键入以下命令

$ docker ps | grep

这将提供您在 Kubernetes 中运行的容器列表 使用

检查 CPU 和内存利用率

$ docker stats

CONTAINER_ID  NAME   CPU%   MEM   USAGE/LIMIT   MEM%   NET_I/O   BLOCK_I/O   PIDS

答案 6 :(得分:0)

您需要部署heapster或metric服务器才能查看Pod的CPU和内存使用情况

答案 7 :(得分:0)

由于heapster已贬值并且将不会发布任何将来的版本,因此您应该继续安装metrics-server

您可以通过以下方式安装metrics-server:

  1. 克隆度量服务器github存储库:git clone https://github.com/kubernetes-incubator/metrics-server.git

编辑deploy/1.8+/metrics-server-deployment.yaml文件,并在command部分之后添加以下部分:

- command:
     - /metrics-server
     - --metric-resolution=30s
     - --kubelet-insecure-tls
     - --kubelet-preferred-address-types=InternalIP
  1. 运行以下命令:kubectl apply -f deploy/1.8+

它将安装度量服务器所需的所有要求。

有关更多信息,请查看我的以下答案:

  

How to Enable KubeAPI server for HPA Autoscaling Metrics

答案 8 :(得分:0)

如果您正在使用 minikube ,则可以启用metrics-server插件;这将在仪表板中显示信息。

答案 9 :(得分:0)

如果您使用 sh 或 bash 执行到您的 pod,您可以运行 top 命令,该命令将为您提供一些关于资源利用率的统计信息,每隔几分钟更新一次。

enter image description here

答案 10 :(得分:0)

一种无需安装指标服务器的替代方法。

它要求您当前将 crictl 安装到安装了 pod 的工作节点中。 official doc 中定义了 Kubernetes 任务。

一旦您正确安装了它,您就可以使用以下命令。 (在我的情况下,我不得不使用 sudo,但是,根据您的 Kubernetes 集群安装,可能不需要)

  1. 查找 Pod 的容器 ID sudo crictl ps
  2. 使用统计信息获取 CPU 和 RAM sudo crictl stats <CONTAINERID>

参考输出示例

CONTAINER           CPU %               MEM                 DISK                INODES
873f04b6cef94       0.50                54.16MB             28.67kB             8

答案 11 :(得分:0)

您可以使用定义的 API here

例如:

kubectl -n default get --raw /apis/metrics.k8s.io/v1beta1/namespaces/default/pods/nginx-7fb5bc5df-b6pzh | jq

{
  "kind": "PodMetrics",
  "apiVersion": "metrics.k8s.io/v1beta1",
  "metadata": {
    "name": "nginx-7fb5bc5df-b6pzh",
    "namespace": "default",
    "selfLink": "/apis/metrics.k8s.io/v1beta1/namespaces/default/pods/nginx-7fb5bc5df-b6pzh",
    "creationTimestamp": "2021-06-14T07:54:31Z"
  },
  "timestamp": "2021-06-14T07:53:54Z",
  "window": "30s",
  "containers": [
    {
      "name": "nginx",
      "usage": {
        "cpu": "33239n",
        "memory": "13148Ki"
      }
    },
    {
      "name": "git-repo-syncer",
      "usage": {
        "cpu": "0",
        "memory": "6204Ki"
      }
    }
  ]
}

其中 nginx-7fb5bc5df-b6pzh 是 pod 的名称。

注意 CPU 是以 nanoCPU 来衡量的,其中 1x10E9 nanoCPU = 1 CPU

答案 12 :(得分:-1)

有关如何部署指标服务器的详细步骤,请参见以下链接-> https://github.com/epasham/docker-repo/blob/master/k8s/deploy-metrics-server.md