kubernets之了解Qos等级
一 Qos的种类
- BestEffort(优先级最低)
- Burstable(中等优先级)
- Guaranteed(最高优先级)
二 Qos的作用
众所周知,节点上面的limits允许超卖,当节点上面的内存总值大于100的时候,就必须要对某个容器删除,从而为其他容器腾出来内存空间,以上的Qos等级就决定着当出现上述情况的时候,优先杀死哪些pod里面的容器,这便是Pod的Qos的作用。
三 如何评定一个pod的Qos等级
3.1 为pod分配Guaranteed等级
这个等级是pod的最高优先级,而如果需要能够分配这个等级的pod需要具备几下几个条件
- cpu和内存都要设置requests和limits
- 每个容器都要设置资源值
- 他们必须相等(每个容器的每种资源的requests和limits必须相等)
因为如果容器的资源requests没有显示设置,默认与limits相等,所以只设置所有资源的限制量就可以使pod的Qos等级为Guaranteed,这些pod的容器可以使用它所申请的等额资源,但无法消耗更多,因为它们的requests和limits值相等
3.2 为pod分配Burstable等级
这个Qos等级介于BestEffort和Guaranteed之间,requests和limits值为一下情况
- pod里面的容器设置了requests或者limits,但是他们的数值不相等的单容器pod
- 多容器pod里面的至少有一个pod未设置limits值,或者未设置requests值(这个和未设置requests效果一样)
因为pod可以申请节点上面的requests值,并且可以使用系统额外的值
3.3 为pod分配BestEffort等级
这个等级是pod的最低等级,这个pod里面的容器的requests和limits的值是如下情况
- pod里面的所有的容器的requests和limits值都未被设置
- 这个pod的里面的容器在系统的内存出现超卖的时候会优先被kill
- 这个pod的里面的容器在系统资源充足的时候,可任由pod里面的容器对系统的资源进行访问
3.4 让我们来通过一幅图来更直观和贴切的描述requests和limits的设置是如何决定pod的Qos等级

3.5 通过评定容器的Qos等级从而判定pod的Qos等级
申明一下,容器实际上并没有Qos这一说法的,我们是以评定pod的方式来评定容器的Qos,进而通过pod里面的容器的Qos来评定Pod的Qos等级,这里给出一张列表

- 如果设置了requests而为设置limits,则参考Requests<limits一列
- 如果设置了limits,而没有设置requests的话,则参考Requests=Limits这一列
- 单容器的pod,容器的Qos就等于pod的Qos
3.6 多容器的pod的Qos则由pod里面的所有容器的Qos来决定,可以参考下表进而得到结论,这里假设以2个容器的pod为例

- 总结起来正正得正,负负得负,正负则取中间态
- 当两个容器的的Qos都为BestEffort则pod的Qos也为BestEffort
- 当两个容器的Qos都为Guaranteed则pod的Qos也为Guaranteed
- 如果一个为BestEffort,另一个为Guaranteed则pod的Qos为Burstable
四 了解在超卖系统中,哪个进程优先会被杀死
4.1 在超卖系统中,Qos等级决定着哪个pod会优先被杀掉,BestEffort最先会被干掉,其次是Burstable,最后才会是Guaranteed的pod被干掉(Guaranteed只有当系统级别的pod的资源不足才会被干掉),我们通过一幅图来展示并对其中哪个优先级会被杀死来说明。

