前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pod的QoS服务质量等级

Pod的QoS服务质量等级

作者头像
洗尽了浮华
发布2020-11-24 15:32:40
1.7K0
发布2020-11-24 15:32:40
举报
文章被收录于专栏:散尽浮华

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。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档