如何定期获取Kubernetes Pod指标并将其附加到文件中

olhwl3o2  于 2023-03-17  发布在  Kubernetes
关注(0)|答案(2)|浏览(137)

我正在对kubernetes pod运行负载测试,我希望每5分钟对它的CPU和内存使用情况进行一次采样。我目前正在对kubernetes pod手动使用linux top命令。
有没有办法让kubernetes pod每隔X分钟获取CPU/内存使用情况并将其附加到文件中?

qrjkbowd

qrjkbowd1#

您可以安装metrics server,然后编写一个小的bash脚本,在一个循环中调用kubectl top pods --all-namespaces的一些组合,并输出到一个文件。如果您想要更多内容的东西,另一个选择是运行Prometheus和/或kube-state-metrics,并设置它从系统中的所有pod获取指标。

bxpogfeg

bxpogfeg2#

试试下面的一行代码:

while [ true ]; do echo $(date) $(date +%s) $(kubectl top -n your-namespace pod $(kubectl get pods -n your-namespace -l your-label-name=your-label-value -o jsonpath='{..metadata.name}') | tail -n 1) | tee -a /path/to/save/your/logs.txt; done

每5分钟加入sleep 300进行取样,而不是连续取样。
它会在命名空间your-namespace中找到一个标签为your-label-name且值为your-label-value的pod,取其名称,如果有多个pod具有相同的标签(这就是| tail -n 1的作用),则只取最后一个这样的pod。

Sun, Mar 12, 2023 4:59:05 PM 1678640345 your-pod-name-5c64678fc6-rsldm 47m 657Mi

其中1678640345$(date +%s)写入的Unix毫秒时间戳。输出将在控制台(stdout)中打印并镜像到/path/to/save/your/logs.txt文件中。

相关问题