支持的 Kubernetes 版本 | TKE 版本 ≥ v1.14.x |
支持的节点类型 | |
支持的 GPU 卡架构 | 支持 Volta(如 V100 )、Turing(如 T4)、Ampere(如 A100、A10)。 |
支持的驱动版本 | nvidia 驱动小版本(末尾版本编号,举例450.102.04,这里小版本对应04)需满足如下条件: 450:<= 450.102.04 470:<= 470.161.03 515:<= 515.65.01 525:<= 525.89.02 |
共享粒度 | 每个 qGPU 最小分配1G显存,精度单位是1G。算力最小分配5(代表一张卡的5%),最大100(代表一张卡),精度单位是5(即5、10、15、20...100)。 |
整卡分配 | 开启了 qGPU 能力的节点可按照 tke.cloud.tencent.com/qgpu-core: 100 | 200 | ...(N * 100,N 是整卡个数)的方式分配整卡。建议通过 TKE 的节点池能力来区分 NVIDIA 分配方式或转换到 qGPU 使用方式。 |
个数限制 | 一个 GPU 上最多可创建16个 qGPU 设备。建议按照容器申请的显存大小确定单个 GPU 卡可共享部署的 qGPU 个数。 |
Kubernetes 对象名称 | 类型 | 请求资源 | Namespace |
qgpu-manager | DaemonSet | 每 GPU 节点一个 Memory: 300M, CPU:0.2 | kube-system |
qgpu-manager | ClusterRole | - | - |
qgpu-manager | ServiceAccount | - | kube-system |
qgpu-manager | ClusterRoleBinding | - | kube-system |
qgpu-scheduler | Deployment | 单一副本 Memory: 800M, CPU:1 | kube-system |
qgpu-scheduler | ClusterRole | - | - |
qgpu-scheduler | ClusterRoleBinding | - | kube-system |
qgpu-scheduler | ServiceAccount | - | kube-system |
qgpu-scheduler | Service | - | kube-system |
功能 | 涉及对象 | 涉及操作权限 |
跟踪 pod 的状态变化,获取 pod 信息,以及在 pod 删除时清理 qgpu 设备等资源。 | pods | get/list/watch |
跟踪 node 的状态变化,获取 node 信息,并根据 gpu 卡驱动和版本信息以及 qgpu 版本信息给 nodes 增加 label。 | nodes | get/list/watch/update |
qgpu-scheduler 是基于 kubernetes 调度器 extender 机制开发的针对 qgpu 资源的扩展调度器,需要的权限与社区其他调度类组件(如 volcano)相同,包括跟踪和获取 pods 信息,需要把调度结果更新到 pod 的 label 和 annotation,跟踪和获取 node 信息,跟踪获取配置的 configmap,创建调度事件。 | pods | get/list/update/patch |
| nodes | get/list/watch |
| configmaps | get/list/watch |
| events | create/patch |
gpu.elasticgpu.io 是 qgpu 的记录 gpu 资源信息的自定义 CRD 资源(该功能已废弃,但为了兼容旧版本,资源定义需要保留),由 qgpu-manager 及 qgpu-scheduler 管理,需要增删改查所有权限。 | gpu.elasticgpu.io 及 gpu.elasticgpu.io/status | 所有权限 |
kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:name: qgpu-managerrules:- apiGroups:- ""resources:- podsverbs:- get- list- watch- apiGroups:- ""resources:- nodesverbs:- update- get- list- watch- apiGroups:- "elasticgpu.io"resources:- gpus- gpus/statusverbs:- '*'---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:name: qgpu-schedulerrules:- apiGroups:- ""resources:- nodesverbs:- get- list- watch- apiGroups:- ""resources:- eventsverbs:- create- patch- apiGroups:- ""resources:- podsverbs:- update- patch- get- list- watch- apiGroups:- ""resources:- bindings- pods/bindingverbs:- create- apiGroups:- ""resources:- configmapsverbs:- get- list- watch- apiGroups:- "elasticgpu.io"resources:- gpus- gpus/statusverbs:- '*'
tke.cloud.tencent.com/qgpu-schedule-policy
fixed-share
(Label value 可填写全称或者缩写,更多取值可参考下方表格)
当前 qGPU 支持以下隔离策略:Label 值 | 缩写 | 英文名 | 中文名 | 含义 |
best-effort (默认值) | be | Best Effort | 争抢模式 | 默认值。各个 Pods 不限制算力,只要卡上有剩余算力就可使用。 如果一共启动 N 个 Pods,每个 Pod 负载都很重,则最终结果就是 1/N 的算力。 |
fixed-share | fs | Fixed Share | 固定配额 | 每个 Pod 有固定的算力配额,无法超过固定配额,即使 GPU 还有空闲算力。 |
burst-share | bs | Guaranteed Share with Burst | 保证配额加弹性能力 | 调度器保证每个 Pod 有保底的算力配额,但只要 GPU 还有空闲算力,就可被 Pod 使用。例如,当 GPU 有空闲算力时(没有分配给其他 Pod),Pod 可以使用超过它的配额的算力。注意,当它所占用的这部分空闲算力再次被分配出去时,Pod 会回退到它的算力配额。 |
spec:containers:resources:limits:tke.cloud.tencent.com/qgpu-memory: "5"tke.cloud.tencent.com/qgpu-core: "30"requests:tke.cloud.tencent.com/qgpu-memory: "5"tke.cloud.tencent.com/qgpu-core: "30"
本页内容是否解决了您的问题?