16.3 k8s容器cpu内存告警指标与资源request和limit

本节重点介绍 :

  • Guaranteed的pod Qos最高
  • 在生产环境中,如何设置 Kubernetes 的 Limit 和 Request 对于优化应用程序和集群性能至关重要。
  • 对于 CPU,如果 pod 中服务使用 CPU 超过设置的limits,pod 不会被 kill 掉但会被限制。如果没有设置 limits ,pod 可以使用全部空闲的 CPU 资源。
  • 对于内存,当一个 pod 使用内存超过了设置的limits,pod 中 container 的进程会被 kernel 因 OOM kill 掉。

kubernetes 中的 Qos 合理分配node上的有限资源

简介

  • QoS(Quality of Service) 即服务质量

  • QoS 是一种控制机制,它提供了针对不同用户或者不同数据流采用相应不同的优先级

  • 或者是根据应用程序的要求,保证数据流的性能达到一定的水准。kubernetes 中有三种 Qos,分别为:

    • Guaranteed:pod 的 requests 与 limits 设定的值相等;
    • Burstable:pod requests 小于 limits 的值且不为 0;
    • BestEffort:pod 的 requests 与 limits 均为 0;
  • 三者的优先级如下所示,依次递增:

BestEffort -> Burstable -> Guaranteed

不同 Qos 的本质区别

  • 在调度时调度器只会根据 request 值进行调度;
  • 二是当系统 OOM上时对于处理不同 OOMScore 的进程表现不同,也就是说当系统 OOM 时,首先会 kill 掉 BestEffort pod 的进程,若系统依然处于 OOM 状态,然后才会 kill 掉 Burstable pod,最后是 Guaranteed pod;

资源的requests和limits

  • 我们知道在k8s中为了达到容器资源限制的目录,在yaml文件中有cpu和内存的 requests和limits配置
  • 对这两个参数可以简单理解为根据requests进行调度,根据limits进行运行限制。
  • 举例下面的配置代表cpu 申请100m,限制1000m。内存申请100Mi ,限制2500Mi
        resources:requests:cpu: 100mmemory: 100Milimits:cpu: 1000mmemory: 2500Mi

首先我们应关心这两组limits和requests值

  • 下面的表格中反应了kube-state-metrics 提供的4个相关指标。
指标名称含义单位说明
kube_pod_container_resource_requests_cpu_cores容器设置的cpu requests值request=100m 代表使用0.1个核心
kube_pod_container_resource_requests_memory_bytes容器设置的mem requests值单位:字节
kube_pod_container_resource_limits_cpu_cores容器设置的cpu limits值request=100m 代表使用0.1个核心
kube_pod_container_resource_limits_memory_bytes容器设置的mem limits值单位:字节

cpu属于可压缩资源

  • 在k8s中cpu属于可压缩资源
  • 意思是pod中服务使用CPU超过设置的limits
  • pod不会被kill掉但会被限制
  • 所以我们应该通过观察容器cpu被限制的情况来考虑是否将cpu的limit调大。

cpu限制率和利用率

限制率

  • 有这样的两个cpu指标,container_cpu_cfs_periods_total代表 container生命周期中度过的cpu周期总数
  • container_cpu_cfs_throttled_periods_total代表container生命周期中度过的受限的cpu周期总数。
  • 所以我们可以使用下面的表达式来查出最近5分钟,超过25%的CPU执行周期受到限制的container有哪些。
 100 *  sum by(container_name, pod_name, namespace) (increase(container_cpu_cfs_throttled_periods_total{container_name!=""}[5m]))/ sum by(container_name, pod_name, namespace) (increase(container_cpu_cfs_periods_total[5m]))  > 25
  • 如果上述ql有查询结果,我们可以考虑将cpu的limit调大

利用率

  • 同时我们可以用下面的计算方式表示容器cpu使用率
  • 其中container_cpu_usage_seconds_total 代表cpu的计数器
  • container_spec_cpu_quota是容器的CPU配额,它的值是容器指定的CPU个数*100000。
sum(rate(container_cpu_usage_seconds_total{image!=""}[1m])) by (container, pod)  / (sum(container_spec_cpu_quota{image!=""}/100000) by (container, pod)  )* 100

mem属于不可压缩资源

  • 在k8s中mem属于不可压缩资源
  • pod之间是无法共享的,完全独占的
  • 所以一旦容器内存使用超过limits,会导致oom,然后重新调度。

mem oom 判定依据

  • container_memory_working_set_bytes是容器真实使用的内存量
  • kubelet通过比较 container_memory_working_set_bytescontainer_spec_memory_limit_bytes 来决定oom container。
  • 同时还有 container_memory_usage_bytes用来表示容器使用内存,其中包含了很久没用的缓存,该值比 container_memory_working_set_bytes要大
  • 所以cpu使用率可以使用下面的公式计算
(container_memory_working_set_bytes/container_spec_memory_limit_bytes )*100

本节重点总结 :

  • Guaranteed的pod Qos最高
    • oom的时候先是 BestEffort 然后是Burstable 最后才 Guaranteed
  • 在生产环境中,如何设置 Kubernetes 的 Limit 和 Request 对于优化应用程序和集群性能至关重要。
  • 对于 CPU,如果 pod 中服务使用 CPU 超过设置的limits,pod 不会被 kill 掉但会被限制。如果没有设置 limits ,pod 可以使用全部空闲的 CPU 资源。
    • 可以查看cpu限制率来决定是否调大 cpu的limit
    • cpu属于可压缩资源
  • 对于内存,当一个 pod 使用内存超过了设置的limits,pod 中 container 的进程会被 kernel 因 OOM kill 掉。
    • mem属于不可压缩资源
    • oom判定的时候是 比较 container_memory_working_set_bytes 而不是 usage
    • usage含有很久未用的缓存,比workingset偏大
  • Qos 的目的是为了合理分配node上的有限资源 {cpu和mem上}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145878.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

哪个牌子的头戴式耳机性价比高?四大爆款性价比品牌推荐!

随着科技的不断进步和发展,头戴式耳机已经成为音乐爱好者和专业人士不可或缺的设备。进入2024年,市场上涌现出了一批性能卓越、音质优秀的新产品。这些新品不仅在音质上有了显著的提升,还在设计、舒适度和功能性上进行了全面的优化&#xff0…

(科普篇)公司防止泄密,应该做到哪些?教你10个方法有效阻止泄密事件发生!

公司防止泄密,应该做到哪些? 世事如棋局局新,信息之海波涛汹涌! 甲曰:"企业之基,在于保密。泄密之祸,猛于虎也,如何防患于未然。吾友,可有良策?" …

lettuce引起的Redis command timeout异常

项目使用Lettuce,在自己的环境下跑是没有问题的。在给客户做售前压测时,因为客户端环境比较恶劣,service服务和中间件服务不在同一机房。服务启动后不一会就会出现Redis command timeout异常。 经过差不多两周的追查,最后没办法把…

机器学习的应用领域

机器学习在许多领域有广泛的应用,下面列出了一些主要的应用领域及其典型应用: 1. 图像识别 人脸识别:用于解锁手机、自动标记照片、监控安全系统。物体识别:应用于自动驾驶汽车、机器人、医疗影像分析中,帮助机器理解…

三分钟 ChatGPT 接入钉钉机器人

前言 ChatGPT 大家应该都已经用了一段时间了,功能非常强大,作为开发人员,我用它写文档、写日报、润色 OKR,知识搜索等等,它给我带来了极大的帮助,但我在使用过程中最大的痛点就是网络。 痛点 由于国内不…

Java_Se--方法

方法就是一个代码片段. 类似于 C 语言中的 "函数"。方法存在的意义(不要背, 重在体会): 1. 是能够模块化的组织代码 ( 当代码规模比较复杂的时候 ). 2. 做到代码被重复使用 , 一份代码可以在多个位置使用 . 3. 让代码更好理解更简单 . 4. 直接调用现有方法开…

搭建WSL2+Ubuntu22.04 LTS环境

一、BIOS 开启虚拟化支持 现在的主板一般都默认开启的,也可以检查和开启BIOS虚拟化支持 二、windows开启子系统及虚拟化 打开控制面板 选择 程序 -> 启用或关闭 Windows功能 勾选 Hyper-V、适用于 Linux的 Windows子系统和虚拟机平台 点击确定 重启计算…

【近源攻击】badusb上线cs

❤️博客主页: iknow181 🔥系列专栏: 网络安全、 Python、JavaSE、JavaWeb、CCNP 🎉欢迎大家点赞👍收藏⭐评论✍ 0x01 实验前提 攻击设备:badusb cs服务器:公网部署了 cs 服务端 0x02 实验步骤 …

