• 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和实际使用的内存资源大小的关系          

      

      

  • 相关阅读:
    迷你图标集大集合:5000+ 30套免费的图标(不得不下,设计必备)
    Github简介
    Sublime Text 3 文本编辑器
    FusionCharts V3图表导出图片和PDF属性说明(转)
    FusionCharts参数的详细说明和功能特性(转)
    SQL 数据结构操作语句
    SQL Server 2008 各种DateTime的取值范围
    Datagrid数据导出到excel文件的三种方法
    开发环境
    如何利用ThoughtWorks.QRCode 生成二维码
  • 原文地址:https://www.cnblogs.com/wxm-pythoncoder/p/14301332.html
Copyright © 2020-2023  润新知