K8S 資源限制 QoS

K8S 資源限制 QoS

設(shè)置資源很煩,但是十分必要。如果不設(shè),Pod雖然很容易被調(diào)度,可以使用整個node資源,但是當(dāng)資源緊俏時,會被第一個kill。所以這里學(xué)習(xí)下資源限制。

QoS官方入門文檔

QoS設(shè)計文檔

騰訊云:老司機和你深聊Kubenertes 資源分配之 Request 和 Limit 解析

QoS

  • Guaranteed:每個容器都必須設(shè)置CPU和內(nèi)存的限制和請求(最大和最小)。最嚴格的要求
    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的情況下,至少設(shè)置一個CPU或者內(nèi)存的請求。
    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:什么都不設(shè)置,佛系資源申請。
    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資源。

  • 當(dāng)資源緊俏,發(fā)生資源搶占時,Pod可以分享時間片。例如,在1U的node上,容器A請求0.6U,容器B請求0.4U。資源緊俏時,將會按照請求的比例分配時間片。容器A:0.6U/(0.6U+0.4U);容器B:0.4U/(0.6U+0.4U)。
  • 當(dāng)資源剩余,發(fā)生超用時,即實際使用超過請求,Pod按照比例分配剩余資源。例如,在1U的node上,容器A請求0.6U,容器B請求0.3U,剩余0.1U。兩個容器都想超用,剩余的0.1U將會按照請求的比例進行2:1分配給兩個容器。

關(guān)于提高資源利用率,可以將負載高峰時間錯開的應(yīng)用部署在一起,提高node利用率。

不可壓縮資源

內(nèi)存和磁盤資源。

當(dāng)資源緊俏時,例如OOM,kubelet會根據(jù)QoS進行驅(qū)逐:

  1. Best-Effort,最低優(yōu)先級,第一個被kill;
  2. Burstable,第二個被kill。
  3. Guaranteed,最高優(yōu)先級,最后kill。除非超過limit或者沒有其他低優(yōu)先級的Pod;

由于對于不可壓縮資源,發(fā)生搶占的情況會出Pod被意外Kill掉的情況,所以建議對于不可以壓縮資源(Memory,Disk)的設(shè)置成0<Request==Limit,即Guaranteed。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容