Pod 资源利用率计算

琉璃2年前技术文章5045

Pod CPU使用率

即在过去的一段时间里进程占用的CPU时间与CPU总时间的比率,如果有多个CPU或者多核,需要将每个CPU的时间相加。

container_cpu_usage_seconds_total是container累计使用的CPU时间,用它除以CPU的总时间,就得到了容器的CPU使用率。

Pod 在1s内累计使用的CPU时间为:

sum(rate(container_cpu_usage_seconds_total(image!=""][1m])) by (pod_name, namespace)

container_spec_cpu_quota 是容器的CPU配额,它的值是:为容器指定的CPU个数*100000。

故,Pod在1s内CPU的总时间为:Pod的CPU核数*1s:

(sum(container_spec_cpu_quota(image!="")/100000) by (pod_name, namespace))

将上面两个公式的结果相除,就得到了容器的CPU使用率:

sum(rate(container_cpu_usage_seconds_total(imagel=")[1m])) by (pod_name, namespace) / (sum(container_spec_cpu_quota(image!="")/100000) by (pod_name, namespace)


Pod 内存使用率

直接用内存实际使用量除以内存限制使用量即可

sum(container_memory_rss(image!-"")) by(pod_name, namespace) / sum(container_spec_memory_limit_bytes(image!-"")) by(pod_name, namespace) * 100 != +inf



Pod文件系统使用量

sum(container_fs_usage_bytes(image!=""]) by(pod_name, namespace) / 1024 / 1024 / 1024


requests和limit值解释

资源限制内部机制使用的是cgroup类型 目录: /sys/fs/cgroup/systemd

k8s采用request和limit两种限制类型来对资源进行分配

request(资源需求):即运行pod的节点必须满足运行pod的最基本需求才能运行pod。

limit(资源限制):即运行pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。 资源类型:

requests

requests用于schedule阶段,在调度pod保证所有pod的requests总和小于node能提供的计算能力 requests.cpu被转成docker的--cpu-shares参数,与cgroup cpu.shares功能相同 设置容器的cpu的相对权重 该参数在CPU资源不足时生效,根据容器requests.cpu的比例来分配cpu资源 CPU资源充足时,requests.cpu不会限制container占用的最大值,container可以独占CPU requests.memory没有对应的docker参数,作为k8s调度依据 使用requests来设置各容器需要的最小资源


limits

limits限制运行时容器占用的资源 limits.cpu会被转换成docker的–cpu-quota参数。与cgroup cpu.cfs_quota_us功能相同 限制容器的最大CPU使用率 cpu.cfs_quota_us参数与cpu.cfs_period_us结合使用,后者设置时间周期 k8s将docker的–cpu-period参数设置100毫秒。对应着cgroup的cpu.cfs_period_us limits.cpu的单位使用m,千分之一核 limits.memory会被转换成docker的–memory参数。用来限制容器使用的最大内存 当容器申请内存超过limits时会被终止




相关文章

at和corntab 计划任务

一、什么是计划任务每个人在生活当中或多或少都有一些工作,有的工作是按照一定周期循环的, 例如每天固定时间的闹铃、工作打卡等等; 有的工作则是临时发生的,例如刚好有亲友到访,需要你在一个特定的时间去车站...

Redis 命令行 redis-cli 介绍

前言redis-cli 是 Redis 自带的命令行工具,是运维和开发人员常用的工具,本篇文章将介绍它的使用技巧和一些有趣的功能。1. 连接 Redis 服务redis-cli 默认连接的是 127....

SQL Server优化入门系列(五)—— SQL Server的执行计划

SQL Server优化入门系列(五)—— SQL Server的执行计划

定位到TOP SQL后,怎么优化呢?我们需要分析SQL的执行计划,制定相应的优化策略。这篇文章中,我们将介绍查看SQL Server执行计划的几种方法。本文测试案例中使用了AdventureWorks...

使用Sqoop将数据从Hive导入MySQL(一)

使用Sqoop将数据从Hive导入MySQL(一)

使用Sqoop将数据从Hive导入MySQL首先查看csv数据类型创建类似的hive表并导入数据CREATE TABLE data (    province STRING,    code INT,...

TCP短连接和长连接

TCP短连接和长连接

     当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,...

SpringBootWeb 篇-深入了解 SpringBoot + Vue 的前后端分离项目部署上线与 Nginx 配置文件结构(2)

SpringBootWeb 篇-深入了解 SpringBoot + Vue 的前后端分离项目部署上线与 Nginx 配置文件结构(2)

        3.0 在云服务器进行环境配置        将项目放到云服务器上运行,那么离不开项目所依赖的环境,比如...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。