Skip to main content
Use dive to validate infrastructure readiness at each stage of deploying the Poolside inference stack. Run pre-flight checks before installation to catch configuration issues early, post-flight checks after installation to confirm correct operation, and GPU node checks to validate host-level configuration on every GPU node in the cluster.

How it works

dive check (pre- and post-flight)

Dive pre- and post-flight checks flowchart dive check reads a single values.yaml, which is the same file you pass to the inference Helm chart. It builds the external clients each check needs (Kubernetes API, S3, HTTP) lazily on first use, then runs the selected checks concurrently, up to 8 at a time by default. Results are streamed to stdout as each check finishes; the process exits non-zero if any check returns fail or error.

dive node-checks

Dive node checks flowchart dive node-checks is an orchestrator that runs from any machine with cluster access (your laptop, a CI runner, a bastion). It discovers GPU nodes and for each one deploys a short-lived privileged pod that mounts the host’s /sys and /proc read-only. The pod runs the hidden node-check-local subcommand of the same dive binary, performs all 10 host-level checks, and prints a JSON report to its logs. The orchestrator collects those logs, parses the reports, and aggregates them into a single per-node summary. The pod requires root and privileged mode because reading PCIe Relaxed Ordering capabilities from /sys/bus/pci/devices/*/config (raw PCI config space) requires root even inside a privileged container.

Prerequisites

Locate the dive binary

When using a Poolside bundle, the dive binary is included as a tarball alongside the other bundle binaries in ./binaries.

Distribute the dive image

For dive node-checks, the cluster nodes must be able to pull the dive image. When using a Poolside bundle, the dive image is included as a tarball in ./containers alongside the other bundle images:
Air-gapped clusters: In an air-gapped environment, the cluster nodes reach the dive image through the mechanism your environment already relies on, such as an internal registry or an image cached on each node. Make the image available through that mechanism, then pass its reference to --image. Because the check pods set imagePullPolicy: IfNotPresent, a cached image is used without a registry pull even when the tag is :latest.

Run pre-flight checks

Run these checks before installing the Helm chart to catch configuration and environment issues early.

Pre-flight check reference

Run post-flight checks

Run these checks after the Helm chart is installed to verify that the inference stack is operating correctly.

Post-flight check reference

Run GPU node checks

Run these checks to validate that every GPU node’s host configuration is optimal for GPU workloads. This is independent of any Helm values file and can be run before or after installing the inference stack.

Node check reference

Checks are classified as hard (returns fail) or soft (returns warn):
acs_disabled and numa_gpu_* checks are skipped automatically on nodes with no detected GPUs. gpu_pcie_relaxed_ordering is skipped when no EFA/RDMA devices are present.

Output formats

Both dive check and dive node-checks support --output text (default) and --output json.

Text output

Color-coded, human-readable. Each check prints one line with a status symbol followed by the check name, then indented detail lines:

JSON output

Machine-readable, suitable for CI pipelines. Each result is an object with name and a nested result object. The result object contains status, message, optional detail, and optional fix:
For dive node-checks --output json, the top-level object contains nodes (array of per-node results), summary (aggregate pass/warn/fail/skip/error counts), and errors (nodes that could not be checked).

Exit codes

CLI reference

dive check

At least one of --pre or --post must be specified. Both can be combined in a single invocation.

dive node-checks

dive version

Prints the build version string.

Required RBAC for dive node-checks

The credentials of the user running dive node-checks must allow the following operations: Example ClusterRole: