Skip to main content

Installation

This page covers cluster creation and vNode installation for each supported environment. Before you begin, verify that your target platform meets the system requirements.

Set your environment variables

Modify the following with your specific values to replace them across the whole page:
# Platform host
PLATFORM_HOST=https://platform-your-domain.com

# Platform access key
PLATFORM_ACCESS_KEY=your-access-key
Platform running in the same cluster

If the vCluster Platform is deployed in the same cluster as vNode, set PLATFORM_HOST to the platform Service's ClusterIP, not its cluster-internal DNS name (for example, https://loft.vcluster-platform).

The vnode-manager enters the node's network namespace to configure containerd. From that namespace it uses the node's DNS resolver, which cannot resolve cluster-internal service names. kube-proxy does route ClusterIP traffic for node-originated connections, so the ClusterIP address works correctly.

Find the ClusterIP of the platform Service:

kubectl get svc loft -n vcluster-platform -o jsonpath='{.spec.clusterIP}'

Then set PLATFORM_HOST=https://<clusterIP>:443.

If a cluster-internal DNS name is used instead, the manager logs dial tcp: lookup ... no such host, containerd is never reconfigured, and tenant pods fail with FailedCreatePodSandbox: no runtime for "vnode" is configured.

If you manage vNode with Argo CD, Flux, or another GitOps tool, store the access key in a Kubernetes secret. See Provide the platform access key via a secret.

Install vNode

Select your platform for cluster setup steps. The Helm install command is the same across all supported environments.

Kubernetes in Docker (kind)

Kubernetes in Docker (kind) lets you run vNode locally by creating Kubernetes clusters inside Docker containers, useful for development and testing.

Create a local kind cluster:

kind create cluster

Deploy vNode:

helm upgrade --install vnode-runtime vnode-runtime -n vnode-runtime \
--repo https://charts.loft.sh --create-namespace \
--set "config.platform.host=https://platform-your-domain.com" \
--set "config.platform.accessKey=your-access-key"

# Add the following only if your platform uses a self-signed certificate:
# --set "config.platform.insecure=true"

Use with Nvidia GPU Operator

vNode is compatible with the Nvidia GPU Operator. The only requirement is that CDI must be enabled.

Enable CDI during GPU Operator installation:

helm upgrade gpu-operator nvidia/gpu-operator --install \
-n gpu-operator --create-namespace \
--set cdi.enabled=true

Or patch an existing GPU Operator installation:

kubectl patch clusterpolicies.nvidia.com/cluster-policy --type='json' \
-p='[{"op": "replace", "path": "/spec/cdi/enabled", "value":true}]'