NVSentinel 介绍

1. 项目背景与应用场景

随着 AI 训练、推理和高性能计算业务对 GPU 集群的依赖不断加深,GPU 节点故障对业务稳定性和资源利用率的影响也日益突出。在大规模 Kubernetes GPU 集群中,节点健康管理和故障自愈一直是运维领域的核心挑战。

传统的 GPU 运维模式主要依赖监控告警、人工排查和手动隔离故障节点,这种方式在小规模集群中尚可运行,但随着集群规模扩大,会暴露出一系列问题:

  • 故障发现滞后:训练任务可能在 GPU 异常持续一段时间后才失败,造成算力资源浪费和业务中断;
  • 故障信号分散:异常信息分布在 DCGM、驱动日志、系统日志、云厂商事件和 Kubernetes 状态中,人工关联分析成本高、效率低;
  • 处理链路割裂:节点隔离、Pod 驱逐、硬件修复和云平台重建之间缺少统一编排,难以形成闭环;
  • 经验难以沉淀:GPU 故障处理高度依赖专家经验,难以转化为标准化、可复用的自动化流程。

NVSentinel 正是在这样的背景下应运而生。它面向运行 AI 工作负载的 Kubernetes GPU 集群,旨在将 GPU 健康信号、系统日志、云厂商维护事件和 Kubernetes 资源状态统一纳入故障处理链路,并进一步转化为节点隔离、工作负载驱逐和修复流程触发等自动化动作,实现 GPU 节点故障的闭环自愈。

2. 产品定位与核心价值

NVSentinel 是一款专为 Kubernetes 设计的 GPU 故障检测与修复系统。它能够持续监控 GPU 运行状态、系统日志以及云服务提供商的维护活动,一旦发现故障,立即执行节点隔离、工作负载迁移和故障修复流程触发,整个过程无需人工干预。

需要明确的是,NVSentinel 并非传统意义上的监控系统,而是 Kubernetes 原生的 GPU 节点自愈系统。它的核心目标不是"展示指标",而是围绕 GPU 故障构建一条完整的闭环处理链路:

  1. 通过多类健康监控器持续采集 GPU、系统和云平台侧的异常信号;
  2. 将异常信号统一抽象为健康事件,并持久化到共享数据存储;
  3. 基于规则和模式分析判断故障影响范围,生成对应的处理决策;
  4. 通过 Kubernetes API 对节点执行 cordon、drain、打标、状态更新等操作;
  5. 在需要硬件维修、节点重启或实例替换时,触发外部修复系统。

因此,NVSentinel 的定位更接近于 GPU 集群运维自动化平台的核心组件,通常与 GPU Operator、DCGM、Kubernetes 调度系统、云厂商 API、工单系统或内部硬件维修系统协同工作。

3. 架构设计与工作机制

3.1 整体架构

NVSentinel逻辑架构

NVSentinel 采用模块化、事件驱动的架构设计。系统中的健康监控器、分析模块、隔离模块、驱逐模块和修复模块之间不直接调用,而是通过共享数据存储和 Kubernetes API 实现协同。

从公开架构来看,NVSentinel 大致可以分为三层:

  • 健康监控层:包括 GPU Health Monitor、Syslog Health Monitor、CSP Health Monitor 和 Kubernetes Object Monitor,负责从不同来源采集异常信号;
  • 事件接入与存储层:Platform Connectors 通过 gRPC 接收健康事件,完成校验后写入 MongoDB,同时更新 Kubernetes NodeCondition 等状态信息;
  • 核心处理层:Fault Quarantine、Node Drainer、Fault Remediation、Health Events Analyzer、Labeler 等模块监听事件变化,分别执行节点隔离、工作负载驱逐、修复请求创建和节点标签维护等操作。

这种设计的核心优势在于模块解耦。每个模块只需关注自身订阅的事件和对应的处理动作,新增监控信号或处理动作时,理论上只需扩展对应模块,无需改动整个系统。

3.2 故障检测机制

NVSentinel 的故障检测能力由多个独立的监控模块共同提供,各模块通过共享数据存储和 Kubernetes API 协同工作,模块之间不直接通信。各类健康监控器负责检测不同维度的故障,并将健康状态信息上报给系统。

这些监控器共同解决了 GPU 故障信号来源分散的问题。GPU 硬件状态主要来自 DCGM,驱动和内核异常体现在系统日志中,云上实例或宿主机维护事件需要从云厂商接口获取,而 Kubernetes 中的节点、Pod 和自定义资源状态也能反映故障或调度异常。

