mcpField
D
Draforge

Draforge

本地服务
oaslananka.github.io云与基础设施23 周前更新

关于 Draforge

Draforge 是面向 Kubernetes GPU 与加速器工作负载的 DRA 可观测、模拟和诊断工具,适用于集群运维与开发人员。它可模拟虚拟设备池,并分析资源声明待处理或分配失败的原因。

主要功能

  1. 01模拟虚拟设备池与硬件配置
  2. 02检查 ResourceClaim 和 ResourceSlice
  3. 03诊断集群与驱动配置
  4. 04解释资源声明分配失败原因
  5. 05提供终端监控与关系图仪表板

适用场景

  1. 01无实体加速器硬件时测试 DRA 配置
  2. 02排查待处理的 ResourceClaim
  3. 03查看 Pod、资源声明与设备关系

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

DRAForge

面向 GPU 和加速器工作负载的云服务商中立 Kubernetes 动态资源分配可观测性、模拟与诊断工具。

对虚拟设备池建模,检查 ResourceClaim 和 ResourceSlice 状态,并说明分配成功或失败的原因——无需物理加速器硬件,也不依赖特定云服务商。

CI Security Analysis Latest Release Go Coverage OpenSSF Scorecard OpenSSF Best Practices License

Documentation Kubernetes DRA Go Version Discussions

文档 · 快速入门 · 架构 · 兼容性 · 运维 · 参与贡献 · 治理 · 安全 · 支持

GitHub Sponsors Buy Me a Coffee


为什么选择 DRAForge?

Kubernetes 动态资源分配(DRA)支持由驱动程序控制的精细化加速器共享。不过,开发和调试 DRA 配置面临一项重大挑战:

  1. 硬件短缺:为测试环境购置和配置专用加速器节点(例如 NVIDIA H100 GPU)既耗时又昂贵。
  2. 可观测性不足:原生 Kubernetes 调度日志难以直观呈现资源声明无法绑定到 Pod 的原因。

DRAForge 通过提供基于证据的诊断工具包、动态虚拟设备模拟器、终端用户界面(TUI)以及实时交互式关系图仪表板,弥合这一差距。


功能

  • 虚拟设备池:在工作节点上使用自定义属性和容量,模拟任意硬件配置(例如 GPU、FPGA、高速 NIC)。
  • 诊断医生:对配置进行真实、非模拟的分析(例如 API 可用性、版本兼容性、ResourceSlice 一致性检查)。
  • 解释引擎:实时评估选择器、容量限制和节点亲和性,精准定位资源声明处于待处理状态的原因。
  • Bubble Tea TUI:通过专业的终端监控界面查看动态池容量。
  • 交互式图表仪表板:实时以 SVG 可视化 Pod、声明、设备和池之间的关系。

架构

graph TD
    subgraph Kubernetes Cluster
        Server[DRAForge Server] <--> WebSPA[Vite + React SPA Dashboard]
        Controller[DRAForge Controller] <--> SimulatedDevicePool[SimulatedDevicePool CRD]
        Plugin[Node Plugin DaemonSet] --> ResourceSlice[ResourceSlice Spec]
        APIServer[Kubernetes API Server] <--> Server
        APIServer <--> Controller
        APIServer <--> Plugin
    end
    CLI[DRAForge CLI] <--> APIServer

DRAForge 组件使用 Kubernetes API 和 Helm 契约,而非特定于提供商的服务。它们可在兼容的托管 Kubernetes 服务、自托管集群、本地部署环境和本地测试集群上运行。本仓库中针对特定提供商的 Terraform 或注册表资源均为可选示例。


安装

从源代码安装(Go 1.26+)
go install github.com/oaslananka/draforge/cmd/draforge@latest

或者克隆并在本地构建:

git clone https://github.com/oaslananka/draforge.git
cd draforge
task build          # Builds all three binaries into bin/
./bin/draforge version

你也可以从 GitHub Releases 页面获取预构建的二进制压缩包。

快速入门

快速入门 A:已验证的本地 kind 集群

安装 Docker、kubectl、Helm、jq、curl、Go、Node.js、pnpm、Task,以及 tests/install-e2e/kubernetes-versions.json 中指定版本的 kind。然后创建与拉取请求安装门禁所用的完整本地堆栈,并保留该环境以便探索:

DRAFORGE_INSTALL_E2E_KEEP_CLUSTER=1 task e2e:install-kind

访问仪表板:

kubectl port-forward svc/draforge-server -n draforge-system 8080:8080

需要时构建本地 CLI/TUI:

task build
./bin/draforge doctor
./bin/draforge tui

完成后销毁临时集群:

