cluster-readiness-engine

module
v0.1.0-rc.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 27, 2026 License: Apache-2.0

README

Cluster Readiness Engine (CRE)

CI License Go

New GPU clusters often contain faulty nodes, and those faults surface only under real distributed load. CRE is a Kubernetes controller that certifies GPU clusters before production workloads run on them. It runs real training and communication workloads across topology-aware node groups, measures performance, detects hardware failures, and reports every bad node with a reason. Quarantine is left to your platform: CRE never cordons, taints, or otherwise modifies a node.

CRE is for platform and infrastructure teams that bring up, validate, or resell GPU clusters.

Features

  • A certification catalog with NCCL communication tests and multi-node training workloads
  • Platform detection (AWS, GCP, Azure, OCI, nscale, TogetherAI, Mistral, Forge, on-prem) and GPU architecture detection (GB200, GB300, H100, A100, L40S, L40)
  • Goodput measurement parsed from training logs with configurable LogProfile patterns
  • Per-bus bandwidth measurement parsed from NCCL logs
  • Node health monitoring with CEL expressions while workloads run
  • Per-node failure reporting with a reason for every failed node
  • Topology-aware node grouping and adaptive fault isolation
  • Checkpoint restart for training jobs
  • WorkloadRun, a single resource to run a training, NCCL, or custom workload
  • The nvcrectl CLI for setup, render, run, report, and cleanup

How it works

The APIs compose like Deployment, ReplicaSet, and Pod:

flowchart LR
    C[Certification] -->|one per catalog category| W[Workflow]
    W -->|one| J[Job]
    J -->|adapter| T[TrainJob and other workloads]
    J -.-> G[GoodputMeasurement]
    J -.-> B[BandwidthMeasurement]

A Certification creates one Workflow per catalog category. Each Workflow creates a Job from its template. The Job creates the workload through an adapter, for example a Kubeflow Trainer TrainJob. Measurement resources parse pod logs with LogProfile regex patterns and compute goodput and bandwidth. When a node fails, CRE records it in the certification result with a reason. CRE does not modify nodes; quarantine is left to your platform.

Quickstart

For complete prerequisites, installation, a first run, and cleanup, see Your first certification.

0. Check the cluster

CRE requires the NVIDIA GPU Operator and, with the default metrics settings, the Prometheus Operator CRDs that serve monitoring.coreos.com/v1; GB200 and GB300 catalog entries also require the NVIDIA DRA driver for ComputeDomain resources. The diagnostics/dcgm-level4 category additionally requires the standalone DCGM service, which the GPU Operator creates only when spec.dcgm.enabled is true. Because the operator normally uses embedded DCGM for metrics, standalone DCGM is off by default; enable it with:

kubectl patch clusterpolicy cluster-policy --type=merge \
  -p '{"spec":{"dcgm":{"enabled":true}}}'

Run kubectl nvcre setup status at any time to see what is present.

1. Install the CLI

While this repository is internal, GitHub serves release assets only through authenticated API downloads — plain curl against releases/download/... returns a 404 "Not Found" page instead of the script, even with a token. Fetch the installer with the gh CLI (authenticate with gh auth login first):

CRE_VERSION=v0.1.0-rc.9
gh release download "${CRE_VERSION}" --repo NVIDIA/cluster-readiness-engine \
  --pattern installer --output - | bash -s -- -v "${CRE_VERSION}"

Once the repository is public and a stable release exists, this shorter form works and picks up the newest stable release:

curl -sSL https://github.com/NVIDIA/cluster-readiness-engine/releases/latest/download/installer | bash

The installer places nvcrectl on your $PATH and creates a kubectl-nvcre symlink so the CLI is also available as kubectl nvcre.

2. Set up the cluster

kubectl nvcre setup init --image-pull-secret "$(gh auth token)"

This installs Kubeflow Trainer, the CRE CRDs, the controller, and the built-in LogProfiles.

3. Certify

kubectl nvcre certification run \
  --category communication/nccl-all-reduce \
  --wait

4. Report

The report prints when the run completes. To print it again later, pass the name and the namespace from the run output:

