Installation¶
Install a published l8k binary, then select a Network Operator release with
--network-operator-release or configuration. The current binary carries its
embedded release catalog; use l8k schema to see the release lines that your
installed binary recognizes. Complete deployment planning
before using cluster credentials.
This website is published from the repository's main branch. For a pinned
binary, read the documentation at its repository release tag when you need the
exact behavior of that version. Record the l8k version output and the
selected Network Operator release with your deployment artifacts.
Prerequisites¶
- Linux or macOS on
amd64orarm64. kubectlis recommended for inspection and troubleshooting.curlfor the install script, Homebrew for the formula, or Docker/Podman for the container method.
A pre-installed Network Operator and NFD are not required for discovery. l8k deploy can install the selected Network Operator Helm chart from the generated values.yaml.
Cluster permissions, privileged admission, image access, and the site's
network inputs depend on the intended workflow; check
prerequisites and ownership
before the first live command.
Install Script¶
Pin a release:
L8K_VERSION=v26.7.0-beta.4 \
sh -c "$(curl -fsSL https://raw.githubusercontent.com/NVIDIA/k8s-launch-kit/main/scripts/install.sh)"
Use a custom destination:
curl -fsSL https://raw.githubusercontent.com/NVIDIA/k8s-launch-kit/main/scripts/install.sh | \
sh -s -- -d "$HOME/.local"
Homebrew¶
Container¶
Set L8K_VERSION to a published release tag and pull the image:
Define a shell function that mounts the kubeconfig and current working directory:
l8k() {
docker run --rm --network host \
-v "$HOME/.kube:/root/.kube:ro" \
-v "$PWD:/work" \
-w /work \
"nvcr.io/nvidia/cloud-native/k8s-launch-kit:${L8K_VERSION}" \
"$@"
}
The generated configuration, manifests, and reports remain in the current directory. Ensure the Kubernetes API server address in the mounted kubeconfig is reachable from the container runtime.
Build From Source¶
The binary is written to build/l8k.
For a local install:
For development, symlink the source-tree assets instead of copying them:
Installed Assets¶
The install places the binary on PATH. The default configuration and bundled topology presets are embedded in the binary. Use --config-dir when you need a filesystem override:
l8k discover --config-dir /etc/l8k --kubeconfig ~/.kube/config
l8k preset list --config-dir /etc/l8k
--user-config <file> has higher precedence than --config-dir/l8k-config.yaml. A presets/ directory in --config-dir replaces the embedded preset catalog instead of merging with it.
Script, Homebrew, and source installs also place the profile templates under <prefix>/share/l8k/profiles/. Existing l8k-config.yaml and presets/ overrides under the share directory are preserved during upgrades and can still be selected implicitly.
Local and installed overrides can outlive a binary upgrade. Run l8k preset
list with the same flags as the intended workflow to inspect the selected
catalog. See configuration lookup
and topology presets for the complete precedence rules.
Profile templates remain filesystem assets: ./profiles takes precedence over
/usr/local/share/l8k/profiles, followed by the binary-relative share directory.
Build-only users should run from the repository root or install the profiles.
Release artifacts also contain the Network Operator sosreport helper. The
installers place it at
<prefix>/share/l8k/scripts/kubectl-netop_sosreport. Source-tree
make install, make dev-install, and direct scripts/install-local.sh
invocations download the helper when it is absent; l8k sosreport itself never
downloads executable code at runtime.
Verify¶
Uninstall¶
Install script:
curl -fsSL https://raw.githubusercontent.com/NVIDIA/k8s-launch-kit/main/scripts/install.sh | \
sh -s -- --uninstall
Use -d <prefix> with --uninstall if a custom install destination was used.
Homebrew:
Container: