Installation
On this page
Prerequisites
Before using Kubernetes Launch Kit, ensure the following:
Kubernetes cluster and credentials with permission to run the privileged discovery daemon and manage the intended networking resources. Discovery does not require a pre-installed Network Operator or NFD. On Kubernetes,
l8k deploycan install the selected Network Operator Helm chart. For externally managed installations, setnetworkOperator.skipHelmChart: truebefore generation.On OpenShift, install the certified operators and their prerequisites separately; Launch Kit does not own their Helm lifecycle. See Getting Started with Red Hat OpenShift.
kubectlconfigured with access to the target cluster.Docker or Podman on the machine where you will run
l8k(only for the container scenario).
Install
Choose one of the methods below. The script and Homebrew methods install a binary with embedded default configuration and presets, plus matching profile templates; the container method runs l8k from a published image and writes nothing outside your working directory.
Script
Downloads the latest release from GitHub and installs the l8k binary to /usr/local/bin:
curl -fsSL https://raw.githubusercontent.com/nvidia/k8s-launch-kit/main/scripts/install.sh | sh
Pin a specific version or install to a custom directory:
curl -fsSL https://raw.githubusercontent.com/nvidia/k8s-launch-kit/main/scripts/install.sh -o install-l8k.sh
L8K_VERSION=v26.10.0-rc.7 sh install-l8k.sh
curl -fsSL https://raw.githubusercontent.com/nvidia/k8s-launch-kit/main/scripts/install.sh | sh -s -- -d ~/local
Homebrew
For macOS and Linux systems with Homebrew:
brew tap nvidia/l8k https://github.com/nvidia/k8s-launch-kit
brew install l8k
Build from Source
Build from the release tag so the binary and profile templates agree:
git clone --branch v26.10.0-rc.7 https://github.com/NVIDIA/k8s-launch-kit.git
cd k8s-launch-kit
make build
Run ./build/l8k from that repository root, or use make install to install the binary and matching assets.
Container
Run l8k directly from the published container image without copying any binary or assets to the host filesystem. The image stays in the local Docker cache; everything else (kubeconfig, output directory) is mounted at runtime.
Pull the image once:
docker pull nvcr.io/nvstaging/mellanox/k8s-launch-kit:v26.10.0-rc.7
Define a helper that preserves the image’s /src working directory, where its profile templates are stored. Mount the host working directory at /work and pass explicit paths for persistent inputs and outputs:
l8k_container() {
docker run --rm --network host \
-e KUBECONFIG=/kube/config \
-v "$HOME/.kube:/kube:ro" \
-v "$PWD:/work" \
nvcr.io/nvstaging/mellanox/k8s-launch-kit:v26.10.0-rc.7 "$@"
}
l8k_container discover --save-cluster-config /work/cluster-config.yaml
l8k_container generate --user-config /work/cluster-config.yaml \
--fabric ethernet --deployment-type sriov --multirail \
--save-deployment-files /work/deployment
l8k_container deploy --deployment-files /work/deployment
l8k_container validate --deployment-files /work/deployment --wait 10m
Files explicitly written under /work remain on the host after the container exits. Use container-visible paths such as /work/topology.json and /work/profile.yaml for Spectrum-X inputs too. Do not change the working directory to /work: profile discovery expects the image’s bundled templates under /src/profiles.
Note
The API server and credentials referenced by kubeconfig must be reachable inside the container. External credential files and exec plugins need corresponding mounts and tools. The --rm flag removes stopped containers; the kubeconfig directory is mounted read-only.
Verify
For script or Homebrew installations:
l8k version
For the container helper, use l8k_container version.
Uninstall
Use the method that matches how you installed.
Script
curl -fsSL https://raw.githubusercontent.com/nvidia/k8s-launch-kit/main/scripts/install.sh | sh -s -- --uninstall
Homebrew
brew uninstall l8k
brew untap nvidia/l8k
Container
Remove the shell function and the cached image:
unset -f l8k_container
docker image rm nvcr.io/nvstaging/mellanox/k8s-launch-kit:v26.10.0-rc.7
Also remove the function from your shell rc file if you added it.
Layout (Script and Homebrew)
The installer writes bin/l8k, share/l8k/profiles/, and the sosreport helper under share/l8k/scripts/. The binary embeds its default configuration and preset catalog. Optional filesystem overrides are selected with --config-dir:
/etc/l8k/
├── l8k-config.yaml
└── presets/
└── <preset-name>/topology.yaml
--user-config takes precedence over --config-dir/l8k-config.yaml. An override presets/ directory replaces the embedded catalog. Existing legacy share-directory overrides are preserved by the installer; select them explicitly with --config-dir.
The image includes profile templates, presets, and default configuration. Persist generated inputs, manifests, and reports under the mounted /work directory.
See Also
Quick Start — end-to-end walkthrough using
l8kCLI Reference — full flag reference