NVSentinel 将这些异构信号统一抽象为健康事件,后续模块只需围绕标准化的健康事件进行分析和处理。这种抽象方式既屏蔽了不同信号源之间的差异,也使得故障策略可以从"面向具体日志或指标"升级为"面向标准化健康事件"。

3.2.1 GPU 健康监控

GPU 健康监控是 NVSentinel 的基础能力。它通过 DCGM 采集 GPU 层面的硬件和运行状态信息,覆盖温度、显存、ECC、XID、GPU reset、NVLink / NVSwitch 等常见故障信号。

这部分能力的关键不只是"采集指标",而是将 GPU 原始异常转化为后续可自动处理的健康事件。对于 GPU 集群而言,很多故障需要结合上下文判断影响范围:同样是 ECC 错误,单次可纠正错误和持续不可纠正错误的处理方式截然不同;同样是 XID,不同编号可能对应驱动、硬件、链路或应用层问题。

GPU Health Monitor 在整个系统中承担故障信号标准化入口的角色,将底层硬件状态转化为统一事件格式,为后续分析、隔离和修复提供标准化输入。

3.2.2 系统日志监控

Syslog Health Monitor 负责从系统日志中识别 GPU 和节点相关故障。GPU 故障并不总是完整体现在 DCGM 指标中,驱动崩溃、内核错误、PCIe 异常、NVLink 错误、GPU 掉卡等问题往往先出现在 journal 或 syslog 中。

系统日志监控能够弥补指标体系的盲区,适合捕获以下类型的问题:

  • NVIDIA 驱动加载、卸载或崩溃异常;
  • kernel panic、机器检查异常、PCIe AER 等系统级错误;
  • GPU 设备不可见、掉卡或驱动无法访问;
  • NVLink / NVSwitch 链路异常;
  • 节点重启前后的故障痕迹。

这部分能力对于故障根因分析同样重要。即使自动化系统已完成节点隔离和修复,日志仍是后续判断硬件问题、驱动问题还是应用触发问题的重要依据。

3.2.3 云厂商维护事件接入

CSP Health Monitor 负责接入云服务提供商的维护事件或硬件事件。对于运行在公有云上的 GPU 集群,节点故障不一定来自业务侧感知到的 GPU 异常,也可能来自云厂商计划内维护、底层宿主机异常、实例回收、硬件更换或网络存储故障。

NVSentinel 将云厂商事件纳入健康事件体系,能够提前感知节点风险。例如,当某个 GPU 实例即将被云厂商维护时,系统可以提前 cordon 节点并迁移工作负载,避免训练任务在维护窗口内被动中断。

这类能力对于混合云和多云 GPU 集群尤为重要。不同云厂商的事件接口、事件类型和维护语义存在差异,NVSentinel 通过 CSP Monitor 将其统一抽象为内部健康事件,降低了后续处理模块的复杂度。

3.2.4 Kubernetes 对象状态监控

Kubernetes Object Monitor 使用 CEL 表达式评估 Kubernetes 资源状态,并基于自定义规则生成健康事件。这使得 NVSentinel 不局限于硬件和系统日志,也能将 Kubernetes 层面的状态纳入故障判断。

例如,节点长时间 NotReady、GPU 设备插件异常、特定 DaemonSet 不可用、Pod 因节点问题反复失败、某些自定义资源状态异常,都可以通过 Kubernetes 对象监控转化为健康事件。

这类能力的核心价值在于可扩展性。不同企业的 GPU 集群往往有自己的调度器、设备插件、作业系统和运维 CRD,Kubernetes Object Monitor 可以通过规则接入这些平台状态,而无需为每一种业务系统都开发专门的监控模块。

3.3 事件分析与决策

Health Events Analyzer 是 NVSentinel 中负责事件分析和动作决策的核心模块。它根据健康事件的类型、严重程度、出现频率和时间序列特征,对故障进行分类,并生成后续处理建议。

事件分析的核心价值在于区分不同故障的处理优先级。例如,单次可纠正 ECC 错误只需记录并持续观察;重复出现的不可纠正 ECC 错误可能预示硬件风险,需要及时隔离节点;驱动崩溃或 GPU 无响应则可能需要触发节点 drain、重启甚至硬件维修流程。

NVSentinel 的分析逻辑本质上是将运维经验固化为规则和模式。在实际生产环境中,GPU 故障往往不是单一信号,而是一组事件的组合——XID 错误、驱动日志异常、Pod 失败、节点状态变化可能先后出现。通过事件分析模块统一判断,既能减少单个告警的误判率,也能避免重复触发多个相互冲突的修复动作。

