游乐游手机版
首页/AI教程/文章详情

HAMI VGPU 系列01 Webhook 组件详解

时间:2026-05-29 15:10
HAMi Webhook 架构与流程说明近期在梳理 HAMi Webhook 模块时,发现许多人对它的处理范围及具体细节理解不够清晰。基于 pkg scheduler webhook go 的当前实现,本文整理了 Webhook 的准入流程与几个关键变更点,希望帮助大家全面掌握这一逻辑。1 Web

HAMi Webhook 架构与流程说明

近期在梳理 HAMi Webhook 模块时,发现许多人对它的处理范围及具体细节理解不够清晰。基于 pkg/scheduler/webhook.go 的当前实现,本文整理了 Webhook 的准入流程与几个关键变更点,希望帮助大家全面掌握这一逻辑。

1. Webhook 处理范围

HAMi Webhook 并非拦截所有 Pod——它仅关注以下三类 Pod:

  • spec.schedulerName 为空的 Pod
  • 已显式指定 HAMi 调度器的 Pod
  • schedulerNamedefault-scheduler,且开启了 ForceOverwriteDefaultScheduler=true 的 Pod

一旦 Pod 已被指派给其他调度器,Webhook 会直接放行,不再执行任何与 HAMi 相关的变更。这个筛选门槛相当清晰:不属于你的职责范围,就不要干预。

2. Webhook 工作时序图

3. 以 NVIDIA 设备为例的变更点

以 NVIDIA 设备实现为例,MutateAdmission 不仅检查资源是否存在,还会直接修改 Pod 和 Container 的内容。核心逻辑如下:

