WHAT QOS

     Quality of Service 即服务质量,实现资源被有效调度和分配的同时提高资源利用率, kubernetes 针对不同服务质量的预期,通过 QoS(Quality of Service)来对 pod 进行服务质量管理,当节点上内存资源紧张时,kubernetes 会根据预先设置的不同 QoS 类别进行相应处理

 

WHY QOS?

    如果未对资源进行限制,一些关键的服务可能会因为资源竞争因OOM等原因被kill掉,或者被限制CPU使用。

 

HOW QOS ?

  k8s中对容器的资源分配有三种策略:

  • Guaranteed:每个容器都必须设置CPU和内存的限制和请求。优先级最高的,Resource的limitrequest都相等且不为0
  • Burstable:在不满足Guaranteed的情况下,至少设置一个CPU或者内存的请求
  • BestEffort:resource和request都不设置,意味着容器资源使用上限实际上即所在node的capacity

 

  可压缩资源-CPU资源

  • 当资源紧张,发生资源抢占时,Pod可以分享时间片。
  • 当资源剩余,发生超用时,即实际使用超过请求,Pod按照比例分配剩余资源

  不可压缩资源-内存和磁盘资源

当资源紧张时,例如OOM,kubelet会根据QoS进行驱逐:

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

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