【kubernetes/k8s概念】Quality of Service 服务质量
WHAT QOS Quality of Service 即服务质量,实现资源被有效调度和分配的同时提高资源利用率, kubernetes 针对不同服务质量的预期,通过 QoS(Quality of Service)来对 pod 进行服务质量管理,当节点上内存资源紧张时,kubernetes 会根据预先设置的不同 QoS 类别进行相应处理 WHY QOS? 如果未对...
·
WHAT QOS
Quality of Service 即服务质量,实现资源被有效调度和分配的同时提高资源利用率,
kubernetes
针对不同服务质量的预期,通过 QoS(Quality of Service)来对 pod 进行服务质量管理,当节点上内存资源紧张时,kubernetes 会根据预先设置的不同 QoS 类别进行相应处理
WHY QOS?
如果未对资源进行限制,一些关键的服务可能会因为资源竞争因OOM等原因被kill掉,或者被限制CPU使用。
HOW QOS ?
k8s中对容器的资源分配有三种策略:
- Guaranteed:每个容器都必须设置CPU和内存的限制和请求。优先级最高的,Resource的
limit
和request
都相等且不为0 - Burstable:在不满足
Guaranteed
的情况下,至少设置一个CPU或者内存的请求 - BestEffort:resource和request都不设置,意味着容器资源使用上限实际上即所在node的capacity
可压缩资源-CPU资源
- 当资源紧张,发生资源抢占时,Pod可以分享时间片。
- 当资源剩余,发生超用时,即实际使用超过请求,Pod按照比例分配剩余资源
不可压缩资源-内存和磁盘资源
当资源紧张时,例如OOM,kubelet会根据QoS进行驱逐:
- Best-Effort pods:系统用完了全部内存时,该类型 pods 会最先被kill掉。
- Burstable pods:系统用完了全部内存,且没有 Best-Effort 类型的容器可以被 kill 时,该类型的 pods 会被 kill 掉。
- Guaranteed pods:系统用完了全部内存,且没有 Burstable 与 Best-Effort 类型的容器可以被 kill 时,该类型的 pods 会被 kill 掉。
更多推荐
已为社区贡献47条内容
所有评论(0)