Run NVKE end to end on one machine
This page describes how to run the NVIDIA Kubernetes Engine (NVKE) operator flow on one machine: nvkectl bootstraps a one-node management cluster on a container that stands in for a management node, you install the management plane on that cluster, and you create a workload cluster on simulated NVIDIA Infra Controller (NICo) machines. One setup command stands in for the data center, the build and the lab’s simulator; you then type the commands an operator types. Do it to evaluate NVKE or to rehearse an installation.
The setup has three parts on your machine:
- A container with a software TPM and the node agent, which
nvkectl bootstrap siteturns into the management cluster. - A workspace,
~/nvke-local-site, with what an operator is handed: the node’shosts.csvand SPIRE certificate authority (CA), the stack config naming the controller and profile images built from this checkout, the release set, a tenant request, andenv.shwith the flow’s environment and credentials. - mock-NICo (the
nico-simprocess), which answers the NICo API and starts each workload cluster node as a Docker container.
The example credentials, the simulated NICo and the single-node site are for local evaluation only. Do not reuse this setup for a real installation. Plan your installation starts the real one; each step below links the page an operator follows there.
Before you begin
- A Linux host, as root, with at least 10 CPUs, 24 GiB of free memory and 100 GiB of free disk; or macOS, set up in On macOS.
- The Linux kernel module
tpm_vtpm_proxy, which the container node’s TPM uses.make -C controller host-uploads it. - A standalone containerd with
nerdctlandbuildkitdfor the node, whichcli/hack/bootstrap-e2e-host.sh install-runtimeinstalls with the version, checksums and socket paths exported as the twoexportlines in On macOS show, and Docker for the workload cluster nodes. - These tools on
PATH:git, GNU Make 4, Go 1.27.3 or later,gcc,kindv0.32.0,kubectl, Helmv4.2.4,clusterctlv1.13.6,oras,curl,jq,python3,opensslandiptables. - A GitHub token in
GITHUB_TOKEN:clusterctl initreads the Cluster API releases through the GitHub API, which allows anonymous callers 60 requests an hour, and this page runs it twice. - Less than 70 percent of the disk in use. The node, the management plane and the workload cluster nodes share it, and the kubelet evicts pods above that.
- Outbound internet access to GitHub, the Go module proxy and public container registries and chart repositories.
On macOS
Run everything inside a Colima virtual machine with the Docker runtime. make -C controller host-up creates it, loads tpm_vtpm_proxy in its kernel and sizes it from three variables; it refuses to resize a machine that exists, so set the sizes before the first run.
Then open a root shell in the machine, clone the repository inside it, and install the node’s container runtime beside Colima’s Docker. The installer reads the pinned version and checksums, and the runtime’s socket paths, from the environment; the first line below takes the pins from the checkout:
Install the other tools in the machine with its package manager and from each tool’s release page. The rest of this page runs in that shell; make local-site-setup finds the runtime’s sockets itself, and env.sh exports them for the flow.
Set up the machine
-
Clone the repository and change into it, unless you did so in the machine.
-
Prepare the local site.
The command builds the bootstrap images, starts the container node and records its
hosts.csvand CA, connects the networks the bootstrap’s seed cluster and the node use, builds the controller and profile images from the checkout and stages them into the node, writes the workspace, and starts mock-NICo. The first run takes about ten minutes, most of it the node image; a rerun skips what is there. It ends with the first two commands of the flow and a list of what the workspace holds. -
Load the workspace into your shell. Every command below runs from the workspace with its environment.
Bootstrap the management cluster
-
Generate the site spec for the one node.
One node and no virtual IP address: the node’s own address is the API endpoint. The pod network moves off
192.168.0.0/16, which the lab’s DNS sits in;512Miis the system reservation for a container node. Real hardware: Bootstrap the management cluster. -
Bootstrap the cluster.
The command takes about seven minutes and writes
local-site.kubeconfigandlocal-site-etcd-encryption-key.jsoninto the workspace.
Install the management plane
-
Install Cluster API at the version NVKE pins.
-
Install the stack.
NVKE_REPOis the checkout, exported byenv.sh. The command installs the lab StorageClass, runs the install a site runs,deploy/nvke-deploy.sh installondeploy/nicowith the site spec and the stack config from the workspace, and patches the Cluster API controllers with the SPIRE exec-auth plugin. It takes about ten minutes. -
Admit the lab’s networks to the NVKE API and point
nvkectlat it.172.26.0.10is the node’s address, the onehosts.csvlists. -
Publish the release set the workload cluster nodes boot from.
The set is for your machine’s architecture and boots mock-NICo’s container nodes. Real hardware: Register node images for provisioning.
Create a workload cluster
-
Create the cluster.
The request asks for one control-plane node and one worker on mock-NICo’s seeded site. Real hardware: Create a workload cluster, with your NICo identifiers.
-
Wait for it.
The status moves from
ProvisioningtoProvisioned, in about eight minutes.docker psshows the two node containers as they come up.
Access the workload cluster
Two nodes are listed, one with the control-plane role, both Ready. Access a workload cluster describes the kubeconfig and how a customer uses it.
Clean up
The command deletes the workload clusters through the NVKE API, stops mock-NICo and removes its node containers, undoes the network connections the setup made, removes the node, and deletes the workspace. The container images that the setup built stay in containerd and Docker. On macOS, colima stop keeps the machine for the next run and colima delete removes it.
Next steps
- Create a workload cluster with your own request.
- Observe NVKE and its clusters.
- Plan your installation for real hardware.