【计算机网络】理解应用层协议HTTP

目录 HTTP协议认识URLHTTP协议的请求如果我们想获得请求报文的完整内容,怎么办? HTTP协议的响应HTTP的方法GETvsPOST HTTP的状态码HTTP常见HeaderHTTP版本实现一个简单的HTTP服务器 HTTP协议 HTTP协议是一种超文本传输协议,它定义了客户端与…

Kafka 3.0.0集群部署教程

1、集群规划 主机名 ip地址 node.id process.roles kafka1 192.168.0.29 1 broker,controller Kafka2 192.168.0.30 2 broker,controller Kafka3 192.168.0.31 3 broker,controller 将kafka包上传以上节点/app目录下 mkdir /app 解压kafka包 tar -zxvf kafka_…

java之斗地主部分功能的实现

今天我们要实现斗地主中发牌和洗牌这两个功能,该如何去实现呢? 1.创建牌类:52张牌每一张牌包含两个属性:牌的大小和牌的花色。 故我们优先创建一个牌的类(Card):包含大小和花色。 public class Card { //单张牌的大小及类型/…

伊犁-linux 硬盘添加,分区,格式化

主要是linux 下操作硬盘分区,格式化 这样1个sata 盘就添加成功了 !  继续添加三块 sata1 hda sata hdb sata hdc sata hdd scsi sda 作为启动盘 进行操作系统的引导 如果scsi 往下调整 先敲enter 在用- 号往下 如果是往上调整敲…

【IDEA】使用IDEA连接MySQL数据库并自动生成MySQL的建表SQL语句

前言: 在软件开发过程中,数据库的设计与实现是至关重要的一环。IntelliJ IDEA作为一款强大的集成开发环境(IDE),提供了丰富的数据库工具,使得连接MySQL数据库并自动生成建表SQL语句变得简单快捷。本文将详细…

《python语言程序设计》2018版第8章18题几何circle2D类(上部)

一、利用第7章的内容来做前5个点 第一章之1--从各种角度来测量第一章之2--各种结果第二章之1--建立了针对比对点在圆内的几段第二章之2--利用建立的对比代码,得出的第2点位置 第一章之1–从各种角度来测量 class Circle2D:def __init__(self, x, y, radius):self._…

Stable Diffusion绘画 | ControlNet应用-qrcode 二维码控制器:艺术二维码来啦

qrcode 二维码控制器,是一款专用于生成艺术二维码的控制器, 需要单独下载,下载后,将文件放置在:SD安装目录\extensions\sd-webui-controlnet\models 实操 开启第一个 ControlNet,上传一个二维码图片&…

【24华为杯数模研赛赛题思路已出】国赛E题第二套思路丨附参考代码丨免费分享

2024年数模研赛E题解题思路 在高速公路建设中,通常会设置应急车道,以便应对救援和医疗需求。应急车道一般不允许占用,但在某些情况下,如监测到某路段即将拥堵且没有事故时,合理使用应急车道可以帮助降低车流密度&…

对不起,放弃了wiki.js转向了obsidian

wifi.js可以满足我的以下要求: 支持文档在线编辑支持浏览器编辑支持二进制文件上传和下载支持历史记录和回滚支持用户账号分权支持数据和nas同步支持markdown的预览模式 但是wiki.js不能满足如下: markdown编辑无法做到图片复制粘贴无法查看pdf无法独立于文档上传…

影刀RPA实战:网页爬虫之药品数据

1 实战目标 这次给大家带来的实战示例是采集中国医药信息平台上的药品数据,主要获取药品名称,介绍,药品类型,处方类型,医保类型,参考价格,药品成分,性状,适应病症&#…

SAP B1 Web Client MS Teams App集成连载四

过程/Procedure: 1.通过点击选项卡旁边的下拉箭头,可以重新配置、重命名和移除现有选项卡。 You can reconfigure, rename and remove an existing tab by clicking the drop down arrow alongside the tab. 要重新配置选项卡,请选择“设置”…

HTML-DOM模型

1.DOM模型 window对象下的document对象就是DOM模型。 DOM描绘了一个层次化的节点树,每一个节点就是一个html标签,而且每一个节点也是一个DOM对象。 2.操作DOM 2.1.获取DOM对象常用方法 获取DOM对象的常用方法有如下几种: getElementById(…