Hi HN community! I'd love to show you vcluster - a virtual cluster technology for Kubernetes.
vcluster allows you to create k3s-based virtual k8s clusters that run on top of full-blown Kubernetes clusters. vclusters are lightweight and run inside a single namespace of the underlying host cluster.
********
Why vclusters?
1 - Because vclusters save a ton of cost: You can share resources from the underlying host cluster, e.g. use shared ingress controller. Instead of creating x new clusters, create x vclusters that run on one single cluster.
2 - Because vclusters are a better solution for soft multi-tenancy than using namespaces: Allows your tenants to get cluster-wide access (inside the virtual cluster obviously), so they can test RBAC or install and manage their own CRDs etc.
3 - Because vclusters add another layer of isolation in clusters. Unlike namespaces, vclusters have their own control plane (mainly API server and data store), so that all higher level resources only live in the vcluster (Deployment, StatefulSets, CRDs, ...) and they never reach the underlying cluster, which means the underlying cluster can be really "dumb" and easier to manage
4 - Because vclusters turn clusters into cattle: Spin them up in seconds, destroy them by deleting the underlying namespaces where the vcluster runs in and you get a clean state again. vclusters are super lightweight and low-overhead.
********
How to get started?
No server-side install required. You can deploy a vcluster with kubectl apply or helm install but the easiest option is to download the CLI binary and run:
```
vcluster create vcluster-1 -n host-namespace-1
vcluster connect vcluster-1 -n host-namespace-1
export KUBECONFIG=./kubeconfig.yaml
kubectl ... # Have fun using your vcluster
```
********
What do you think?
What do you think about the idea of virtual Kubernetes clusters? Could this be useful for you? What would need to be added to make it work for your use cases?
1 comment
[ 1.6 ms ] story [ 15.2 ms ] threadvcluster allows you to create k3s-based virtual k8s clusters that run on top of full-blown Kubernetes clusters. vclusters are lightweight and run inside a single namespace of the underlying host cluster.
********
Why vclusters?
1 - Because vclusters save a ton of cost: You can share resources from the underlying host cluster, e.g. use shared ingress controller. Instead of creating x new clusters, create x vclusters that run on one single cluster.
2 - Because vclusters are a better solution for soft multi-tenancy than using namespaces: Allows your tenants to get cluster-wide access (inside the virtual cluster obviously), so they can test RBAC or install and manage their own CRDs etc.
3 - Because vclusters add another layer of isolation in clusters. Unlike namespaces, vclusters have their own control plane (mainly API server and data store), so that all higher level resources only live in the vcluster (Deployment, StatefulSets, CRDs, ...) and they never reach the underlying cluster, which means the underlying cluster can be really "dumb" and easier to manage
4 - Because vclusters turn clusters into cattle: Spin them up in seconds, destroy them by deleting the underlying namespaces where the vcluster runs in and you get a clean state again. vclusters are super lightweight and low-overhead.
********
How to get started?
No server-side install required. You can deploy a vcluster with kubectl apply or helm install but the easiest option is to download the CLI binary and run:
```
vcluster create vcluster-1 -n host-namespace-1
vcluster connect vcluster-1 -n host-namespace-1
export KUBECONFIG=./kubeconfig.yaml
kubectl ... # Have fun using your vcluster
```
********
What do you think?
What do you think about the idea of virtual Kubernetes clusters? Could this be useful for you? What would need to be added to make it work for your use cases?
Any feedback is highly appreciated.