3.3.1 多事件关联与故障判定

GPU 集群故障通常具有链式特征:底层 GPU 错误先出现,随后驱动日志异常,接着 Pod 失败,最后节点状态变化。如果仅依赖单个事件判断,容易出现误报、漏报或重复处理。

NVSentinel 通过 Health Events Analyzer 对多个事件进行关联分析,尝试从时间序列和事件模式中判断真实故障类型。它能够将零散事件聚合成更具业务意义的判断,例如"节点存在不可恢复 GPU 故障,需要隔离并触发维修",而不是简单输出一组低层级告警。

多事件关联能力是自动化修复能否可靠运行的关键。自动化系统一旦误判,可能导致误隔离节点或误驱逐任务;但如果判断过于保守,又可能无法及时处理故障节点。因此,故障判定规则需要结合实际集群规模、业务 SLA、训练任务特点和硬件故障经验持续调优。

3.4 节点隔离与工作负载驱逐

当 NVSentinel 判断某个节点存在 GPU 或系统级故障后,首先需要阻止 Kubernetes 调度器向该节点分配新的工作负载。Fault Quarantine 模块根据健康事件和配置规则,对故障节点执行 cordon 操作,并通过节点状态或标签暴露故障信息。

仅 cordon 节点无法处理已运行在故障节点上的任务,因此 Node Drainer 负责后续的工作负载驱逐。它监听已隔离节点的事件变化,结合命名空间策略、PodDisruptionBudget、Pod 终止宽限期等 Kubernetes 机制,以可控的方式驱逐业务 Pod。

Node Drainer 的一个关键设计是区分故障影响范围。如果故障只影响单张 GPU,且业务调度信息能够识别具体的 GPU 使用关系,则可以尝试局部驱逐使用该 GPU 的 Pod;如果故障需要节点重启或整机维修,则执行整节点 drain。这种分级处理策略在故障处理和业务影响之间取得了平衡。

3.5 故障修复与节点恢复

Fault Remediation 模块负责将 NVSentinel 内部的故障判断转化为外部修复系统可消费的请求。根据公开资料,NVSentinel 的修复模块会在节点完成隔离和驱逐后,创建 Kubernetes Custom Resource,由外部 Operator 或维修系统监听并执行实际的修复动作。

常见的修复动作包括:

  • 重启节点或云主机实例;
  • 重置 GPU 或执行组件级恢复操作;
  • 触发云厂商实例替换、宿主机迁移或硬件维修;
  • 收集故障现场日志,用于后续根因分析;
  • 更新节点标签或状态,记录修复进度。

这种设计表明,NVSentinel 并未将所有维修逻辑内置,而是将自身定位为"故障检测、决策和修复请求的编排层"。真正的硬件维修、云资源替换、RMA 或内部工单流程由企业已有系统完成。这既降低了 NVSentinel 与具体基础设施的耦合度,也便于不同环境按需接入。

3.5.1 自动隔离、驱逐与修复闭环

自动隔离、驱逐与修复是 NVSentinel 与传统监控系统最本质的区别。传统系统通常停留在"发现问题并告警"的阶段,而 NVSentinel 则会根据故障类型进入自动处理流程。

典型的故障处理链路如下:

  1. 监控器发现 GPU、系统日志、云厂商或 Kubernetes 状态异常;
  2. Platform Connectors 接收健康事件并写入事件存储;
  3. Health Events Analyzer 判断故障严重程度并生成推荐动作;
  4. Fault Quarantine 对故障节点执行 cordon,阻止新任务调度;
  5. Node Drainer 驱逐节点上的业务 Pod,尽量降低对业务的影响;
  6. Fault Remediation 创建修复请求,由外部系统执行重启、替换、维修或恢复;
  7. 修复完成后,节点状态恢复,重新进入集群可调度资源池。

这条链路将 GPU 故障处理从人工流程转变为事件驱动的自动化流程。对于大规模 GPU 集群,其价值不仅在于减少人工操作,更在于减少故障节点对训练任务的持续影响,提升集群可用性和 GPU 资源利用率。

3.6 可观测性与事件导出

NVSentinel 的可观测性设计重点并非单纯采集 GPU 指标,而是围绕"故障事件生命周期"提供完整的状态追踪。一个完整的故障处理过程通常包括事件产生、事件分析、节点隔离、工作负载驱逐、修复请求创建、修复完成和节点恢复等阶段。

通过 Kubernetes NodeCondition、事件、标签、自定义资源以及 MongoDB 中的健康事件记录,运维人员可以追踪某个节点被隔离的原因、当前 drain 进度、是否已触发修复、修复动作是否完成等信息。与单纯的指标告警相比,这类状态信息更接近故障工单流转的视角。

