Andrew Mercer
on this page

What it is

A vCluster is a complete Kubernetes control plane (API server, controller manager, and a backing store) running as pods inside one namespace of a host cluster. Users get their own cluster, with their own CRDs, namespaces, and RBAC, while the actual workloads are synced down to and scheduled on the host's nodes.

It suits:

  • Per-team or per-developer clusters without paying for real ones
  • Disposable test clusters in CI
  • Testing CRDs or operators that would conflict with something cluster-wide on the host

Basic lifecycle

Install the CLI from the releases page, then:

vcluster create my-vcluster --namespace team-x   # creates and connects (switches kube context)
kubectl get namespaces                           # now talking to the virtual cluster
vcluster disconnect                              # back to the host context
vcluster list
vcluster connect my-vcluster --namespace team-x
vcluster delete my-vcluster --namespace team-x

From the host cluster's point of view, everything lives in team-x. Running kubectl get pods -n team-x on the host shows the vCluster control plane plus the synced workload pods, with names rewritten to avoid collisions.