节点类型与实例规格

英博云支持提交工作负载时,指定具体的节点类型、实例规格。

可以实现用CPU节点、以及不同卡型号GPU节点运行工作负载,并可以指定工作负载的每个Pod实例的规格。

指定CPU节点类型

apiVersion: v1
kind: Pod
metadata:
  name: cs-xxx
  namespace: ns-xxx
spec:
  affinity:
    nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: cloud.ebtech.com/cpu # 使用CPU节点
            operator: In
            values:
            - amd-epyc-milan  # CPU节点目前固定为:amd-epyc-milan
  automountServiceAccountToken: false
  containers:
    ...

注意:

  • 对于希望运行到CPU节点的工作负载,也可以整体省略affinity部分,英博云会默认调度到CPU节点。

指定GPU节点类型

以下示例,指定运行pod的节点类型为A800

apiVersion: v1
kind: Pod
metadata:
  name: cs-xxx
  namespace: ns-xxx
spec:
  affinity:
    nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: cloud.ebtech.com/gpu # 使用GPU节点
            operator: In
            values:
            - A800_NVLINK_80GB  # 指定所需的GPU卡型号
  automountServiceAccountToken: false
  containers:
    ...

英博云节点类型与标签

Kubernetes 中容器在配置完成后,需要经过调度器选择最终的物理机器来运行容器,不同的物理机提供的GPU算力存在差异,EbCloud Kubernetes提供了不同类型的GPU算力,种类如下:

资源类型节点标签
GPU-H800cloud.ebtech.com/gpu=H800_NVLINK_80GB
GPU-A800cloud.ebtech.com/gpu=A800_NVLINK_80GB
GPU-4090cloud.ebtech.com/gpu=RTX_4090
GPU-4090Dcloud.ebtech.com/gpu=RTX_4090D
GPU-A40cloud.ebtech.com/gpu=A40
GPU-A16cloud.ebtech.com/gpu=A16
CPUcloud.ebtech.com/cpu=amd-epyc-milan

指定实例规格

当通过节点类型标签指定调度到具体节点后,具体在该节点启动什么规格的实例,需要通过resource字段的limits字段进行指定。

具体包括GPU卡数、CPU核数,内存大小,3个指标,示例如下:

  ...
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: cloud.ebtech.com/gpu # 指定节点类型,这里为GPU-H800节点
            operator: In
            values:
            - H800_NVLINK_80GB
  ...
  resources:
    limits:
      cpu: "40"              # cpu采用40 core
      memory: "400Gi"        # memory采用400 GB
      nvidia.com/gpu: "2"    # 申请2张GPU卡,注意这里只有卡数,卡型号靠上面的节点标签指定
  ...

英博云标准实例规格