kubectl nvcre certification report <name> -n <namespace>
╔════════════════════════════════════════════════════════════════╗
║                      Certification Report                      ║
╚════════════════════════════════════════════════════════════════╝

  Name:      nvcrectl-20260806-162730
  Platform:  aws
  GPU:       gb300
  Nodes:     16

┌────────────────────────────────────────────────────────────────┐
│  communication/nccl-all-reduce                                 │
├────────────────────────────────────────────────────────────────┤
│  Status:    Succeeded                                          │
│  Runtime:   3m 56s                                             │
│  Scale:     full-scale                                         │
│  Nodes/Job: 16                                                 │
│  Jobs:      1                                                  │
│  MNNVL:     Enabled                                            │
│                                                                │
│  Bandwidth:                                                    │
│    Size       AlgBW        BusBW        Samples                │
│    16 GB      473.44 GB/s  932.09 GB/s  9                      │
└────────────────────────────────────────────────────────────────┘

┌────────────────────────────────────────────────────────────────┐
│  Summary                                                       │
├────────────────────────────────────────────────────────────────┤
│  Categories:   1/1 passed                                      │
│  Failed Nodes: none                                            │
│  Result:       PASSED                                          │
└────────────────────────────────────────────────────────────────┘
Install from the registry instead

setup init above is the quickest path. If you would rather manage CRE with Helm, or need to pin the controller image in your own manifests, both are published to the GitHub Container Registry on every release.

While this repository is internal, Helm needs to authenticate to the registry before it can pull the chart:

gh auth token | helm registry login ghcr.io \
  --username "$(gh api user --jq .login)" --password-stdin
CRE_VERSION=v0.1.0-rc.8

# Inspect the chart before installing it
helm show chart oci://ghcr.io/nvidia/cluster-readiness-engine --version "$CRE_VERSION"

helm install cluster-readiness-engine \
  oci://ghcr.io/nvidia/cluster-readiness-engine \
  --version "$CRE_VERSION" \
  --namespace cluster-readiness-engine \
  --create-namespace

By default, each Job, Workflow, Certification, and WorkloadRun controller runs up to 10 reconciles concurrently, while each log-processing measurement controller runs up to 5. Tune these limits for the controller resources and Kubernetes API-server capacity available in your cluster:

helm upgrade cluster-readiness-engine \
  oci://ghcr.io/nvidia/cluster-readiness-engine \
  --version "$CRE_VERSION" \
  --namespace cluster-readiness-engine \
  --set manager.maxConcurrentReconciles=20 \
  --set manager.measurementMaxConcurrentReconciles=10

Both values must be greater than zero.

The controller image is ghcr.io/nvidia/cluster-readiness-engine/manager, tagged with the same release version. Builds from main are also published, tagged main-<commit-sha>; use a release tag rather than one of those.

Pin an explicit version rather than installing whatever is newest. Chart and image versions move together, so the two commands above and your own manifests should all name the same tag.

Run a workload

WorkloadRun is a simplified API for running training, NCCL, or custom workloads. Write a YAML file with an image, a framework, and a node count. CRE detects the platform and GPU architecture. The quickest example is an NCCL bandwidth check:

# nccl-all-reduce.yaml
apiVersion: cre.nvidia.com/v1alpha1
kind: WorkloadRun
metadata:
  name: nccl-all-reduce
spec:
  image: nvcr.io/nvidia/pytorch:26.01-py3
  numNodes: 4
  framework:
    mpi:
      binary: /usr/local/bin/all_reduce_perf_mpi
      mpirunPath: /usr/local/mpi/bin/mpirun
      args: ["-b", "8", "-e", "32G", "-f", "2", "-n", "100"]
  bandwidthMeasurement:
    logProfileRef: nccl-bandwidth
    testType: all_reduce

numNodes is the node count per job group, not the total: CRE partitions all eligible nodes into groups of this size and runs one job per group, so numNodes: 4 on a 16-node cluster produces four 4-node jobs.

kubectl nvcre workloadrun run nccl-all-reduce.yaml --wait

For the full NCCL benchmark suite, see Run NCCL Benchmarks. For training workloads, see the Nemotron 5 and DeepSeek-V3 quickstarts.

Scope and non-goals