在生产环境中,事件导出能力同样重要。GPU 集群通常已部署 Prometheus、日志平台、告警平台或 ITSM 系统,NVSentinel 需要将自身的健康事件和处理状态输出到这些系统中,才能形成统一的运维视图和审计记录。

4. 开源项目概况

仓库地址github.com/NVIDIA/NVSentinel,开源协议 Apache 2.0

项目定位:为 Kubernetes GPU 集群提供硬件故障自动隔离、驱逐、修复的原生自愈方案,弥补 DCGM/NVSM 在集群调度自愈能力方面的空白。

NVIDIA 最初在 DGX 集群上进行开发和测试(NVSM 仅支持 DGX 节点),并于 2025 年 10 月正式开源。

4.1 版本演进历程

4.1.1 早期预览版(2025.12–2026.02,0.x 系列)

v0.3.0 / v0.6.0 / v0.9.0 等预览版本主要特点:

  • 仅提供基础的 DCGM 故障采集和简单的 Cordon 隔离能力;
  • 修复链路不完善,不推荐生产环境使用,标注为 Experimental;
  • 缺少完整的 MIG 局部复位、CSP 云厂商对接、多事件 Pattern 时序分析等能力。

4.1.2 首个正式稳定版本 v1.0.0(2026 年 3 月)

2026 年 3 月,官方宣布 v1.0.0 达到可用稳定态,推荐生产环境测试落地

  1. 从开源发布到 v1.0.0,共迭代 13 个 release、400+ 代码提交
  2. 补全了全套核心组件:
    • Health Events Analyzer(完整的 Pattern 时序和多故障关联分析)
    • Fault Quarantine(Node Cordon)、Node Drainer(精准单 GPU 驱逐)
    • Fault Remediation(MIG / 单 GPU softReset、Break-Fix RMA 工单集成)
    • Labeler 节点 / GPU 自动打标
    • CSP Health Monitor 公有云厂商维护事件对接
  3. 新增 GB200 / GB300 全兼容、分布式 Slinky Drain、事件导出、集群预检等能力;
  4. NVIDIA 内部已大规模落地,管理 4 万+ GPU 的裸金属 / 云集群(AWS / Azure / GCP / OCI / DGX)。

从版本演进可以看出,NVSentinel 的发展重点不是再造一个 GPU 指标采集器,而是逐步补齐"监控、分析、隔离、驱逐、修复、恢复"这条完整的自愈闭环。早期版本更接近基础故障采集和节点隔离工具,后续版本则逐步引入事件关联、局部驱逐、外部修复系统集成和云厂商事件对接等能力。

4.2 代码结构与核心模块

NVSentinel 的代码结构围绕 Kubernetes 原生控制器和独立微服务组织,各模块职责划分清晰:

  • Health Monitors:负责从 GPU、系统日志、云厂商 API、Kubernetes 对象等来源采集健康信号;
  • Platform Connectors:作为事件接入层,接收监控器通过 gRPC 上报的健康事件,负责校验、持久化和更新 Kubernetes 状态;
  • MongoDB Store:作为健康事件数据库,各模块通过监听数据变化获取事件输入;
  • Health Events Analyzer:对事件进行模式分析,生成推荐动作;
  • Fault Quarantine:基于规则判断是否需要 cordon 节点;
  • Node Drainer:负责对已隔离节点执行工作负载驱逐;
  • Fault Remediation:负责创建修复类 Custom Resource,对接外部维修或重建系统;
  • Labeler:维护节点、GPU、驱动、DCGM 等相关标签,方便调度、筛选和故障定位。

从工程实现角度看,NVSentinel 的模块边界具有良好的可扩展性。新增健康信号可优先考虑新增 Monitor;新增处理策略可在 Analyzer、Quarantine、Drainer 或 Remediation 的规则和模板层扩展;新增外部维修系统可通过自定义 CRD 模板或外部 Operator 对接。

4.3 开源协议与二次开发

NVSentinel 采用 Apache 2.0 开源协议,对商业使用和二次开发相对友好,允许使用、修改、分发和在商业产品中集成,但需保留版权声明、License 文本和 NOTICE 等相关信息。

