我正在尝试查看 kubernetes pod 使用了多少内存和 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
有没有其他方法来获取 Pod 的 CPU 和内存使用情况?
我看到这个命令的示例输出显示 CPU 为 250m。
如果我们进入 pod 并运行 linuxtop
命令,我们会得到相同的输出吗?
在没有度量服务器或任何第三方工具的情况下进行检查
如果您想在不安装任何第三方工具的情况下检查 pods cpu / 内存使用情况,那么您可以从 cgroup 获取 pod 的内存和 cpu 使用情况。
进入 pod 的 exec 模式kubectl exec -it pod_name -n namespace -- /bin/bash
运行cat /sys/fs/cgroup/cpu/cpuacct.usage
查看 cpu 使用情况
运行cat /sys/fs/cgroup/memory/memory.usage_in_bytes
查看内存使用情况
确保已将资源部分(请求和限制)添加到部署中,以便它可以根据 cgroup 计算使用情况,并且容器将遵守在 pod 级别上设置的限制
注意:此用法以字节为单位。这可能因 Pod 使用情况而异,并且这些值经常更改。
kubectl top pod <pod-name>-n <fed-name>--containers
仅供参考,这是在 v1.16.2
使用k9s作为一种超级简单的方法来检查所有资源的 cpu 和内存使用情况。
如docs中所述,您应该安装metrics-server
250m 表示 250 milliCPU,CPU 资源以 CPU 为单位measured,在 Kubernetes 中,相当于:
1 个 AWS vCPU
1 个 GCP 核心
1 个 Azure vCore
1 个采用超线程技术的英特尔裸机处理器上的超线程
允许使用分数值。请求 0.5 CPU 的容器保证是请求 1 CPU 的容器的一半。您可以使用后缀 m 表示 milli。例如,100m CPU 、 100 milliCPU 和 0.1 CPU 都是相同的。不允许小于 1m 的精度。
CPU 总是被要求作为绝对量,而不是相对量;0.1 是单核,双核或 48 核机器上相同的 CPU 量。
不,kubectl top pod podname
显示给定 Pod 的指标,Linuxtop
和free
在容器内运行,并根据 Linux 系统报告基于存储在虚拟文件系统/proc/
中的信息报告指标,它们不知道运行它的 cgroup。
有关这些链接的更多详细信息:
Why top and free inside containers don't show the correct container memory Kubernetes top vs Linux top本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(47条)