• (转)Kubernetes资源限制 QoS


    设置资源很烦,但是十分必要。如果不设,Pod虽然很容易被调度,可以使用整个node资源,但是当资源紧俏时,会被第一个kill。所以这里学习下资源限制。

    QoS官方入门文档

    QoS设计文档

    腾讯云:老司机和你深聊Kubenertes 资源分配之 Request 和 Limit 解析

    QoS

    • Guaranteed:每个容器都必须设置CPU和内存的限制和请求(最大和最小)。最严格的要求
      1. Every Container in the Pod must have a memory limit and a memory request, and they must be the same.
      2. Every Container in the Pod must have a CPU limit and a CPU request, and they must be the same.
    • Burstable:在不满足Guaranteed的情况下,至少设置一个CPU或者内存的请求。
      1. The Pod does not meet the criteria for QoS class Guaranteed.
      2. At least one Container in the Pod has a memory or CPU request.
    • BestEffort:什么都不设置,佛系资源申请。
      1. For a Pod to be given a QoS class of BestEffort, the Containers in the Pod must not have any memory or CPU limits or requests.

    可压缩资源

    CPU资源。

    • 当资源紧俏,发生资源抢占时,Pod可以分享时间片。例如,在1U的node上,容器A请求0.6U,容器B请求0.4U。资源紧俏时,将会按照请求的比例分配时间片。容器A:0.6U/(0.6U+0.4U);容器B:0.4U/(0.6U+0.4U)。
    • 当资源剩余,发生超用时,即实际使用超过请求,Pod按照比例分配剩余资源。例如,在1U的node上,容器A请求0.6U,容器B请求0.3U,剩余0.1U。两个容器都想超用,剩余的0.1U将会按照请求的比例进行2:1分配给两个容器。

    关于提高资源利用率,可以将负载高峰时间错开的应用部署在一起,提高node利用率。

    不可压缩资源

    内存和磁盘资源。

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

    1. Best-Effort,最低优先级,第一个被kill;
    2. Burstable,第二个被kill。
    3. Guaranteed,最高优先级,最后kill。除非超过limit或者没有其他低优先级的Pod;

    由于对于不可压缩资源,发生抢占的情况会出Pod被意外Kill掉的情况,所以建议对于不可以压缩资源(Memory,Disk)的设置成0<Request==Limit,即Guaranteed



    作者:陈先生_9e91
    链接:https://www.jianshu.com/p/b02e6bb20f03
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    Java String 乱码
    HBase非原理性浅析
    git cherry-pick
    数据结构之队列
    数据结构之栈
    算法之简单排序
    数据结构之数组
    数据结构简介
    Java类型信息
    基数排序
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/13887897.html
Copyright © 2020-2023  润新知