H800的实例规格
资源类型实例规格配置规格
GPU-H800bob-eci.h800.5xlargeNVIDIA H800 80GB x 1、20core、DDR5 200GB
GPU-H800bob-eci.h800.10xlargeNVIDIA H800 80GB x 2、40core、DDR5 400GB
GPU-H800bob-eci.h800.20xlargeNVIDIA H800 80GB x 4、80core、DDR5 800GB
GPU-H800bob-eci.h800.40xlargeNVIDIA H800 80GB x 8、160core、DDR5 1600GB
A800的实例规格
资源类型实例规格配置规格
GPU-A800bob-eci.a800.5xlargeNVIDIA A800 80GB x 1、10core、DDR4 100GB
GPU-A800bob-eci.a800.10xlargeNVIDIA A800 80GB x 2、20core、DDR4 200GB
GPU-A800bob-eci.a800.20xlargeNVIDIA A800 80GB x 4、40core、DDR4 400GB
GPU-A800bob-eci.a800.40xlargeNVIDIA A800 80GB x 8、80core、DDR4 800GB
4090实例规格
资源类型实例规格配置规格
GPU-4090bob-eci.4090.5largeNVIDIA RTX-4090 24GB x 1、10core、DDR4 100GB
GPU-4090bob-eci.4090.10largeNVIDIA RTX-4090 24GB x 2、20core、DDR4 200GB
GPU-4090bob-eci.4090.20largeNVIDIA RTX-4090 24GB x 4、40core、DDR4 400GB
GPU-4090bob-eci.4090.40largeNVIDIA RTX-4090 24GB x 8、80core、DDR4 800GB
4090D实例规格
资源类型实例规格配置规格
GPU-4090Dbob-eci.4090d.5largeNVIDIA RTX-4090D 24GB x 1、10core、DDR4 100GB
GPU-4090Dbob-eci.4090d.10largeNVIDIA RTX-4090D 24GB x 2、10core、DDR4 200GB
GPU-4090Dbob-eci.4090d.20largeNVIDIA RTX-4090D 24GB x 4、10core、DDR4 400GB
GPU-4090Dbob-eci.4090d.40largeNVIDIA RTX-4090D 24GB x 8、10core、DDR4 800GB
CPU实例规格
资源类型实例规格配置规格
CPUbob-eci.cpu.mc125mm256.mini0.125 core、DDR4 256MB
CPUbob-eci.cpu.c1m2.0.5large1 core、DDR4 2GB
CPUbob-eci.cpu.c2m4.large2 core、DDR4 4GB
CPUbob-eci.cpu.c4m8.2large4 core、DDR4 8GB
CPUbob-eci.cpu.c16m32.8large16 core、DDR4 32GB
CPUbob-eci.cpu.c32m64.16large32 core、DDR4 64GB
CPUbob-eci.cpu.c64m128.32large64 core、DDR4 128GB
CPUbob-eci.cpu.c1m4.0.5large1 core、DDR4 4GB
CPUbob-eci.cpu.c2m8.large2 core、DDR4 8GB
CPUbob-eci.cpu.c4m16.2large4 core、DDR4 16GB
CPUbob-eci.cpu.c8m32.4large8 core、DDR4 32GB
CPUbob-eci.cpu.c16m64.8large16 core、DDR4 64GB
CPUbob-eci.cpu.c32m128.16large32 core、DDR4 128GB
CPUbob-eci.cpu.c64m256.32large64 core、DDR4 256GB
CPUbob-eci.cpu.c1m8.0.5large1 core、DDR4 8GB
CPUbob-eci.cpu.c2m16.large2 core、DDR4 16GB
CPUbob-eci.cpu.c4m32.2large4 core、DDR4 32GB
CPUbob-eci.cpu.c8m64.4large8 core、DDR4 64GB
CPUbob-eci.cpu.c16m128.8large16 core、DDR4 128GB
CPUbob-eci.cpu.c32m256.16large32 core、DDR4 256GB

实例规格匹配逻辑

在通过yaml提交工作负载时,建议尽量采用标准规格的实例,若是规格非标准,英博云将按照标准规格进行向上匹配。

CPU节点的型号匹配规则
    1. 按照申请CPU核数进行匹配,取标准规格里大于申请CPU核数的最小规格,可能匹配到多个规格,从小到大以此记录为M1、M2、M3。
    1. 检查申请的内存,以此检查M1、M2、M3能否覆盖申请内存,若是能覆盖,则取第一个能覆盖的规格,作为调度规格。
    1. 若是M1、M2、M3均无法覆盖申请内存,则提升CPU核数到标准规格里的下一个档次,从小到大以此记录为N1、N2、N3。
    1. 检查申请的内存,以此检查N1、N2、N3能否覆盖申请内存,若是能覆盖,则取第一个能覆盖的规格,作为调度规格。
    1. 若是N1、N2、N3均无法覆盖,回到第3步继续匹配。

举例如下:

  • 场景:用户申请1core 12GB的CPU资源,平台并没有1core 12GB的标准规格。
  • 结果:用户申请到4core 32GB规格的资源。
  • 原因:系统首先匹配符合1core的CPU规格,无法覆盖12GB的内存,随后查询2core的标准规格,发现2core 16GB可以覆盖12GB内存,则最终的调度规格为2core 16GB。
GPU节点的规格匹配逻辑
    1. 首先匹配GPU卡型号及卡数,这样就可以确定具体实例型号,记为待选型号M。
    1. 若是所申请的CPU核数与内存超出了型号M的上限,英博云会直接拒绝调度。
    1. 若是所申请的CPU核数与内存小于等于型号的M上限,英博云会按型号M进行调度并收费。

举例如下:

  • 场景:用户申请1卡GPU-H800的GPU资源,但未写CPU/内存。
  • 结果:用户成功申请到1卡H800 20core 200GB规格的资源。
  • 原因:系统首先匹配符合1卡H800的GPU规格,查询到1卡H800 20core 200GB的标准规格,则最终的调度规格为1卡H800 20core 200GB。