各位大佬,怎么能获取 K8S 里面某个 pod 的某个容器的负载呢?

2021-12-20 15:00:12 +08:00
 zhoudaiyu

能通过 cgroup 看容器的 cpu 和内存,但是负载好像只能看到宿主机的,没法看到某个容器的。

3097 次点击
所在节点    Kubernetes
17 条回复
momocraft
2021-12-20 15:27:07 +08:00
load 的意义是等待 CPU 的队列的长度
容器一般不独占 CPU, 以容器单位统计好像意义不大
zhoudaiyu
2021-12-20 15:31:01 +08:00
@momocraft #1 领导就要看这个,我也好奇,就像问问😂
ch2
2021-12-20 18:59:04 +08:00
自己计算,容器本质上是宿主机里的一组进程
你挨个 docker top 每个容器,把 pid 分组
然后在宿主机上 top ,把所有进程的负载都获取到
按上一步获取的分组来个求和,就得到了每个容器的负载
locoz
2021-12-20 19:40:10 +08:00
可以直接用现成的比如 kubesphere 来看
mikuazusa
2021-12-20 19:50:24 +08:00
kubectl top pod POD_NAME --sort-by=cpu
kangkang
2021-12-20 20:36:17 +08:00
grafana 有现成模板
zhoudaiyu
2021-12-20 20:56:17 +08:00
@ch2 #3 docker top 看不出负载啊
@locoz #4 没有这个,能不能通过命令行看到呢
@mikuazusa #5 top 看到的是 pod 的 cpu 和内存吧
@kangkang #6 能不能通过命令行看到呢
ch2
2021-12-20 21:13:34 +08:00
@zhoudaiyu #7 docker top 只是为了知道哪个容器有哪些进程,知道了之后再在宿主机上分组求和
plko345
2021-12-21 00:53:47 +08:00
prometheus 一整套解决方案
SIGEV13
2021-12-21 06:56:23 +08:00
用 prometheus operator, 直接装 Prometheus 和一系列的 recording rules, 里面就有 pod 和容器的资源消耗。
https://github.com/prometheus-operator/prometheus-operator
UnknownR
2021-12-21 10:34:24 +08:00
引入 prometheus ,可以部署在 k8s 里,然后用 Lens 、KuPi 等 IDE 工具查看,直接在面板就能看到负载。也可以接入 Grafana ,做成完整的监控方案,都很容易
pydiff
2021-12-21 13:25:32 +08:00
还是有点好奇的,你上 k8 没做监控,日志分析这样工作的吗
zhoudaiyu
2021-12-21 13:48:06 +08:00
@pydiff #12 上了监控和日志报警,但是没有监控容器 load 的
pydiff
2021-12-21 13:50:40 +08:00
@zhoudaiyu 普罗就有,不知道你们是用哪个 k8 管理平台
zhoudaiyu
2021-12-21 15:01:46 +08:00
@pydiff #14
@UnknownR #11
@SIGEV13 #10
@plko345 #9 看到了大哥们,但是负载都是 0 ,可能是有点问题监控
zhoudaiyu
2021-12-21 15:02:33 +08:00
@ch2 #8 有个问题,就是怎么从容器的 cpu 占用率和机器的负载,推算出每个容器的负载
julyclyde
2021-12-21 17:53:15 +08:00
这是个比例啊
但你怎么定义分母呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/823336

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX