您可以安装metrics server,然后编写一个小的bash脚本,在一个循环中调用kubectl top pods --all-namespaces的一些组合,并输出到一个文件。如果您想要更多内容的东西,另一个选择是运行Prometheus和/或kube-state-metrics,并设置它从系统中的所有pod获取指标。
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
2条答案
按热度按时间qrjkbowd1#
您可以安装metrics server,然后编写一个小的bash脚本,在一个循环中调用
kubectl top pods --all-namespaces
的一些组合,并输出到一个文件。如果您想要更多内容的东西,另一个选择是运行Prometheus和/或kube-state-metrics,并设置它从系统中的所有pod获取指标。bxpogfeg2#
试试下面的一行代码:
每5分钟加入
sleep 300
进行取样,而不是连续取样。它会在命名空间
your-namespace
中找到一个标签为your-label-name
且值为your-label-value
的pod,取其名称,如果有多个pod具有相同的标签(这就是| tail -n 1
的作用),则只取最后一个这样的pod。其中
1678640345
是$(date +%s)
写入的Unix毫秒时间戳。输出将在控制台(stdout)中打印并镜像到/path/to/save/your/logs.txt
文件中。