共计 2312 个字符,预计需要花费 6 分钟才能阅读完成。
作者
刘旭,腾讯云高级工程师,专一容器云原生畛域,有多年大规模 Kubernetes 集群治理教训,现负责腾讯云 GPU 容器的研发工作。
背景
目前 TKE 已提供基于 qGPU 的算力 / 显存强隔离的共享 GPU 调度隔离计划,然而局部用户反馈不足 GPU 资源的可观测性,例如无奈获取单个 GPU 设施的残余资源,不利于 GPU 资源的运维和治理。在这种背景下,咱们心愿提供一种计划,能够让用户在 Kubernetes 集群中直观的统计和查问 GPU 资源的应用状况。
指标
在目前 TKE 共享 GPU 调度计划的根底上,从以下几个方面加强 GPU 设施的可观测性:
- 反对获取单个 GPU 设施的资源分配信息。
- 反对获取单个 GPU 设施的衰弱状态。
- 反对获取某个节点上各 GPU 设施信息。
- 反对获取 GPU 设施和 Pod / Container 关联信息。
咱们的计划
咱们通过 GPU CRD 扫描物理 GPU 的信息,并在 qGPU 生命周期中更新应用到的物理 GPU 资源,从而解决在共享 GPU 场景下短少可见性的问题。
- 自定义 GPU CRD:每个 GPU 设施对应一个 GPU 对象,通过 GPU 对象能够获取 GPU 设施的硬件信息,衰弱状态以及资源分配状况。
- Elastic GPU Device Plugin:依据 GPU 设施的硬件信息创立 GPU 对象,定期更新 GPU 设施的衰弱状态。
- Elastic GPU Scheduler:依据 GPU 资源应用状况调度 Pod,同时将调度后果更新到 GPU 对象。
TKE GPU CRD 设计
apiVersion: elasticgpu.io/v1alpha1
kind: GPU
metadata:
labels:
elasticgpu.io/node: 10.0.0.2
name: 192.168.2.5-00
spec:
index: 0
memory: 34089730048
model: Tesla V100-SXM2-32GB
nodeName: 10.0.0.2
path: /dev/nvidia0
uuid: GPU-cf0f5fe7-0e15-4915-be3c-a6d976d65ad4
status:
state: Healthy
allocatable:
tke.cloud.tencent.com/qgpu-core: "50"
tke.cloud.tencent.com/qgpu-memory: "23"
allocated:
0dc3c905-2955-4346-b74e-7e65e29368d2:
containers:
- container: test
resource:
tke.cloud.tencent.com/qgpu-core: "50"
tke.cloud.tencent.com/qgpu-memory: "8"
namespace: default
pod: test
capacity:
tke.cloud.tencent.com/qgpu-core: "100"
tke.cloud.tencent.com/qgpu-memory: "31"
每个 GPU 物理卡对应一个 GPU CRD,通过 GPU CRD 能够分明理解每张卡的型号,显存等硬件信息,同时通过 status
能够获取每个 GPU 设施的衰弱状态和资源分配状况。
TKE GPU 调度过程
Kubernetes 提供了 Scheduler Extender 用于对调度器进行扩大,用于满足简单场景下的调度需要。扩大后的调度器会在调用内置预选策略和优选策略之后通过 HTTP 协定调用扩大程序再次进行预选和优选,最初抉择一个适合的 Node 进行 Pod 的调度。
在 TKE Elastic GPU Scheduler(原 TKE qGPU Scheduler),咱们联合了 GPU CRD 设计,在调度时首先会依据 status.state
过滤掉异样 GPU 设施,而后依据 status.allocatable
抉择残余资源满足需要的 GPU 设施,在最终实现调度时更新 status.allocatable
和 status.allocated
。
TKE GPU 调配过程
Kubernetes 提供了 Device Plugin 机制用于反对 GPU FPGA 等硬件设施,设施厂商只须要依据接口实现 Device Plugin 而不须要批改 Kubernetes 源码,Device Plugin 个别以 DaemonSet 的模式运行在节点上。
咱们在 TKE Elastic GPU Device Plugin(原 TKE qGPU Device Plugin)启动时会依据节点上 GPU 设施的硬件信息创立 GPU 对象,同时会定期检查 GPU 设施的衰弱状态并同步到 GPU 对象的 status.state
。
总结
为了解决目前 TKE 集群内 GPU 资源可观测性缺失的问题,咱们引入了 GPU CRD,用户能够直观的统计和查问集群内 GPU 资源的应用状况,目前这套计划已和 qGPU 实现整合,在 TKE 控制台装置 qGPU 插件时抉择应用 CRD 即可开启。
目前 TKE qGPU 已全量上线,详情请戳:https://cloud.tencent.com/doc…
对于咱们
更多对于云原生的案例和常识,可关注同名【腾讯云原生】公众号~
福利:
①公众号后盾回复【手册】,可取得《腾讯云原生路线图手册》&《腾讯云原生最佳实际》~
②公众号后盾回复【系列】,可取得《15 个系列 100+ 篇超实用云原生原创干货合集》,蕴含 Kubernetes 降本增效、K8s 性能优化实际、最佳实际等系列。
③公众号后盾回复【白皮书】,可取得《腾讯云容器平安白皮书》&《降本之源 - 云原生老本治理白皮书 v1.0》
④公众号后盾回复【光速入门】,可取得腾讯云专家 5 万字精髓教程,光速入门 Prometheus 和 Grafana。
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!