kind delete cluster --name draforge-install-e2e
快速入门 B:可选的 DigitalOcean Kubernetes (DOKS) 展示

此特定于提供商的流程是 DRAForge 在一种托管 Kubernetes 服务上的可选演示。安装、测试或发布均不需要此流程。

⚠️ 计费资源:此任务会在你的 DigitalOcean 账户中创建一个运行中的 DOKS 集群和 DOCR 注册表,并产生云服务费用。完成后请务必运行 task demo:down,销毁所有计费资源。

部署短期 DOKS 展示环境:

task demo:up

此任务会显式应用非生产环境配置 values-showcase-docr.yaml,该配置会启用未经身份验证的 HTTP 访问。任务会审核资源限制、创建基础设施、远程构建镜像、安装 Helm 版本并输出演示 URL。请勿将此配置用于敏感集群或生产部署。

常规 Helm 安装只会创建内部 ClusterIP 服务。生产环境中的公共访问需要 TLS 和由运维人员管理的 OIDC/身份感知代理;请参阅安装指南。 节点插件默认使用隔离的 demo CDI 输出。与主机集成的 kubelet CDI 输出需要显式选择 nodePlugin.outputMode=node,且在 Kubernetes 或主机 CDI 目录不可用时会安全失败。

拆除展示环境并清理所有计费资源:

task demo:down

测试

# Run all unit tests (fast, no race)
go test ./...
# or: task test:unit

# Run unit tests with race detector and coverage
go test -race -coverprofile=coverage.out ./...
# or: task test:race

# Run all Go vet checks
go vet ./...
# or: task vet

# Run frontend unit and integration tests
pnpm --dir web test
# or: task web:test

# Run full Go CI suite (unit + race)
task test

带标签的冒烟测试可在任何提供所需 DRA API 的兼容 Kubernetes 集群上运行,并由 DRAFORGE_E2E=1 控制是否启用。Portable Kubernetes E2E 工作流会针对相关拉取请求,在无需凭证的 kind 环境中验证此流程,也可以使用受保护的短期 kubeconfig 连接外部集群:

DRAFORGE_E2E=1 go test -tags=e2e ./tests/e2e/... -v

发布

完整发布流程请参阅 docs/release.md。

本地快照构建(不发布)
task release:local
# or: goreleaser release --snapshot --clean --skip=docker,sbom,sign
带标签的发布
NEXT_VERSION="${NEXT_VERSION:?set NEXT_VERSION to the intended SemVer, for example 0.3.1}"
release_tag="v${NEXT_VERSION}"
git tag -a "$release_tag" -m "DRAForge $release_tag"
RELEASE_TAG="$release_tag" RELEASE_MAIN_REF=main bash scripts/verify-release-tag.sh
git push origin "$release_tag"

推送带注释的标签会启动受保护的发布工作流。已发布的 v* 标签不可变,永远不会移动或重复使用。


CLI 命令参考

命令描述示例
draforge version显示二进制版本和提交详细信息draforge version
draforge discover列出活跃的 DRA 池、设备和资源声明draforge discover -o json
draforge claims在格式化表格中汇总声明状态draforge claims
draforge graph以 DOT 或 Mermaid 格式生成关系图draforge graph -o mermaid
draforge explain排查 ResourceClaim 处于待处理状态的原因draforge explain my-pending-claim
draforge doctor执行集群和驱动程序诊断检查draforge doctor
draforge tui启动基于终端的监控控制台draforge tui
draforge serve运行 HTTP API 服务和 Vite 仪表板前端draforge serve

文档

资源说明
贡献指南环境设置、测试、PR 要求,以及禁止提交的内容
安全策略漏洞报告和安全模型
安装指南演示和生产安装配置
运维指南日常运维、升级、指标、日志和清理
故障排查指南常见问题和待处理声明的诊断方法
维护者检查清单内部审查和发布流程
发布流程快照和带标签的发布工作流
仪表板指南Web 仪表板的设置和使用
模拟器场景场景编写和故障注入
Kubernetes DRA 兼容性DRA API 支持矩阵
维护者当前项目维护者
治理决策机制和职责
支持获取帮助的方式

安全模型

DRAForge 提供只读仪表板 API,但 Helm 默认不会将其对外公开。读取端点可能会泄露集群运行元数据,因此生产环境中的公开访问必须使用 TLS 和由运维人员管理的身份感知代理。集群修改仍仅限通过 CLI 进行,并使用管理员本地的 kubeconfig 进行身份验证(参见 ADR-0009)。

有关 Kubernetes DRA API 支持情况和已知限制,请参阅 Kubernetes DRA 兼容性。


许可证

本项目采用 Apache License 2.0 许可。完整许可证文本请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。