One of the main points of containers is you can quickly spin them up, use the applications within them and then shut them down again when you’re done. No fuss, no muss. But, to manage from dozens to thousands of containers you need a container orchestrator such as Kubernetes to place and manage them in clusters. And, those, those my friend aren’t as easy to set up. The startup company Loft Labs has a better idea: virtual Kubernetes clusters (vclusters).
The idea is, instead of creating heavyweight, resource-hungry, isolated clusters over and over again forever without end, to create lightweight, fast vclusters. Each vcluster runs inside a namespace of its underlying Kubernetes cluster.
SEE: Kubernetes security guide (free PDF) (TechRepublic)
In addition, as opposed to “real” clusters, virtual clusters don’t have their own node pools; instead, they schedule workloads inside the underlying cluster while having their own control plane. By default, vclusters run as a single pod of two containers:
Control Plane: This container contains an API server, controller manager and a connection (or mount) of the data store. By default, vclusters use SQLite as a data store and run the API server and controller manager of lightweight K3s. K3c is a certified Kubernetes distribution and Cloud Native Computing Foundation (CNCF) sandbox project.
Syncer: What makes a vcluster virtual is it doesn’t have a scheduler; instead, it uses a syncer. This copies the pods that need to be scheduled from the vcluster to the underlying host cluster. Then, the host vcluster will schedule the pod, and the vcluster will keep the vcluster pod and host cluster pod in sync.
This consolidates workloads, enables resource sharing and ultimately saves a lot of infrastructure dollars.
Besides being cheaper and faster than creating separate full-blown clusters, vclusters offer better multi-tenancy and isolation than regular namespaces. This in turn means you can deploy vclusters without being afraid of fooling around with your regular clusters.
Vcluster’s source code is available under the Apache 2 open-source license. The program is still in its early stages, but it’s stable enough that some teams are already using it in production. Loft reports it’s already being used by enterprise programmer teams to create internal Kubernetes platforms for developing cloud-native software, executing continuous integration/continuous delivery (CI/CD) pipelines and running artificial intelligence (AI) and machine learning (ML) experiments.
Now, you may not want to use this approach with your production workloads quite yet, but for developers, it’s another story. Programmers don’t just want to, they frequently must run multiple clusters in the course of their jobs. This makes life much easier for them and cheaper for the bean counters.
SEE: From start to finish: How to deploy an application with Kubernetes (TechRepublic Premium)
“There is a large demand for Kubernetes virtualization. Apple noted that in its keynote at KubeCon Europe last year,” said Lukas Gentele, Loft’s CEO. “Launching our vcluster technology under the permissive Apache 2.0 license will enable anyone to explore virtual clusters and even contribute to it. Currently, we have over 90 companies, including three Fortune 500 enterprises, that have started utilizing our vcluster technology.”
“Vcluster is the first actually working virtualization technology for Kubernetes,” added Fabian Kramm, Loft’s CTO. “There are other similar solutions being developed, however, vcluster is the only one that is already being used in production. We have decided to open source it because the demand for a standalone vcluster technology is huge and there needs to be an open and freely available solution.”
So should you check it out? Abby Kearns, Puppet CTO and former Cloud Foundry CEO, thinks so. “Virtual clusters for Kubernetes is a game-changer that is the equivalent of virtual machine technology in the 1990s that swept in the era of cloud computing. The team at Loft Labs has created a well-architected technology and I see the potential of vclusters to improve developer experience with Kubernetes.”