- 当系统中的资源超卖的时候,被优先处理的顺序是BestEffort > Burstable > Guaranteed
- 当释放完所有的BestEffort的pod的时候仍然节点内存依然不足的情况下,就会考虑释放Burstable的pod
- 由于系统中处于Burstable的pod较多,仍然需要一个比较规则,来决定超卖的时候先处理哪个pod,可能让你惊讶的是,系统并不是根据谁使用的内存量多的优先处理谁,而是根据资源使用量比上实际使用量的比值,优先处理更大的比值
- 综上所述,我们在为pod的容器分配requests和limits的时候不仅仅需要注意两个的值,同时还需要还要留意requests和实际使用的内存资源大小的关系
kubernets之了解Qos等级的更多相关文章
- MQTT 协议学习: QoS等级 与 会话
背景 QoS 等级 与 通信的流程有关,直接影响了整个通信.而且篇幅比较长,所以我觉得应该单独拎出来讲一下. 概念 QoS 代表了 服务质量等级. 设置上,由2 位 的二进制控制,且值不允许为 3(0 ...
- 如何为k8s中的pod配置QoS等级?
1.概述 本文介绍如何为pod分配特定的QoS等级. 我们知道,在k8s的环境中,通过使用QoS等级来做决定,在资源紧张的时候,将哪些的pod进行驱逐,或者说如何对pod进行调度. OK,话不多说,让 ...
- MQTT协议QoS服务质量 (Quality of Service 0, 1 & 2)概念学习
什么是 QoS ? QoS (Quality of Service) 是发送者和接收者之间,对于消息传递的可靠程度的协商. QoS 的设计是 MQTT 协议里的重点.作为专为物联网场景设计的协议,MQ ...
- LTE QOS
http://wenku.baidu.com/link?url=ziFIkdKaC7MU2RY-bTOp2bt87WFPw5_02bqmYs5W6w4ktOfPHEcWesK1U2T7YiyXjVSM ...
- 8.深入k8s:资源控制Qos和eviction及其源码分析
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com,源码版本是1.19 又是一个周末,可以愉快的坐下来静静的品味一段源码,这一篇涉及到资源的 ...
- pod资源限制和QoS探索
简述 默认情况下,k8s不会对pod的资源使用进行限制,也就是说,pod可以无限使用主机的资源,例如CPU.内存等.为了保障k8s整体环境运行的稳定性,一般情况下,建议是对pod的资源使用进行限制,将 ...
- K8s QoS Pod资源服务质量控制
Kubernetes 中如果一个 Node 节点上的 Pod 占用资源过多并且不断飙升导致 Node 节点资源不足,可能会导致为了保证节点可用,将容器被杀掉.在遇见这种情况时候,我们希望先杀掉那些不太 ...
- MQTT QoS 0, 1, 2 介绍
什么是 QoS 很多时候,使用 MQTT 协议的设备都运行在网络受限的环境下,而只依靠底层的 TCP 传输协议,并不能完全保证消息的可靠到达.因此,MQTT 提供了 QoS 机制,其核心是设计了多种消 ...
- 在Swift中应用Grand Central Dispatch(下)
在第一部分中, 你学到了并发,线程以及GCD的工作原理.通过使用dispatch_barrrier和dispatch_sync,你做到了让 PhotoManager单例在读写照片时是线程安全的.除此之 ...
- 在Swift中应用Grand Central Dispatch(上)转载自的goldenfiredo001的博客
尽管Grand Central Dispatch(GCD)已经存在一段时间了,但并非每个人都知道怎么使用它.这是情有可原的,因为并发很棘手,而且GCD本身基于C的API在 Swift世界中很刺眼. 在 ...
随机推荐
- 1.NCC算法实现及其优化[基础实现篇]
NCC算法实现及其优化 本文将集中探讨一种实现相对简单,效果较好的模板匹配算法(NCC) \[R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x', ...
- JackSon反序列化通杀
前言 Springboot一般都会自带JackSon这个依赖包,JackSon跟Fastjson有相同的功效 简单复现 package com.example.jakeson.demo; import ...
- 重新点亮linux 命令树————进程的控制[二十二]
前言 简单整理一下进程的控制 正文 进程优先级 nice 从-20-19,值越小,优先级越高 renice 从新设置优先级 进程的作业控制: job 那么先来创建一个进程. 那么使用top -p 26 ...
- nginx 学习的前提
前言 在nginx 中,需要学会的是如何安装.基础的命令.看懂配置那么这时候才是一切的刚刚开始. 正文 安装可以去看菜鸟驿站的: https://www.runoob.com/linux/nginx- ...
- android 找不到设备
前言 当我们安装android studio的时候,测试的时候,你可能找不到设备. 我遇到的有两种情况,一种是本身就需要安装插件,如一些低端机或者有些小米机. 还有一种情况需要去触发一下,有些华为手机 ...
- 百度unit闲聊机器人
import json import random import requests # client_id 为官网获取的AK, client_secret 为官网获取的SK client_id = & ...
- javascript现代编程系列教程之六——数字型数据类型转换
一.整数转换 在 JavaScript 中,parseInt() 函数会将其参数转换为字符串,然后解析该字符串,并返回一个整数或 NaN.如果 parseInt() 函数的参数是一个非常大的浮点数(如 ...
- 轻松复现一张AI图片
轻松复现一张AI图片 现在有一个非常漂亮的AI图片,你是不是想知道他是怎么生成的? 今天我会交给大家三种方法,学会了,什么图都可以手到擒来了. 需要的软件 在本教程中,我们将使用AUTOMATIC11 ...
- Spring 源码阅读(一)环境搭建
注意事项: 使用 2024-03-14 发布的 Spring 5.3.33 版本 IDE 工具使用了 Intellij IDEA,同时为了简化不必要的内容没单独配置 Gradle 环境 JDK 版本采 ...
- 力扣71(java)-简化路径(中等)
题目: 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目 ...