更新时间:2024-10-15 GMT+08:00

资源配额

简介

对于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),则自动规整规则如下:

  1. 将Pod中除了BestEffort的每个应用容器和初始化容器的CPU向上调整至0.25核的整数倍, Memory向上调整至大于等于0.2Gi。

    CCE突发弹性引擎(对接 CCI)插件1.5.16版本及之后,不再进行容器级别的向上规整,仅进行pod级别的向上规整。

  2. 若此时Pod的CPU大于32u或者Memory大于256Gi,则不再继续进行自动调整,否则将继续调整。
  3. 将整个pod的CPU配额向上调整至0.25核的整数倍,Memory配额向上调整至1Gi的整数倍。
  4. 若pod Memory/CPU的比值小于2,需将pod Memory向上调整至大于等于CPU的2倍,且满足是1Gi的整数倍。
  5. 若pod Memory/CPU的比值大于8,需将pod CPU向上调整至大于等于Memory的1/8,且满足是0.25核的整数倍。
以上对pod级别资源向上调整造成的增量CPU和Memory,全部添加到Pod中第一个不为BestEffort的容器上。

BestEffort容器是指没有配置Requests和Limits的容器。

经过资源自动规整后,Pod规格约束:

  • pod的CPU取值在0.25核~32核范围内,或者等于48核或64核,并且要求值为0.25的整数倍。
  • Memory在1Gi~256Gi范围内,或者等于384Gi或512Gi,且Memory是整数。
  • 满足Memory/CPU配比值在2~8之间。
用户可以通过CCE侧的pod的annotation查看规整后的规格。
  • 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。