资源配额
简介
对于CCE集群中弹性到CCI的pod,bursting插件会根据用户提供的CPU、内存规格,对pod的资源规格做出规整,以达到合理利用资源并满足CCI资源规格的目的。本章节将详细介绍如何进行资源规格的规整。
约束与限制
- 弹性到CCI的pod需要至少有一个容器有CPU的limit或者request限制。
- 本节的资源规整算法仅适用于云原生bursting,CCI 2.0的console和API有独立的Pod规格规整算法。
pod资源规格算法
弹性CCI的pod规格,根据container资源的Requests和Limits计算,调整至CCI允许范围。
pod规格的计算方式遵循如下规则:
- 所有应用容器和初始化容器对某个资源的Requests和Limits均会被设置为相等的值,如果配置了Limits,则取Limits值;如果没有配Limits,则取Requests值。
- pod对某个资源的Requests和Limits,是取如下两项的较大者:
- 所有应用容器对某个资源的Limits之和。
- 所有初始化容器Limits的最大值。
Pod规格约束:
- Pod的CPU需大于0。
- 经过资源自动规整后,Pod的CPU在0.25核~32核范围内,或者等于48核或64核;Memory在1Gi~512Gi范围内,且必须为1Gi的整数倍,且满足CPU/Memory配比值在1:2~1:8之间。
资源规整算法
假设根据pod资源规格算法求得CPU(core)、Memory(Gi),则自动规整规则如下:
- 将Pod中除了BestEffort的每个应用容器和初始化容器的CPU向上调整至0.25核的整数倍, Memory向上调整至大于等于0.2Gi。
CCE突发弹性引擎(对接 CCI)插件1.5.16版本及之后,不再进行容器级别的向上规整,仅进行pod级别的向上规整。
- 若此时Pod的CPU大于32u或者Memory大于256Gi,则不再继续进行自动调整,否则将继续调整。
- 将整个pod的CPU配额向上调整至0.25核的整数倍,Memory配额向上调整至1Gi的整数倍。
- 若pod Memory/CPU的比值小于2,需将pod Memory向上调整至大于等于CPU的2倍,且满足是1Gi的整数倍。
- 若pod Memory/CPU的比值大于8,需将pod CPU向上调整至大于等于Memory的1/8,且满足是0.25核的整数倍。
BestEffort容器是指没有配置Requests和Limits的容器。
经过资源自动规整后,Pod规格约束:
- pod的CPU取值在0.25核~32核范围内,或者等于48核或64核,并且要求值为0.25的整数倍。
- Memory在1Gi~256Gi范围内,或者等于384Gi或512Gi,且Memory是整数。
- 满足Memory/CPU配比值在2~8之间。
- virtual-kubelet.cci.io/burst-pod-cpu: 0.5u
- virtual-kubelet.cci.io/burst-pod-memory: 1Gi
资源规整用例说明
资源规格 (CPU MEM) |
规整后规格(CPU MEM) |
说明 |
---|---|---|
37U 37Gi |
无法创建pod弹性到CCI。 |
CPU规格无效。 |
30U 257Gi |
无法创建pod弹性到CCI。 |
存算比大于8,提高CPU。但无法满足CPU规格有效,拦截。 |
0.35U 0.5Gi |
0.5U 1Gi |
CPU向上取整0.25的整数倍,MEM向上取整1的整数倍。存算比符合要求,不做调整。 |
0.35U 1.5Gi |
0.5U 2Gi |
CPU向上取整0.25的整数倍,MEM向上取整1的整数倍。存算比符合要求,不做调整。 |
0.45U 18Gi |
2.25U 18Gi |
CPU向上取整0.25的整数倍,MEM向上取整1的整数倍。存算比大于8,提高CPU。 |
2U 2Gi |
2U 4Gi |
存算比小于2,提高MEM。 |