从二次开发角度看,协议本身并非主要障碍,真正的约束更多来自技术依赖:

  • NVSentinel 当前围绕 NVIDIA GPU 生态构建,核心监控能力依赖 DCGM、GPU Operator、NVIDIA 驱动日志和 NVIDIA GPU 相关事件语义;
  • 部分故障分类、XID、ECC、MIG、NVLink、NVSwitch 等语义与 NVIDIA 硬件强相关;
  • 自动修复动作依赖 Kubernetes 资源模型、节点标签、NodeCondition、Pod 驱逐策略和外部维修系统;
  • 若用于非 NVIDIA GPU 平台,需要替换或适配 GPU 健康信号来源、故障码体系、设备拓扑、局部复位能力和维修动作语义。

因此,NVSentinel 的开源代码具有较高的参考价值,尤其是 Kubernetes 自愈链路和模块化架构设计。但如果目标是支持其他 GPU 硬件平台,DCGM 相关监控逻辑无法直接复用,需要重点评估监控接口、故障事件模型和修复动作模型的可替换性。

5. 总结与展望

NVSentinel 的核心价值在于将 GPU 故障处理从"监控告警 + 人工排障"的被动模式,推进到"检测、分析、隔离、驱逐、修复"的自动闭环。它并未试图替代 DCGM、GPU Operator、Kubernetes 或企业已有的维修系统,而是将这些能力串联起来,形成面向 GPU 节点故障的 Kubernetes 原生自愈框架。

从架构设计角度,NVSentinel 有几个值得关注的特点:

  • 统一事件抽象:以健康事件作为统一数据模型,屏蔽 GPU 指标、系统日志、云厂商事件和 Kubernetes 状态之间的差异;
  • 模块解耦设计:通过 MongoDB 和 Kubernetes API 解耦各模块,降低监控、分析、隔离、驱逐和修复之间的直接依赖;
  • 修复能力外置:将修复动作外置为 CRD 或外部 Operator,便于对接不同企业的云平台、裸金属维修和工单系统;
  • 经验规则沉淀:通过规则和事件模式沉淀 GPU 运维经验,使故障处理策略可以持续迭代优化。

5.1 适用场景与边界

NVSentinel 更适合以下场景:

  • 大规模 Kubernetes GPU 集群(通常百卡以上规模),人工运维成本高;
  • 对业务连续性要求较高的训练或推理场景,故障需要快速自动处理;
  • 已有相对完善的监控体系,但缺少故障自动处置能力的环境;
  • 多云或混合云 GPU 集群,需要统一的故障自愈框架。

同时也需要认识到其边界:NVSentinel 依赖 NVIDIA GPU 生态,对非 NVIDIA GPU 平台需要较多适配工作;其修复能力依赖外部系统配合,无法独立完成硬件级修复;对于小规模集群,引入的复杂度可能超过其带来的收益。

5.2 技术借鉴价值

对于调研或复刻类似产品的团队而言,NVSentinel 最值得借鉴的是其事件模型设计、模块边界划分、Kubernetes 原生控制方式以及完整的故障处理闭环设计。这些架构思想具有较强的通用性,可以作为构建 GPU 集群自愈系统的参考蓝图。


附录:术语解释

为方便理解,本文中涉及的主要技术术语解释如下:

术语 全称 / 说明
Kubernetes 开源容器编排平台,用于自动化部署、扩展和管理容器化应用。在 GPU 场景中负责调度和管理 GPU 资源。
Pod Kubernetes 中最小的部署单元,包含一个或多个容器。
Node Kubernetes 集群中的工作节点(物理机或虚拟机)。
Cordon 将节点标记为不可调度,阻止新的 Pod 被分配到该节点。
Drain 驱逐节点上的所有 Pod,通常用于节点维护前的准备工作。
CRD Custom Resource Definition,自定义资源定义,用于扩展 Kubernetes API。
DCGM Data Center GPU Manager,NVIDIA 提供的 GPU 集群管理和监控工具,可采集温度、功耗、ECC 错误、XID 事件等指标。
NVLink NVIDIA 开发的高速互联技术,用于 GPU 之间以及 GPU 与 CPU 之间的直接通信,带宽远高于传统 PCIe。
NVSwitch NVIDIA GPU 交换芯片,通过 NVLink 接口连接多张 GPU,实现任意 GPU 之间的全互联通信。
MIG Multi-Instance GPU,允许将一张物理 GPU 分割成多个独立的 GPU 实例,提高资源利用率。
ECC Error Correcting Code,纠错码。GPU 显存支持 ECC 功能,可检测并纠正内存错误,是 GPU 硬件健康的重要指标。
XID NVIDIA 驱动程序报告的 GPU 错误代码,不同编号对应不同类型的错误(应用、驱动、硬件、总线等)。
CSP Cloud Service Provider,云服务提供商,如 AWS、GCP、Azure、OCI 等。