节点类型与实例规格
英博云支持提交工作负载时,指定具体的节点类型、实例规格。
可以实现用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-H800 | cloud.ebtech.com/gpu=H800_NVLINK_80GB |
GPU-A800 | cloud.ebtech.com/gpu=A800_NVLINK_80GB |
GPU-4090 | cloud.ebtech.com/gpu=RTX_4090 |
GPU-4090D | cloud.ebtech.com/gpu=RTX_4090D |
GPU-A40 | cloud.ebtech.com/gpu=A40 |
GPU-A16 | cloud.ebtech.com/gpu=A16 |
CPU | cloud.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-H800 | bob-eci.h800.5xlarge | NVIDIA H800 80GB x 1、20core、DDR5 200GB |
GPU-H800 | bob-eci.h800.10xlarge | NVIDIA H800 80GB x 2、40core、DDR5 400GB |
GPU-H800 | bob-eci.h800.20xlarge | NVIDIA H800 80GB x 4、80core、DDR5 800GB |
GPU-H800 | bob-eci.h800.40xlarge | NVIDIA H800 80GB x 8、160core、DDR5 1600GB |
A800的实例规格
资源类型 | 实例规格 | 配置规格 |
---|---|---|
GPU-A800 | bob-eci.a800.5xlarge | NVIDIA A800 80GB x 1、10core、DDR4 100GB |
GPU-A800 | bob-eci.a800.10xlarge | NVIDIA A800 80GB x 2、20core、DDR4 200GB |
GPU-A800 | bob-eci.a800.20xlarge | NVIDIA A800 80GB x 4、40core、DDR4 400GB |
GPU-A800 | bob-eci.a800.40xlarge | NVIDIA A800 80GB x 8、80core、DDR4 800GB |
4090实例规格
资源类型 | 实例规格 | 配置规格 |
---|---|---|
GPU-4090 | bob-eci.4090.5large | NVIDIA RTX-4090 24GB x 1、10core、DDR4 100GB |
GPU-4090 | bob-eci.4090.10large | NVIDIA RTX-4090 24GB x 2、20core、DDR4 200GB |
GPU-4090 | bob-eci.4090.20large | NVIDIA RTX-4090 24GB x 4、40core、DDR4 400GB |
GPU-4090 | bob-eci.4090.40large | NVIDIA RTX-4090 24GB x 8、80core、DDR4 800GB |
4090D实例规格
资源类型 | 实例规格 | 配置规格 |
---|---|---|
GPU-4090D | bob-eci.4090d.5large | NVIDIA RTX-4090D 24GB x 1、10core、DDR4 100GB |
GPU-4090D | bob-eci.4090d.10large | NVIDIA RTX-4090D 24GB x 2、10core、DDR4 200GB |
GPU-4090D | bob-eci.4090d.20large | NVIDIA RTX-4090D 24GB x 4、10core、DDR4 400GB |
GPU-4090D | bob-eci.4090d.40large | NVIDIA RTX-4090D 24GB x 8、10core、DDR4 800GB |
CPU实例规格
资源类型 | 实例规格 | 配置规格 |
---|---|---|
CPU | bob-eci.cpu.mc125mm256.mini | 0.125 core、DDR4 256MB |
CPU | bob-eci.cpu.c1m2.0.5large | 1 core、DDR4 2GB |
CPU | bob-eci.cpu.c2m4.large | 2 core、DDR4 4GB |
CPU | bob-eci.cpu.c4m8.2large | 4 core、DDR4 8GB |
CPU | bob-eci.cpu.c16m32.8large | 16 core、DDR4 32GB |
CPU | bob-eci.cpu.c32m64.16large | 32 core、DDR4 64GB |
CPU | bob-eci.cpu.c64m128.32large | 64 core、DDR4 128GB |
CPU | bob-eci.cpu.c1m4.0.5large | 1 core、DDR4 4GB |
CPU | bob-eci.cpu.c2m8.large | 2 core、DDR4 8GB |
CPU | bob-eci.cpu.c4m16.2large | 4 core、DDR4 16GB |
CPU | bob-eci.cpu.c8m32.4large | 8 core、DDR4 32GB |
CPU | bob-eci.cpu.c16m64.8large | 16 core、DDR4 64GB |
CPU | bob-eci.cpu.c32m128.16large | 32 core、DDR4 128GB |
CPU | bob-eci.cpu.c64m256.32large | 64 core、DDR4 256GB |
CPU | bob-eci.cpu.c1m8.0.5large | 1 core、DDR4 8GB |
CPU | bob-eci.cpu.c2m16.large | 2 core、DDR4 16GB |
CPU | bob-eci.cpu.c4m32.2large | 4 core、DDR4 32GB |
CPU | bob-eci.cpu.c8m64.4large | 8 core、DDR4 64GB |
CPU | bob-eci.cpu.c16m128.8large | 16 core、DDR4 128GB |
CPU | bob-eci.cpu.c32m256.16large | 32 core、DDR4 256GB |
实例规格匹配逻辑
在通过yaml
提交工作负载时,建议尽量采用标准规格的实例,若是规格非标准,英博云将按照标准规格进行向上匹配。
CPU节点的型号匹配规则
- 按照申请CPU核数进行匹配,取标准规格里大于申请CPU核数的最小规格,可能匹配到多个规格,从小到大以此记录为M1、M2、M3。
- 检查申请的内存,以此检查M1、M2、M3能否覆盖申请内存,若是能覆盖,则取第一个能覆盖的规格,作为调度规格。
- 若是M1、M2、M3均无法覆盖申请内存,则提升CPU核数到标准规格里的下一个档次,从小到大以此记录为N1、N2、N3。
- 检查申请的内存,以此检查N1、N2、N3能否覆盖申请内存,若是能覆盖,则取第一个能覆盖的规格,作为调度规格。
- 若是N1、N2、N3均无法覆盖,回到第3步继续匹配。
举例如下:
- 场景:用户申请1core 12GB的CPU资源,平台并没有1core 12GB的标准规格。
- 结果:用户申请到4core 32GB规格的资源。
- 原因:系统首先匹配符合1core的CPU规格,无法覆盖12GB的内存,随后查询2core的标准规格,发现2core 16GB可以覆盖12GB内存,则最终的调度规格为2core 16GB。
GPU节点的规格匹配逻辑
- 首先匹配GPU卡型号及卡数,这样就可以确定具体实例型号,记为待选型号M。
- 若是所申请的CPU核数与内存超出了型号M的上限,英博云会直接拒绝调度。
- 若是所申请的CPU核数与内存小于等于型号的M上限,英博云会按型号M进行调度并收费。
举例如下:
- 场景:用户申请1卡GPU-H800的GPU资源,但未写CPU/内存。
- 结果:用户成功申请到1卡H800 20core 200GB规格的资源。
- 原因:系统首先匹配符合1卡H800的GPU规格,查询到1卡H800 20core 200GB的标准规格,则最终的调度规格为1卡H800 20core 200GB。