• pod服务质量类别


    读书笔记

    kubernetes允许节点的pod对象过载使用资源,意味着节点无法同时满足绑定其上的所有pod以资源满载的方式运行。
    内存紧缺情况下,按照什么次序终止pod对象成为问题。

    kubernetes本身无法做出决策,要借助pod对象的服务质量和优先级完成判定。

    根据pod对象的requests和limits属性,kubernetes将pod对象归类为BestEffort,Burstable,Guaranteed三个服务质量类别(Quality of Service,Qos)

    • Guaranteed: Pod对象为其每个容器都设置CPU资源需求request和资源限制limit,且二者值相同;同时为每个容器都设置了内存资源需求和资源限制,且二者具有相同值。这类pod对象具有最高级别服务质量
    • Burstable:至少有一个容器设置了CPU或内存资源的reqeusts属性,不满足Guaranteed类别的设定要求,这类pod对象具有中等级别服务质量
    • BestEffort:不为任何一个容器设置requests或limits属性,这类pod对象克获得的服务质量为最低级别。

    内存资源紧缺时,besteffort类别容器将首先被终止,因为系统不提供任何级别的资源保证,好处是:它们能够尽可能多的占用资源。

    若系统上不存在其他BestEffort类型的容器时,轮到Burstable类别的pod被终止。Guaranteed类别的容器拥有最高优先级,不会被杀死,除非其内存资源需求超限,或者OOM时没有其他更低优先级的Pod对象存在。

    每个status为running的pod都有OOM评分,评分越高越先被杀死。OOM评分计算的两个维度:

    1. 由服务质量类别继承而来的默认分值
    2. 容器的可用内存资源比例

    同等类别的pod默认分值相同,各种类别pod对象的OOM调节(Adjust)分值定义如下

    • Guaranteed类别pod资源Adjust分值为-998
    • BestEffort类别默认分值为1000
    • Buratable类别pod的Adjust分值由算法计算得出

    同级别优先级的pod资源在OOM时,与自身的request属性相比,内存占用比例最大的pod对象会先被杀死。

    ex:两个pod的优先级级别相同, pod A 当前内存占用比例 与requests值相比为95%,pod B 内存占用比例为80%,pod A先于pod B被kill。

    参考:

    Kubernetes进阶实战第二版 马永亮
    https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/quality-service-pod/
    https://github.com/kubernetes/kubernetes/blob/master/pkg/kubelet/qos/policy.go

  • 相关阅读:
    ASUS (k013) ME176CX不进入系统恢复出厂设置的方法
    Go-Excelize API源码阅读(十六)——GetSheetViewOptions、SetPageLayout
    引入DDP技术:英特尔网卡让数据处理更高效
    解决Vue3中echarts无法缩放的问题
    java毕业生设计医学生在线学习交流平台计算机源码+系统+mysql+调试部署+lw
    【C++】:关键字+命名空间+输入输出+缺省参数+函数重载+引用
    231n-图像线性分类
    http和https的区别
    学生用RockyLinux9.2模板虚拟机说明
    Geoserver发布WMTS服务中的坐标系转换与Mapbox加载
  • 原文地址:https://blog.csdn.net/qq_43652666/article/details/133578644