我正在为在docker中运行并由kubernetes编排的脚本编写yaml文件。有没有办法评估特定命令或泊坞窗的资源利用率,或者为pod设置cpu和mem限制的最佳做法是什么?
修改
这些脚本中的大多数都会在短时间内运行,因此很难获得资源信息。我只想尝试找到一个工具来获得cpu和mem的最大用量,该工具就像@charset "utf-8";
/* CSS Document FOR HOME PAGE ONLY*/
.main {
height: 100%;
}
.slider {
height: 60%;
}
.promo-tiles {
height: 30%;
}
.promo-tiles-ul{
width: 25%;
display: inline-block;
list-style: none;
}
.promo-tiles li{
color: white;
}
一样,打印出执行时间。
答案 0 :(得分:3)
您可以使用docker stats
命令查看容器的统计信息。
例如;
docker stats containera containerb
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O
containera 0.00% 24.15 MB / 1.041 GB 2.32% 1.8 MB / 79.37 kB 0 B / 81.92 kB
containerb 0.00% 24.95 MB / 1.041 GB 2.40% 1.798 MB / 80.72 kB 0 B / 81.92 kB
或者,使用docker top <container>
docker top containera
UID PID PPID C STIME TTY TIME CMD
root 4558 2850 0 21:13 ? 00:00:00 sh -c npm install http-server -g && mkdir -p /public && echo "welcome to containera" > /public/index.html && http-server -a 0.0.0.0 -p 4200
root 4647 4558 0 21:13 ? 00:00:00 node /usr/local/bin/http-server -a 0.0.0.0 -p 4200
Docker compose(如docker本身)允许您为容器设置资源限制,例如,限制使用的最大内存量,cpu-shares等。
请阅读docker-compose yaml reference中的此部分,以及"Runtime constraints on resources"上的泊坞窗运行参考
答案 1 :(得分:2)
问题中有一些好的答案:Peak memory usage of a linux/unix process
TL; DR :/usr/bin/time -v <command>
或使用valgrind
。
这应该可以帮助您了解需要分配多少内存作为应用程序的限制,但CPU是一个有点不同的野兽。如果您的应用程序是CPU绑定的,那么无论您设置什么限制,它都将使用您提供的所有CPU。此外,在Kubernetes中,您可以为应用程序分配核心(或毫微秒),因此了解在任何特定计算机上使用的CPU百分比并不总是非常有用,因为它不会轻易转换为核心。
您应该为您的应用程序提供尽可能多的CPU核心,并且允许您的应用程序在可接受的时间内成功。这取决于成本以及群集中可用的核心数量。它还取决于您的应用程序的架构。例如,如果应用程序无法利用多个内核,那么提供多个内核的用量就不多了。
如果您有更长时间运行的应用,可以尝试安装Kubedash。如果您安装了Heapster,那么Kubedash使用Kubernetes的内置指标来显示平均和最大CPU /内存利用率。当试图弄清楚什么是请求时,它会有很大的帮助。分配给特定应用程序的限制。
希望有所帮助!