提问者:小点点

在不使用第三方工具的情况下检查kubernetes pod CPU和内存


我遵循了本页中第一个可能的解决方案:检查kubernetes pod CPU和内存

我试过命令:

Kubectl执行pod_name-- /bin/bash

但是它不起作用,因此我尝试了这个命令:

kubectl exec-n[namespace][pod_name]--目录测试.log

我知道这一点,因为当我运行该命令时:

kubectl获取pods--所有名称空间|grep[pod_name]

这是我看到的:

POD_NAME

但我收到此错误消息:

OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"cat\": executable file not found in $PATH": unknown
command terminated with exit code 126

你能让我知道如何解决这个问题吗?

##更新我尝试了k9s工具,但我也看不到CPU、成品吊舱的MEM,我们看不到成品吊舱中的CPU、MEM是正常的吗?

千禧年


共2个答案

匿名用户

看起来您想检查已完成的Pods的内存和CPU使用率。

我尝试了k9s工具,我也看不到CPU,已完成的容器的MEM,我们看不到已完成的容器的CPU,MEM是正常的吗?

我注意到它已经在运行,但使用此命令kubectl top pods-n%namespace%,我确实看到了运行pod的CPU、MEM,但没有看到已经完成的那个。

标记为已完成的播客不再运行(已终止),我们无法使用kubectl exec命令连接到它:

$ kubectl exec -it -n cronjob hello-1618235100-xwxkc -- bash
error: cannot exec into a container in a completed pod; current phase is Succeeded 

我们可以使用< code>kubectl get -ojson命令看到Pod阶段:

$ kubectl get pod hello-1618235100-xwxkc -n cronjob
NAME                     READY   STATUS      RESTARTS   AGE
hello-1618235100-xwxkc   0/1     Completed   0          6m11s

$ kubectl get pod hello-1618235100-xwxkc -n cronjob -ojson | grep -i phase
        "phase": "Succeeded",
   

可以在Pod相位留档中找到:

成功-播客中的所有容器都已成功终止,不会重新启动。

无法显示带有 kubectl top 命令的 Pod,因为指标服务器不存储指标历史记录(请参阅:指标服务器文档文档):

只会记住每个度量的最新值。如果用户需要访问历史数据,则应使用第三方监控解决方案或自行存档指标

匿名用户

查看pod的cpu和内存使用情况的最直接方法是安装metrics服务器,然后使用kubectl top-pods

指标服务器对集群的影响很小,它将帮助您监控集群。

您链接的SO帖子中的答案对我来说似乎是一个黑客,绝对不是监视您的Pod资源使用情况的常用方法。