云原生引擎的节点需要运行一些必要的Kubernetes系统组件和Kubernetes系统资源,因此在节点中需要为这些组件和资源预留一部分的资源,节点上的Pod所使用的资源并非是节点的全部可用容量,云原生引擎对用户节点可分配的资源计算规则如下:
Allocatable = Capacity - Reserved - Eviction Threshold
即:节点资源可分配量 = 总量 - 预留值 - 驱逐阈值
云原生引擎节点内存总预留值等于系统组件预留值与Kubelet管理Pod所需预留值之和。
即:总预留值 = 系统组件预留值 + Kubelet管理Pod所需预留值
除此之外,云原生引擎还预留了额外的100Mi给kubelet驱逐使用。
表-1 系统组件预留规则
内存总量 |
系统组件预留值 |
≤8GB |
0MB |
8GB~16GB |
(内存总量 - 8G)*10% *1024 MB |
16GB~128GB |
(8GB*1024*10% + (内存总量 – 16GB)*1024*6% )MB |
>128GB |
(8GB*1024*10% + 112GB*1024*6% + (内存总量 – 128GB)*1024*2%)MB |
表-2 kubelet预留规则
内存总量范围 |
Pod数量 |
Kubelet管理Pod所需预留值 |
≤2GB |
_ |
内存总量*25% |
>2GB |
0~16 |
700 MB |
16~32 |
(700 + (最大pod数量 - 16)*18.75 )MB |
|
32~64 |
(1024 + (最大pod数量 - 32)*6.25 )MB |
|
64~128 |
(1230 + (最大pod数量 - 64)*7.80)MB |
|
>128 |
(1740 + (最大pod数量 - 128)*11.20)MB |
CPU核数 |
CPU预留值 |
≤ 1core |
CPU总量 *6% |
1 core~2 core |
1core*6% + (CPU总量– 1core)*1 % |
2 core~4 core |
1core*6% + 1core*1% + (CPU总量– 2core)*0.5% |
>4 core |
1core*6% + 1core*1% + 2core*0.5% + (CPU总量– 4core)*0.25% |