ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Pod的QoS服务质量等级

2020-11-13 17:31:29  阅读:318  来源: 互联网

标签:容器 QoS 服务质量 oom request limit 内存 Pod


 

QOS是K8S中的一种资源保护机制,其主要是针对不可压缩资源比如内存的一种控制技术。比如在内存中,其通过为不同的Pod和容器构造OOM评分,并且通过内核策略的辅助,从而实现当节点内存资源不足的时候,内核可以按照策略的优先级,优先kill掉那些优先级比较低(分值越高,优先级越低)的Pod。

 QoS(Quality of Service),可译为 "服务质量等级",或者译作 "服务质量保证",是作用在 Pod 上的一个配置,当 Kubernetes 创建一个 Pod 时,它就会给这个 Pod 分配一个 QoS 等级。

 

K8s中,针对QOS服务质量等级有三种策略:

Guaranteed (该策略下,设置的requests 等于 limits)
pod.spec.containers[].resources中会存在cpu或memory的request和limit。顾名思义是该容器对资源的最低要求和最高使用量限制。如果我们配置了limit,没有配置request,默认会以limit的值来定义request。具体的配置可以参考以前的这篇笔记。

BestEffort(该策略下(没有设置requests 、 limits)
当pod的描述文档中没有resource.limit、resource.request相关的配置时,意味着这个容器想跑多少资源就跑多少资源,其资源使用上限实际上即所在node的capacity。

Burstable(该策略下(设置的requests 小于 limits)
当resource.limit和resource.request以上述两种方式以外的形式配置的时候,就会采用本模式。 QoS目前只用cpu和memory来描述,其中cpu可压缩资源,当一个容器的cpu使用率超过limit时会被进行流控,而当内存超过limit时则会被oom_kill。这里kubelet是通过自己计算容器的oom_score,确认相应的linux进程的oom_adj,oom_adj最高的进程最先被oom_kill。 Guaranteed模式的容器oom_score最小:-998,对应的oom_adj为0或1,BestEffort模式则是1000,Burstable模式的oom_score随着其内存使用状况浮动,但会处在2-1000之间。

 

因此可以看出,当某个node内存被严重消耗时,BestEffort策略的pod会最先被kubelet杀死,其次Burstable(该策略的pods如有多个,也是按照内存使用率来由高到低地终止),再其次Guaranteed。

标签:容器,QoS,服务质量,oom,request,limit,内存,Pod
来源: https://www.cnblogs.com/kevingrace/p/13970487.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有