2 min read

Today, Platform9 open sourced Klusterkit under the Apache 2.0 license. It is a set of three open source tools that can be used separately or in tandem to simplify the creation and management of highly-available, multi-master, production-grade Kubernetes clusters on-premise, air-gapped environments.

Tools included in Klusterkit

‘etcdadm’

Inspired by the ‘kubeadm’ command, ‘etcdadm’ is a command-line interface (CLI) for operating an etcd cluster. It makes the creation of a new cluster, addition of a new member, or the removal of a member from an existing cluster easier. It is adopted by Kubernetes Cluster Lifecycle SIG,  a group that focuses on deployment and upgrades of clusters.

‘nodeadm’

This is a CLI node administration tool that complements kubeadm by deploying all the dependencies required by kubeadm. You can easily deploy a Kubernetes control plane or nodes on any machine running Linux with the help of this tool.

‘cctl’

This is a cluster lifecycle management tool based on Kubernetes community’s Cluster API spec. It uses the other two tools in Klusterkit to easily deploy and maintain highly-available Kubernetes clusters in on-premises, even air-gapped environments.

Features of Klusterkit

  • It comes with multi-master (K8s HA) support
  • Users can deploy and manage secure etcd clusters
  • It provides rolling upgrade and rollback capability
  • It works in air-gapped environments
  • Users can backup and recover etcd clusters from quorum loss
  • You can control plane protection from low memory/ low CPU conditions.

Klusterkit solution architecture

Klusterkit

Source: Platform 9

Klusterkit stores the metadata of the Kubernetes cluster you build, in a single file named ‘cctl-state.yaml’. You can invoke the cctl CLI to orchestrate the lifecycle of a Kubernetes cluster from any machine which contains this state file.

For performing CRUD operations on clusters, cctl implements and calls into the cluster-api interface as a library. It uses ssh-provider, the machine controller for the cluster-api reference implementation. The ssh-provider then, in turn, calls etcdadm and nodeadm to perform cluster operations.

In an email sent to us, Arun Sriraman, Kubernetes Technical Lead Manager at Platform9, explaining the importance of Klusterkit, said, “Klusterkit presents a powerful, yet easy-to-use Kubernetes toolset that complements community efforts like Cluster API and kubeadm to allow enterprises a path to modernize applications to use Kubernetes, and run them anywhere — even in on-premise, air-gapped environments.”

To know more in detail, check out the documentation on GitHub.

Read Next

Pivotal and Heroku team up to create Cloud Native Buildpacks for Kubernetes

Kubernetes 1.14 releases with support for Windows nodes, Kustomize integration, and much more

Introducing ‘Quarkus’, a Kubernetes native Java framework for GraalVM & OpenJDK HotSpot