CRE certifies clusters with burn-in workloads and reports the nodes that fail. CRE is not:

  • A continuous monitoring system. CRE watches nodes only while its workloads run.
  • A general workload scheduler or a training platform for production pipelines.
  • A benchmark leaderboard. The measurements exist to find faults, not to rank hardware.

Documentation

A hosted documentation site is in progress.

Roadmap

  • First tagged release (v0.1.0) with nvcrectl binaries and the Helm chart
  • Hosted documentation site
  • Signed artifacts, SBOMs, and build provenance in the release pipeline
  • Branch protection and DCO checks for public contributions

Community

Development

make manifests generate    # Regenerate CRDs and DeepCopy
make lint                  # Lint
make test                  # Unit + integration tests
make build                 # Build binary

Read CONTRIBUTING.md before you open a pull request. Open an issue first, and sign your commits with git commit -s.

License

Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. Licensed under the Apache License, Version 2.0. See LICENSE for details. Third-party attributions are in THIRD_PARTY_NOTICES.md.

Directories

Path Synopsis
api
v1alpha1
Package v1alpha1 contains API Schema definitions for the cluster-readiness-engine v1alpha1 API group.
Package v1alpha1 contains API Schema definitions for the cluster-readiness-engine v1alpha1 API group.
cmd
manager command
nvcrectl command
pkg
catalog
Package catalog maps certification categories (domain/variant) to pre-configured WorkflowSpec builders.
Package catalog maps certification categories (domain/variant) to pre-configured WorkflowSpec builders.
goodput
Package goodput provides types and utilities for computing runtime goodput of training jobs by parsing pod logs and tracking interruption events.
Package goodput provides types and utilities for computing runtime goodput of training jobs by parsing pod logs and tracking interruption events.
gpu
kubeconfig
Package kubeconfig provides a thin wrapper over k8s.io/client-go/tools/clientcmd for registering kubeconfig/context/namespace CLI flags, replacing the k8s.io/cli-runtime/pkg/genericclioptions.ConfigFlags dependency.
Package kubeconfig provides a thin wrapper over k8s.io/client-go/tools/clientcmd for registering kubeconfig/context/namespace CLI flags, replacing the k8s.io/cli-runtime/pkg/genericclioptions.ConfigFlags dependency.
nccl
Package nccl provides parsing for NCCL bandwidth test output.
Package nccl provides parsing for NCCL bandwidth test output.
nodemonitor
Package nodemonitor provides interfaces and implementations for detecting hardware failures on Kubernetes nodes.
Package nodemonitor provides interfaces and implementations for detecting hardware failures on Kubernetes nodes.
nodemonitor/cel
Package cel provides a CEL-based node failure detector implementation.
Package cel provides a CEL-based node failure detector implementation.
numstr
Package numstr encodes and decodes the numeric-valued strings used in CRD status fields.
Package numstr encodes and decodes the numeric-valued strings used in CRD status fields.
platform
Package platform provides model-independent, CSP/GPU-architecture-only overrides for WorkloadRun resources.
Package platform provides model-independent, CSP/GPU-architecture-only overrides for WorkloadRun resources.
podlogs
Package podlogs provides generic pod log fetching utilities.
Package podlogs provides generic pod log fetching utilities.
podutil
Package podutil provides pod discovery and status helpers for Kubernetes workloads.
Package podutil provides pod discovery and status helpers for Kubernetes workloads.
render
workflow_render implements the "nvcrectl workflow render" subcommand.
workflow_render implements the "nvcrectl workflow render" subcommand.
testutil
Package testutil provides a minimal envtest wrapper and golden-file test harness for integration tests, replacing the dependency on sigs.k8s.io/usage-metrics-collector/pkg/testutil (which dragged in containerd → runc as transitive dependencies).
Package testutil provides a minimal envtest wrapper and golden-file test harness for integration tests, replacing the dependency on sigs.k8s.io/usage-metrics-collector/pkg/testutil (which dragged in containerd → runc as transitive dependencies).
threshold
Package threshold provides CEL-based evaluation of performance thresholds.
Package threshold provides CEL-based evaluation of performance thresholds.
test
uat/tilt/dra-stub command
Stub DRA controller for KWOK UAT tests.
Stub DRA controller for KWOK UAT tests.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL