美文网首页
k8s QoS设计实现

k8s QoS设计实现

作者: _1900 | 来源:发表于2020-07-10 09:43 被阅读0次

QoS介绍

QoS是 Quality of Service 的缩写,即服务质量。为了实现资源被有效调度和分配的同时提高资源利用率,kubernetes针对不同服务质量的预期,通过 QoS(Quality of Service)来对 pod 进行服务质量管理。对于一个 pod 来说,服务质量体现在两个具体的指标:CPU 和内存。当节点上内存资源紧张时,kubernetes 会根据预先设置的不同 QoS 类别进行相应处理。

QoS 等级划分

QoS 划分的主要应用场景,是当宿主机资源紧张的时候,kubelet 对 Pod 进行 Eviction(即资源回收)时需要用到的,

具体地说,当 Kubernetes 所管理的宿主机上不可压缩资源短缺时,就有可能触发 Eviction。比如,可用内存(memory.available)、可用的宿主机磁盘空间(nodefs.available),以及容器运行时镜像存储空间(imagefs.available)等等

  • Guaranteed(有保证的)
  • Burstable (不稳定的)
  • Best-Effort (尽最大努力)

对于 QoS 类为 Guaranteed 的 Pod:

  • Pod 中的每个容器必须指定memory requests和memory limit ,CPU requests和 CPU limit ,并且requests 和 limit 要相等。

对于 QoS 类为 BestEffort 的 Pod:

  • Pod 中的容器必须没有设置内存和 CPU 限制或请求

对于 QoS 类为Burstable 的 Pod:

  • Pod 中的一个容器设置了 limit 并且 和 requests 不想等

QoS pods被kill掉场景与顺序

  • Best-Effort pods:系统用完了全部内存时,该类型 pods 会最先被kill掉。
  • Burstable pods:系统用完了全部内存,且没有 Best-Effort 类型的容器可以被 kill 时,该类型的 pods 会被 kill 掉。
  • Guaranteed pods:系统用完了全部内存,且没有 Burstable 与 Best-Effort 类型的容器可以被 kill 时,该类型的 pods 会被 kill 掉。

如何处理相同Qos等级的容器

k8s 为每个Pod 分配一个OOM分数值,用来计算kill的顺序,当需要释放内存的时候,分数最高的进程将被杀死。

OOM 分数由两个参数计算得出:进程已消耗内存占可用内存的百分比,与一个基础pod QoS 等级分数值相乘,得出结果最大值将被Kill

等级分数值:

对于Guaranteed级别的 Pod,OOM参数设置成了-998,对于Best-Effort级别的 Pod,OOM参数设置成了1000,对于Burstable级别的 Pod,OOM参数取值从2到999

对于 kuberntes 保留资源,比如kubelet,docker,OOM参数设置成了-999,表示不会被OOM kill掉。OOM参数设置的越大,计算出来的OOM分数越高,表明该pod优先级就越低,当出现资源竞争时会越早被kill掉,对于OOM参数是-999的表示kubernetes永远不会因为OOM将其kill掉。

内部实践

目前所有服务Pod 等级为 Burstable , 当出现资源不足的情况,被Kill调的 Pod 有可能是重要的服务,这是一种很危险的操作。

为了避免高优先级的服务被Kill 掉,针对这类服务的等级调整为Guaranteed。

相关文章

  • k8s QoS设计实现

    QoS介绍 QoS是 Quality of Service 的缩写,即服务质量。为了实现资源被有效调度和分配的同时...

  • mqtt qos2 设计方案

    MQTT Qos2设计方案 mqtt相关协议: qos2整体实现方案: 主要实现步骤如下:mqtt Qos2增加r...

  • kubernetes 中 Qos 的设计与实现

    kubernetes 中的 Qos QoS(Quality of Service) 即服务质量,QoS 是一种控制...

  • 1.7 QoS/TC和仲裁 1.7.1 服务质量 PCIe体系结构的若干特性提供了使QoS得以实现的机制。支持Qo...

  • k8s pod qos

    简单总结 qos分类 如果pod中所有容器都未设置request和liimit,则为besteffort如果pod...

  • K8S 资源限制 QoS

    K8S 资源限制 QoS 设置资源很烦,但是十分必要。如果不设,Pod虽然很容易被调度,可以使用整个node资源,...

  • 2万字带你学习Qos原理,还有6个实验案例,建议一定要收藏!

    一、QoS的原理1 前言2 QoS模型3 QoS基本原理4 其他提高QoS的技术 二、实验案例1、QOS字节数统计...

  • koordinator简介

    简介 针对在k8s上运行混合工作负载的基于qos的调度系统 架构 特点 就我个人而言,比较喜欢的是1: 动态调整c...

  • DPDK编程指南(翻译)( 二十三 上)

    23. QoS框架 本章介绍了DPDK服务质量(QoS)框架。 23.1. 支持QoS的数据包水线 具有QoS支持...

  • mqtt的Qos选值问题

    QOS的使用场景: 1、在发送消息时,指定QOS 2、在订阅主题时,指定QOS 这俩种场景下,QOS各自的作用是什...

网友评论

      本文标题:k8s QoS设计实现

      本文链接:https://www.haomeiwen.com/subject/vqspcktx.html