
Virtual Kubernetes Clusters
Clusters that run inside regular namespaces,
cut costs,
and solve Kubernetes multi-tenancy.
Explore Open Source
vCluster uses k3s as its API server to makevirtual clusters super lightweight & cost-efficient
Explore vCluster.Pro
SSO & Audit Logging, Controller & CRDs and Pro Distro
See vCluster in Action

Why Virtual Clusters?
Virtual clusters have their own API server which makes them much more powerful and better isolated than namespaces, but they are also much cheaper than creating separate "real" Kubernetes clusters.
Virtual Kubernetes Clusters
For Secure Multi-Tenancy, Reduced Cost & Simplified Operations


Secure Multi-Tenancy
vCluster unlocks a great developer experience for anyone having to develop against Kubernetes as a deployment target.
Cluster Scaling
If you are hitting the scalability limits of k8s because you are running a large-scale multi- tenant cluster, you can now split up and effectively shared your clusters into vclusters.
Cluster Simulations
You want to test a new ingress controller or enable a Kubernetes alpha flag without impacting your cluster operations? Vcluster will let you simulate such situations virtually.
Get Started
Automatically creates a kube-context on your local machine, so you can now use kubectl with your virtual cluster.
curl -L -o vcluster "https://github.com/loftsh/vcluster/releases/latest/download/vcluster-darwin-amd64" && chmod +x vcluster;sudo mv vcluster /usr/local/bin;
# arm64 (silicon mac)
curl -L -o vcluster "https://github.com/loftsh/vcluster/releases/latest/download/vcluster-darwin-arm64" && chmod +x vcluster;sudo mv vcluster /usr/local/bin;
helm install ./chart
kubectl get pods --all-namespaces
curl -L -o vcluster "https://github.com/loftsh/vcluster/releases/latest/download/vcluster-darwin-amd64" && chmod +x vcluster;sudo mv vcluster /usr/local/bin;
# arm64 (silicon mac)
curl -L -o vcluster "https://github.com/loftsh/vcluster/releases/latest/download/vcluster-darwin-arm64" && chmod +x vcluster;sudo mv vcluster /usr/local/bin;
helm install ./chart
kubectl get pods --all-namespaces
curl -L -o vcluster "https://github.com/loftsh/vcluster/releases/latest/download/vcluster-darwin-amd64" && chmod +x vcluster;sudo mv vcluster /usr/local/bin;
# arm64 (silicon mac)
curl -L -o vcluster "https://github.com/loftsh/vcluster/releases/latest/download/vcluster-darwin-arm64" && chmod +x vcluster;sudo mv vcluster /usr/local/bin;
helm install ./chart
kubectl get pods --all-namespaces
How does it work?
Virtual clusters run inside namespaces of other clusters. They have a separate API server and a separate data store, so every Kubernetes object you create in the vcluster only exists inside the vcluster.
First, let's create a few namespaces inside our new vcluster:
Have a question?
Contact usNow, we can deploy something into one of the namespaces of our vcluster:
Have a question?
Contact usThe controller manager of our vcluster will create the pods for this deployment.
Have a question?
Contact usWe can see pods being scheduled inside the vcluster although the vcluster does not have a scheduler and does not have any real nodes.
Have a question?
Contact usBUT, where do these pods get scheduled to?
If we are checking the underlying host namespace where our vcluster is running ...
... then we can see that the pods are actually running inside the underlying cluster while every other high-level Kubernetes resource such as deployments or CRDs exist only inside the vcluster.
Have a question?
Contact usBUT, where do these pods get scheduled to?
If we are checking the underlying host namespace where our vcluster is running ...
... then we can see that the pods are actually running inside the underlying cluster while every other high-level Kubernetes resource such as deployments or CRDs exist only inside the vcluster.
Have a question?
Contact usStar the project on GitHub, open issues and pull requests. Any contribution is welcome.
Join the conversation about vclusters on Slack and get help from the project maintainers.
Optimized for Performance. Ready for Enterprise Scale.