Kubernetes DRA会取代HAMi吗?

Kubernetes DRA会取代HAMi吗?

💡 原文英文,约3000词,阅读约需11分钟。
📝

内容提要

HAMi是CNCF孵化项目,用于Kubernetes GPU共享。Kubernetes DRA(动态资源分配)自v1.34起GA,支持可消耗容量,使调度器原生处理GPU切片请求,但仅跟踪承诺,不执行运行时限制。HAMi保留其核心执行层(拦截CUDA调用),并推出HAMi-DRA驱动和webhook,将传统扩展资源转换为DRA声明,实现向后兼容。两者互补,DRA负责调度,HAMi-core负责强制限制,生产环境需按版本和供应商选择模式。

🔎

延伸解读

DRA与HAMi的分工:调度与执行

DRA负责调度层的资源承诺,确保调度器不会超卖GPU资源;而HAMi-core负责运行时强制限制,通过拦截CUDA调用确保容器不超用。两者互补,DRA不执行运行时限制,HAMi不参与调度决策。生产环境需同时部署DRA驱动和HAMi-core,才能实现完整的GPU共享。

版本与部署门槛

DRA模式要求Kubernetes v1.34+,且需启用DRAConsumableCapacity特性门控(v1.36起默认开启)。此外,需要CDI兼容的运行时(如containerd或CRI-O)和NVIDIA驱动440+。在v1.34/v1.35上,特性门控默认关闭,托管集群可能无法修改API服务器参数,成为部署障碍。

向后兼容与迁移路径

HAMi-DRA webhook可将传统扩展资源(如nvidia.com/gpumem)自动转换为ResourceClaim,无需修改现有清单。这降低了迁移成本,但需注意DRA模式与传统设备插件模式不能在同一集群共存,否则两个调度器会各自记账,导致资源超卖。

拓扑感知与供应商覆盖

HAMi-DRA不提供调度器,无法进行拓扑感知的放置决策(如NVLink连接优化)。此外,DRA驱动的供应商覆盖目前以NVIDIA为主,Ascend、Enflame等尚在完善中,而传统模式支持12+设备家族。异构集群在DRA驱动成熟前仍需依赖传统模式。

Q&A

Kubernetes DRA会取代HAMi吗?

不会完全取代。DRA负责调度层的资源请求和分配,而HAMi的核心执行层(HAMi-core)负责在容器内强制限制CUDA调用。两者互补,DRA处理调度,HAMi-core处理运行时强制。

HAMi在Kubernetes中如何实现GPU共享?

HAMi通过扩展资源(如nvidia.com/gpumem和nvidia.com/gpucores)请求GPU切片,使用mutating webhook和scheduler extender进行调度,并通过注解记录分配,最后通过预加载libvgpu.so拦截CUDA调用来强制限制。

Kubernetes DRA的consumable capacity特性是什么?

consumable capacity是DRA的一个特性,允许设备驱动标记设备支持多个分配,并允许资源请求指定容量(如内存大小),调度器会像管理节点内存一样管理设备容量,确保总分配不超过设备容量。

HAMi-DRA是什么?它解决了什么问题?

HAMi-DRA是一个mutating admission webhook,它将传统的扩展资源请求(如nvidia.com/gpumem)转换为DRA的ResourceClaim,实现向后兼容,让现有清单无需修改即可在DRA模式下运行,并支持与其他调度器(如Volcano)集成。

DRA模式与传统设备插件模式相比有哪些优缺点?

DRA模式使用标准API,调度由默认调度器处理,分配记录在ResourceClaim中,更透明且可扩展;但需要Kubernetes v1.34+和CDI运行时,且供应商覆盖较少。传统模式兼容性广,但依赖私有注解和扩展器。

在Kubernetes中,DRA和HAMi如何协同工作?

DRA负责调度和资源请求,HAMi-core负责运行时强制限制。HAMi的DRA驱动将GPU资源发布为consumable capacity,调度器分配后,HAMi-core通过拦截CUDA调用确保容器不超过分配的资源。

使用HAMi DRA模式需要哪些前提条件?

需要Kubernetes v1.34+并启用DRAConsumableCapacity特性门控(v1.36起默认启用),CDI兼容的运行时(如containerd或CRI-O),NVIDIA驱动440或更新版本,以及对应的DRA驱动(如NVIDIA的k8s-dra-driver)。

HAMi DRA模式与传统模式能否共存?

不能。文档明确指出两种模式不能在同一集群中同时运行,因为两个调度器(scheduler extender和DRA调度器)会各自管理VRAM,导致资源承诺冲突。必须选择一种模式。

🏷️

标签

➡️

继续阅读