func (dev *NvidiaGPUDevices) MutateAdmission(ctr *corev1.Container, p *corev1.Pod) (bool, error) {/*gpu related */priority, ok := ctr.Resources.Limits[corev1.ResourceName(dev.config.ResourcePriority)]if ok { ctr.Env = append(ctr.Env, corev1.EnvVar{Name:util.TaskPriority,Value: fmt.Sprint(priority.Value()), })}if dev.config.GPUCorePolicy != "" && dev.config.GPUCorePolicy != DefaultCorePolicy { ctr.Env = append(ctr.Env, corev1.EnvVar{Name:util.CoreLimitSwitch,Value: string(dev.config.GPUCorePolicy), })}hasResource := dev.mutateContainerResource(ctr)if dev.defaultExclusiveCoreIfNeeded(ctr) { hasResource = true}if hasResource { // Set runtime class name if it is not set by user and the runtime class name is configured if p.Spec.RuntimeClassName == nil && dev.config.RuntimeClassName != "" {p.Spec.RuntimeClassName = &dev.config.RuntimeClassName }}if !hasResource && dev.config.OverwriteEnv { ctr.Env = append(ctr.Env, corev1.EnvVar{Name:"NVIDIA_VISIBLE_DEVICES",Value: "none", })}return hasResource, nil}

这段代码主要完成了以下操作:

  • 注入任务优先级相关的环境变量
  • 根据 GPUCorePolicy 的配置,注入核心策略对应的环境变量
  • 若容器仅声明了 core/memory/memoryPercentage 而未指定 GPU 数量,可能会自动补上 ResourceCountName
  • 当容器使用 GPU 资源且用户未设置 RuntimeClassName 时,Webhook 自动补全该字段
  • 反之,如果容器未使用此类设备资源,且 OverwriteEnv 功能开启,则注入 NVIDIA_VISIBLE_DEVICES=none

4. 思考

4.1 特权容器不会直接导致整个 Pod 被拒绝

当前实现中,遇到特权容器时,处理方式是“跳过该容器的设备变更逻辑”,而非“直接拒绝整个 Pod”。更准确的表述是:

  • 特权容器不会执行设备注入及相关修改
  • Pod 不会因为某个容器为特权模式而被整体驳回

4.2 未识别到 HAMi 设备资源的 Pod 通常会放行

如果所有设备实现都判定 Pod 未使用 HAMi 管理的资源,那么 Webhook 既不会将其调度器改为 HAMi,也不会因“未申请 vGPU”而直接拒绝。简言之,不涉及自身资源就不做干预。

4.3 nodeName 拒绝是有前提条件的

Webhook 会在 nodeName 已设置时拒绝 Pod,但这一操作有严格前提:必须同时满足两个条件:

  • hasResource = true(表明 Pod 确实使用了 HAMi 设备)
  • 已配置 HAMi 的 SchedulerName

换句话说,并非所有带 nodeName 的 Pod 都会被拦截。

4.4 配额校验当前主要针对 NVIDIA

查看 fitResourceQuota() 的实现,内部注释写明“Only supports NVIDIA”。因此资源配额检查目前主要面向 NVIDIA 资源,其他设备暂未纳入统一校验范围。

5. Webhook 功能总结

整个 Webhook 在 Pod 创建阶段介入准入流程,首先判断 Pod 是否申请了 HAMi 管理的设备资源,然后按需补充资源字段、注入环境变量、设置 RuntimeClassName,最后将需要 HAMi 接管调度的 Pod 改写为 HAMi 调度器处理。

对于已指定其他调度器的 Pod,Webhook 直接放行,不进行干涉;对于使用了 HAMi 设备资源但显式设置了 nodeName 的 Pod,Webhook 会直接拒绝,以防绕过 HAMi 的调度策略。

资源配额检查通过后,Webhook 生成 Patch 返回给 apiserver,随后 Pod 进入后续调度流程。

来源:https://juejin.cn/post/7629644017265426484
上一篇危险化学品安全技术说明书编写与管理指南 下一篇我用付费模型大版本升级五点反思AI非万能药
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
GPT Workspace通过GPT-5强化Google Workspace,文档表格邮件创作效率与智能化提升
AI教程 · 2026-05-29

GPT Workspace通过GPT-5强化Google Workspace,文档表格邮件创作效率与智能化提升

GPT Workspace 产品介绍:GPT-5 如何增强 Google Workspace 工作效率 如果你每天都在使用 Google Workspace 进行文档撰写、表格处理、邮件沟通和演示制作,一定深有体会:大量重复性的办公任务耗费了宝贵的时间。现在,GPT Workspace 将 GPT-

AI助手提升年终总结与周报效率的精准营销策略
AI教程 · 2026-05-29

AI助手提升年终总结与周报效率的精准营销策略

适合需求:在信息爆炸的时代,企业所承受的竞争压力几乎覆盖了所有维度,其中营销领域尤为令人困扰。无论是撰写年终总结还是生成周报,精准的营销策略已成为不可或缺的需求——没有谁愿意在庞杂的数据中迷失方向。当我们复盘营销活动时,总会思考:过去哪些数字营销策略真正发挥了效果?哪些内容营销策略有待改进?然而实际

Afri Studio 非洲创意工作室
AI教程 · 2026-05-29

Afri Studio 非洲创意工作室

Afri Studio是什么先来聊聊Afri Studio——它是Afri AI团队推出的一款AI媒体创作工作室,目标很明确:把原本高高在上的智能技术拉下神坛,让普通用户也能轻松生成高质量的文本、图像、音频等内容。换句话说,这是一个面向内容创作者、博主、营销人员、艺术家的“AI工具箱”,帮你高效搞定

Geniea专注Midjourney提示词优化提升创意生成效率
AI教程 · 2026-05-29

Geniea专注Midjourney提示词优化提升创意生成效率

Geniea产品详解:Midjourney提示优化工具Geniea是一款专注于Midjourney提示词优化的智能平台,致力于帮助创作者快速生成高质量且富有创意的提示方案。无论您需要电影镜头、食品摄影还是汽车广告等场景的提示词,只需输入简单指令,系统便会自动输出优化后的提示文本,大幅提升创作效率。提

幼儿园大班毕业典礼方案PPT AI轻松制作精彩回顾
AI教程 · 2026-05-29

幼儿园大班毕业典礼方案PPT AI轻松制作精彩回顾

使用情景 每年毕业季来临之际,幼儿园大班毕业典礼的筹备工作,总是牵动着众多老师、家长和孩子们的心弦。这不仅仅是一场简单的活动,更是孩子们人生中首个重要的成长仪式,标志着他们告别幼儿时光、迈向新阶段的里程碑。对于家长而言,这也是一次充满感怀的“毕业”,意味着一段陪伴旅程的暂时落幕。 如何让这场典礼既温