文章目录

  • 一、定义
  • 二、k8s与QoS
  • 1.背景
  • 2.等级划分
  • 三、QoS 的作用


一、定义

QoS并不是运用于Kubernetes的专项技术,事实上它是一个广义的定义

满足用户对不同应用不同服务质量的要求,需要网络能根据用户的要求分配和调度资源,对不同的数据流提供不同的服务质量,因此QoS应运而生

QoS:Quality of Service,即服务质量,指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术,其特别对于容量有限制的网络具有特别的意义。

针对某种类别的数据流,可以为它赋予某个级别的传输优先级,来标识它的相对重要性,并使用设备所提供的各种优先级转发策略、拥塞避免等机制为这些数据流提供特殊的传输服务。

二、k8s与QoS

1.背景

1、某类Pod的不稳定性:如果 Pod 没有配置 Limit ,它可以使用运行节点上任意的可用资源
2、资源的有限:针对于上述类型Pod,在其占用过多资源以及资源紧张时需要优先处理,而不是针对于那些配置了limit的Pod

思路总结: 利用Pod QoS,根据 Pod 的资源请求把 Pod 分成不同的重要性等级

2.等级划分

1)Guaranteed
最高优先级,例如数据库应用及特比重要的业务应用。
只有在, Pods 使用超过了它们的 Limits,或者节点的内存压力很大而且没有 QoS 更低的 Pod的情况下才会被处理(杀死进程)

2)Burstable
中等优先级,重要性相对低,例如一般性的应用或者批处理任务。
该类型Pod 可以使用多于请求的资源(上限由 Limit 指定,如果 Limit 没有配置,可以使用任意可用资源),重要性相对低,例如一般性的应用或者批处理任务。

3)Best Effort
最低优先级,例如一些临时性的不重要应用
集群不知道 Pod 的资源请求情况,调度不考虑资源,可以运行到任意节点上。Pod 可以使用节点上任何可用资源,但在资源不足时也会被优先杀死。

因此三种类型的Pod会按照从下至上的顺序,按照需求被杀死。

在Pod中 Requests and limits与QoS等级的对应

request 是否配置

limits是否配置

QoS

注释



Guaranteed

所有容器的CPU和memory配置相同



Burstable

只要有容器配置了CPU或memory中的request and limits



Burstable

只要有容器配置了CPU或memory中的request



Guaranteed/Burstable

若所有资源配置给limits就是前者,否则为后者



Best Effort

所有容器都没有配置二者

3、其他
Pod 的 QoS 还决定了容器的 OOM(Out-Of-Memory)值

等级

OOM

Guaranteed

-998

Burstable

1000

Best Effort

min(max(2,1000-(1000*memoryRequestBytes)/machineMemoryCapacityBytes),999)

即,QoS越高,Pod的OOM值越低,即越不容易被杀死。
对于,Best Effort ,memoryRequest 是 Pod 申请的资源,memoryCapacity 是节点的内存总量,即申请的内存越多越不容易被杀死

三、QoS 的作用

由于我们尚未学习优先级(Priority)的概念,因此,我们将这一部分同优先级共同总结,在下一份文档详述。

简单说明为:为Pod进行驱逐操作提供依据。