We recently passed the one-year mark since vcluster was open sourced. If you’re not familiar with vcluster, it’s a tool for creating and managing virtual Kubernetes Clusters. A virtual cluster runs inside a namespace on a shared host cluster, but appears to the user as if it’s their own dedicated cluster.
There’s been a lot of interest in the project in this last year. Loft Labs CEO Lukas Gentele gave a talk on vcluster at KubeCon North America 2021. Lukas and I appeared on several livestreams talking about virtual clusters, including Rawkode Live, Containers from the Couch, Bret Fisher’s Docker and DevOps Show, and Saiyam Pathak’s stream. The VMware team recently did a TGIK episode about vcluster which was fun to see.
There have been quite a few changes and features added to vcluster too. Here are a few:
- vcluster is a certified k8s distro. This means it passes a set of conformance tests from the CNCF, which should give us all more confidence when using it.
- Supporting additional k8s distros. Initially vcluster was designed to use k3s for the API server that runs inside the virtual clusters, but that list was expanded to include other options like k0s, vanilla Kubernetes (the standard k8s API server), and EKS. vcluster still uses k3s by default, but you can specify one of the others with the
- vcluster plugins and the vcluster SDK. You can now customize the behavior of vcluster’s syncer to enable all kinds of new workflows. We believe the best infrastructure tools are opinionated but also extensible, and that plugins will allow a lot of interesting use cases. I wrote a blog post about the vcluster SDK and you can read more in the docs.
- Isolated Mode. This new feature adds some additional tools for isolating your virtual clusters, including a Pod Security Policy, a resource quote, a limit range, and a network policy. Users enable Isolated Mode when spinning up a cluster with the
--isolatedflag. You can find more details in the docs.
- Pausing and resuming virtual clusters. This allows users to scale down a vcluster by deleting all of the workloads running in it with the vcluster pause subcommand and resuming them later with vcluster resume. For more info see the docs.
Those are just a few of what I consider important changes in the project but there have been a lot more. One thing that many of the changes have in common is that they were inspired by user requests and feedback. We appreciate the community of vcluster users and your ideas. If you have suggestions, you can open a GitHub issue or join us in the #vlcuster channel of our community Slack.
Whether you committed code to vcluster, helped with the docs, gave us feedback, or even talked about the project publicly, those are all important contributions. Thanks to all of you who have used and supported vcluster, and please join me in wishing vcluster a happy (slightly belated) birthday! 🎉🥳