关于yaml指定资源规格

关于yaml指定资源规格

当您使用yaml提交工作负载,容器云支持 通过 Annotation 指定 及 通过 Request、Limit 自动计算两种方式,指定为 Pod 资源的分配和上限。您可选择其中一种方式进行配置。

1. 通过Annotation指定

容器云支持在工作负载 yaml 中以添加 template annotation 的方式,显式的指定 Pod 资源规格。详情请参见Annotation说明

2. 通过Request、Limit自动计算

2.1. Request/Limit的设置

CPU 资源允许设置的资源量,以核(U)为单位,允许值为整数。

内存资源允许设置的资源量,建议以 GiB 为单位,允许值为整数。

GPU资源通过指定参数 “nvidia.com/gpu”的值,允许值为整数。

2.2. Request/Limit的取值核算和规整

用户指定了Request/Limit之后,系统会自动计算 Pod 内所有容器的 Request 之和、Pod 内所有容器的 Limit最大值,分别按取两者中的较大者,并与Pod所支持的标准资源规格进行规整对齐。

注意:

  • 如指定了工作负载 Template Annotation,则以 Annotation 配置为准进行规格规整,不进行 Request 及 Limit 核算。

  • 无论如何设置 Request 及 Limit,其最终计算结果都会与标准资源规格进行匹配,且 Pod 最终分配的实际资源一定不会超出其中允许的标准规格。

2.3. CPU Pod 规格计算方法

步骤1: 分别计算Pod 的CPU、内存的核算数值

最终核算数值分别为Pod 内所有容器的 Request 之和、Pod 内所有容器的 Limit 中的最大值中的较大者。

步骤2: 依据取值做对齐标准资源规格的自动规整

自动规整,将以核算数值为基础,向最接近的标准资源规格进行靠拢匹配,同时需满足 【规整后的CPU和内存】>= 【核算的CPU和内存】,CPU匹配相近性优先于内存

具体请参考 CPU标准资源规格

注意:

  • 若CPU、内存核算后的任一数值超过标准资源规格中的最大规格,则无法成功匹配规格,Pod将创建失败。

  • 若CPU、内存核算后的数值均为0,则系统将选择默认规格“1核2GiB”。

  • 若CPU、内存核算后,任一的数值为0,则以必须满足“不为0”的项为规整依据。

YAML示例如下:

    ## container1
    resources:
    limits:
      cpu: "4"
      memory: 4Gi
        requests:
      cpu: "2"
      memory: 4Gi

    ## container2
    resources:
    limits:
      cpu: "1"
      memory: 2Gi
    requests:
      cpu: "1"
      memory: 2Gi

根据以上代码,Request/Limit核算数值如下:

CPU 核算数值为:max((2+1),max(4,1)) = 4核

内存核算数值为:max((4+2),max(4,2)) = 6GiB

依据核算数值进行自动规整:

【CPU Pod 标准规格】不支持4核6GiB的 Pod 规格,按“ CPU 4核”对应规格中选择能满足内存要求的规格,则将内存调整为8GiB。最终分配资源和计费的 Pod 规格为4核8GiB。

2.4. GPU Pod 规格计算方法

GPU标准资源规格,是以GPU卡数为基准,并按不同比例配置固定的CPU和内存大小。因此GPU Pod的自动规整是以GPU的Request/Limit核算取值,匹配一致或最接近的较大值进行规格对齐。

步骤1: 计算Pod 的GPU的核算数值

GPU的设置参数为 “nvidia.com/gpu”。

最终核算数值,为 Pod 内所有容器的GPU Request 之和、Pod 内所有容器的GPU Limit 中的最大值中的较大者。

步骤2: 依据取值做对齐标准资源规格的自动规整

    ## container1
    resources:
    limits:
      cpu: "80"
      memory: 320Gi
      nvidia.com/gpu: "4"
    requests:
      cpu: "40"
      memory: 160Gi
      nvidia.com/gpu: "1"
    ## container2
    resources:
    limits:
      cpu: "80"
      memory: 320Gi
      nvidia.com/gpu: "6"
    requests:
      cpu: "40"
      memory: 160Gi
      nvidia.com/gpu: "3"

根据以上代码,GPU的Request/Limit核算数值如下:

GPU 核算数值为:max((1+3),max(4,6)) = 6卡

依据核算数值进行自动规整:

【GPU Pod 标准规格】不支持6卡的 Pod 规格,按“ GPU 8卡”(>= 6卡)对应规格,将CPU调整为80核,内存调整为320GiB。最终分配资源和计费的Pod 规格为8卡80核320GiB。

个结果匹配 ""

    无结果匹配 ""