不同方式获得的cpu资源利用
通过Prometheus统计
通过给定时间间隔内计算pod中所有容器使用cpu的时间占比得到
sum(rate(container_cpu_usage_seconds_total{pod="cadvisor-m6xk5"}[15s])) by (pod,namespace) * 100
到pod所在服务器使用top统计pod对应的进程占用cpu,121%
PS:top实时性要比ps高
root@k8s03:~# top -p 32332
top - 20:03:39 up 87 days, 10:17, 2 users, load average: 8.74, 7.06, 6.44
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 14.1 us, 6.1 sy, 0.0 ni, 77.4 id, 0.0 wa, 0.0 hi, 2.4 si, 0.0 st
MiB Mem : 64298.4 total, 4387.4 free, 50211.8 used, 9699.2 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 13228.8 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
32332 root 20 0 11.6g 862928 8432 S 121.1 1.3 109584:47 cadvisor
kubeSphere显示的pod的cpu占用
k8s中对于资源限制通过多少core来计量的方式与kubeSphere显示一样。
总结
通过几种方式获得的值可见,实际上cpu的占用其实就是时间占比,而通过xx core的方式计量和百分比的方式看上去单位不一样,实际表达的意思一样。
换算关系可以总结为 xx core * 100 = yy%,比如,pod占用2 core就相当于相关进程占用cpu 200%