【K8s概念】LimitRange(限制范圍)


參考:https://kubernetes.io/zh/docs/concepts/policy/limit-range/

默認情況下, Kubernetes 集群上的容器運行使用的計算資源沒有限制。 使用資源配額,集群管理員可以以名字空間為單位,限制其資源的使用與創建。 在命名空間中,一個 Pod 或 Container 最多能夠使用命名空間的資源配額所定義的 CPU 和內存用量。 有人擔心,一個 Pod 或 Container 會壟斷所有可用的資源。 LimitRange 是在命名空間內限制資源分配(給多個 Pod 或 Container)的策略對象。

一個 LimitRange(限制范圍) 對象提供的限制能夠做到:

在一個命名空間中實施對每個 Pod 或 Container 最小和最大的資源使用量的限制。
在一個命名空間中實施對每個 PersistentVolumeClaim 能申請的最小和最大的存儲空間大小的限制。
在一個命名空間中實施對一種資源的申請值和限制值的比值的控制。
設置一個命名空間中對計算資源的默認申請/限制值,並且自動的在運行時注入到多個 Container 中。

啟用 LimitRange

對 LimitRange 的支持自 Kubernetes 1.10 版本默認啟用。

LimitRange 支持在很多 Kubernetes 發行版本中也是默認啟用的。

LimitRange 的名稱必須是合法的 DNS 子域名。

限制范圍總覽

管理員在一個命名空間內創建一個 LimitRange 對象。
用戶在命名空間內創建 Pod ,Container 和 PersistentVolumeClaim 等資源。
LimitRanger 准入控制器對所有沒有設置計算資源需求的 Pod 和 Container 設置默認值與限制值, 並跟蹤其使用量以保證沒有超出命名空間中存在的任意 LimitRange 對象中的最小、最大資源使用量以及使用量比值。
若創建或更新資源(Pod、 Container、PersistentVolumeClaim)違反了 LimitRange 的約束, 向 API 服務器的請求會失敗,並返回 HTTP 狀態碼 403 FORBIDDEN 與描述哪一項約束被違反的消息。
若命名空間中的 LimitRange 啟用了對 cpu 和 memory 的限制, 用戶必須指定這些值的需求使用量與限制使用量。否則,系統將會拒絕創建 Pod。
LimitRange 的驗證僅在 Pod 准入階段進行,不對正在運行的 Pod 進行驗證。

能夠使用限制范圍創建的策略示例有:

在一個有兩個節點,8 GiB 內存與16個核的集群中,限制一個命名空間的 Pod 申請 100m 單位,最大 500m 單位的 CPU,以及申請 200Mi,最大 600Mi 的內存。
為 spec 中沒有 cpu 和內存需求值的 Container 定義默認 CPU 限制值與需求值 150m,內存默認需求值 300Mi。

在命名空間的總限制值小於 Pod 或 Container 的限制值的總和的情況下,可能會產生資源競爭。 在這種情況下,將不會創建 Container 或 Pod。

競爭和對 LimitRange 的改變都不會影響任何已經創建了的資源。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM