Volcano 是 Kubernetes 的云原生批处理调度器,专为高性能计算、AI/ML 和其他批处理工作负载而构建。
Headlamp 是一个可扩展的 Kubernetes Web UI。 通过其插件系统,Headlamp 可以展示内置 Kubernetes 资源之外的 API 和工作流。 Volcano 插件将核心 Volcano 资源引入 Headlamp,让你可以在一个地方检查工作负载状态、队列行为和组调度详情。
Kubernetes 最初围绕长期运行的服务设计,应用被期望启动后持续保持可用。 批处理、AI/ML 和 HPC 工作负载通常表现不同:作业动态到达,争夺有限资源,可能需要多个工作节点同时启动才能开始有效工作。
Volcano 通过队列、优先级、配额和组调度等概念扩展了 Kubernetes。 Volcano 不再独立对待每个 Pod,而是以感知整个作业及其所需资源的方式来调度工作负载。
为了使这些工作负载更易于操作和故障排查,Volcano 插件将调度上下文直接引入 Headlamp。
观看这段简短的演示视频,了解 Headlamp 中的 Volcano 插件:
使用 Volcano 时,理解批处理工作负载通常意味着在多个相关资源之间来回切换。
你可能从一个 Job 开始,然后查看相关的 PodGroup,检查其背后的 Pod,查看 Queue,最后再回到 Job。
这些都可以通过 kubectl 和 Volcano CLI 等命令行工具完成,但操作很快就会变得碎片化。
Headlamp 的 Volcano 插件通过将关键资源汇聚在单一 UI 中简化了这一工作流。 你无需手动重建资源关系,而是可以在同一界面中直接在 Job、Queue、PodGroup、Pod 和事件之间切换。
Volcano 在核心 Kubernetes 对象之上引入了自己的资源:
该插件在 Headlamp 中直接展示所有三种资源类型,在侧边栏的 Volcano 部分下为每种资源提供专用的列表和详情视图。
Job 视图是插件体验的核心。在列表视图中,你可以快速了解工作负载的基本信息,包括其状态、队列、运行数与最小可用数的对比、任务计数和创建时间。

详情视图进一步展示了调试 Job 时通常需要的信息:任务详情、Pod 状态、相关的 Queue 和 PodGroup 链接、状况、事件等。 插件将这些上下文集中在单一页面中,而无需在多个 CLI 命令之间来回切换。
Job 页面还为适当的状态添加了支持的生命周期操作,包括暂停和恢复,使你可以直接从 UI 操作 Job。
另一个有用的功能是直接访问 Job 日志。你可以在不离开 Job 详情页面的情况下打开 Volcano Job 创建的 Pod 的日志。 日志查看器支持单 Pod 和全部 Pod 视图,以及容器选择和常用日志控制,如行数、先前日志、时间戳和跟踪。

Queue 视图提供的远不止一小组顶层字段。 它通过展示容量、已分配资源、应得和保证资源、预留详情、子队列等信息,帮助你理解资源是如何被分配和约束的。
这使得 Queue 页面在理解资源如何在队列之间共享和限制时更加有用。

PodGroup 是理解 Volcano 中组调度的核心,该插件使这些状态更易于检查。 PodGroup 视图突出显示进度、状况、最低资源需求等信息。
这也让你更清楚地了解工作负载是否因尚未满足作为一组运行所需的调度条件而被阻塞。

地图视图展示了 Volcano 资源之间的关联。你无需单独检查每个资源,而是可以查看 Job、PodGroup、Queue 和 Pod 之间的关系。
当工作负载处于 Pending 状态或未按预期推进时,这尤其有用。 地图可以显示 Job、其相关的 PodGroup、为工作负载创建的 Pod 以及周围的 Queue 上下文。 警告和错误状态也使得发现需要关注的资源变得更加容易。

该插件并非要取代 kubectl 或 Volcano CLI。这些工具在自动化、脚本和原始对象检查方面仍然很重要。
插件改进的是交互式故障排查体验:更快地发现相关资源、理解结构化详情页面,以及从调度状态切换到运行时输出而无需不断切换工具。
这项工作将主要的 Volcano 工作流引入了 Headlamp,包括 Job、Queue、PodGroup 和地图视图。 未来可能的工作包括 Prometheus 集成、更丰富的调度洞察,以及跨 Volcano 工作负载的更多面向工作流的可见性。
要试用该插件:

如果你有想法、功能需求或缺陷报告,请在 Headlamp 插件仓库中提交 Issue。 来自真实 Volcano 用户的反馈将帮助塑造未来的发展方向。