Supported distributions
By default, vCluster will use k3s as the virtual Kubernetes cluster. However, it is not tied to a specific distribution and should work with all certified Kubernetes distributions. By default, we recommend using k3s, because it has a small footprint and is widely adopted, but if your use case requires a different k8s distribution, vCluster currently also supports k0s or vanilla k8s. If that is not enough, you can also add your custom Kubernetes distribution as outlined below.
k3s
k3s is a highly available, certified Kubernetes distribution designed for production workloads in unattended, resource-constrained, remote locations or inside IoT appliances.
In order to use k3s as backing cluster, create a vCluster with the following command:
vcluster create my-vcluster
Start using it:
kubectl get ns
...
Behind the scenes the default helm chart will be deployed, which holds a specific configuration to support k3s. Check the github repository for all available chart options.
k0s
k0s is an all-inclusive Kubernetes distribution, which is configured with all of the features needed to build a Kubernetes cluster and packaged as a single binary for ease of use. vCluster supports k0s as backing virtual Kubernetes cluster.
In order to use k0s as backing cluster, create a vCluster with the following command:
vcluster create my-vcluster --distro k0s
Start using it:
kubectl get ns
...
Behind the scenes a different helm chart will be deployed (vcluster-k0s
), that holds specific configuration to support k0s. Check the github repository for all available chart options.
Please note that dual stack networking is not supported with k0s, you will be able to deploy it on a dual stack host cluster, but it will not have all the dual stack features.
Vanilla k8s
When choosing this option, vCluster will deploy a separate etcd cluster.
In order to use vanilla k8s as a backing cluster, create a vCluster with the following command:
vcluster create my-vcluster --distro k8s
Connect to the vCluster and start using it:
kubectl get ns
...
Behind the scenes, a different helm chart will be deployed (vcluster-k8s
), that holds specific configuration to support vanilla k8s. Check the GitHub repository for all available chart options.
eks
Though the EKS distribution is supported in v0.19, it is deprecated. Reminder: The Kubernetes distribution of the virtual cluster doesn't need to match the the distribution of your host cluster. You can use any distribution of vCluster to deploy vCluster on EKS clusters.
When choosing this option, vCluster will deploy a separate etcd cluster.
In order to use eks as backing cluster, create a vCluster with the following command:
vcluster create my-vcluster --distro eks
Connect to the vCluster and start using it:
kubectl get ns
...
Behind the scenes, a different helm chart will be deployed (vcluster-eks
), that holds a specific configuration to support vanilla k8s. Check the GitHub repository for all available chart options.
Other Distributions
vCluster has no dependencies on any specific Kubernetes distribution, so you should be able to run it with most certified Kubernetes distributions. One requirement vCluster has, is that the distribution can be deployed without a scheduler and kubelet, meaning that vCluster just requires the api server, controller manager and data storage of the distribution.
For single binary distributions, such as k3s or k0s, extra bundled components can usually be disabled through flags, for multi binary distributions, such as vanilla k8s, you just need to deploy the virtual control plane with api server, controller manager and usually etcd.
Most multi binary distributions work by just overriding the images of the k8s chart in a values.yaml
, e.g.:
api:
image: custom-domain.com/custom-kube-apiserver:v1.21.5
controller:
image: custom-domain.com/custom-kube-controller-manager:v1.21.5
etcd:
image: custom-domain.com/custom-etcd:v3.4.16
And then deploy vCluster with:
vcluster create my-vcluster -n test --distro k8s -f values.yaml
If you want to create a separate chart for the Kubernetes distribution, a good starting point is to copy one of our distro charts and then modify it to work with your distribution. vCluster only needs the following information from the virtual Kubernetes distribution to function properly:
- The api server central authority certificate (usually found at
/pki/ca.crt
) - The api server central authority key (usually found at
/pki/ca.key
) - An admin kube config to contact the virtual Kubernetes control plane (usually found at
/pki/admin.conf
)
For multi binary distributions, vCluster can even create those with a pre-install hook as found in the k8s chart.
In general, if you need vCluster to support another Kubernetes distribution, we are always happy to help you or accept a pull request in our GitHub repository.