cpu/mem 的limit和request都是針對container來講的,不是針對pod。 0 <= request <= limit
cpu
cpu資源限制的單位m:CPU的計量單位叫毫核(m)。一個節點的CPU核心數量乘以1000,得到的就是節點總的CPU總數量。如,一個節點有兩個核,那么該節點的CPU總量為2000m。1核,即1000m,假定節點為1核
limits:cpu: 100m #等同于0.1memory: 1Gi
100/1000,即0.1,換算為百分比 100/1000*100=10% 節點cpu利用率假定節點為1核,
requests: cpu: "1"
0.5,即50%,1,即100%,2即200%
內存
內存單位:
K、M、G、T、P、E #通常是以1000為換算標準的。
Ki、Mi、Gi、Ti、Pi、Ei #通常是以1024為換算標準的。
三、QOS
request: Initial resource request for CPU and memory 容器需要的最低資源量(CPU,MEM)
limits: Upper limit until we want our application to grow at max 容器運行中所能分配的最大資源量
根據這兩個參數的配置,k8s在集群資源不足的時候有不同的處理策略 – Quality of Service (QoS)
Best-Effort 最大努力 requests和limits兩個參數都沒有設置。就是沒有對資源做限制,只要節點有足夠資源會盡可能滿足其需求。但是這種容器優先級是最低的:節點CPU或MEM資源不夠時,會優先把該類容器殺掉以回收資源。
Burstable 爆發的? requests和limits都有設置并且requests小于limits。即最低要求requests所指定的資源,最高以limits為上限。優先級較Best-Effort高一點: 節點資源不足時,如果沒有Best-Effort類型的容器,會刪除該類容器。
Guaranteed 有保障的 requests參數與limits參數相同。具有最高優先級,資源不足時會優先刪除Best-Effort和Burstable類容器以確保其運行。
3種QoS優先級從有低到高(從左向右):
Best-Effort pods -> Burstable pods -> Guaranteed pods