• Stars
    star
    318
  • Rank 126,948 (Top 3 %)
  • Language
    Go
  • License
    Other
  • Created about 1 year ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

k0smotron

k0smotron

An open source control plane manager for unified cluster management.

k0smotron allows you to unify your Kubernetes cluster management for an efficient use of resources. It’s designed for k0s.

Features

Control Plane-as-a-Service

k0smotron streamlines k0s control plane creation and management within your management cluster, reducing traditional operational overhead (e.g installation, configuration, upgrades or backups). k0smotron encapsulates the control plane service as a pods (and other Kubernetes constructs) and provides an intuitive approach to cluster lifecycle management through ClusterAPI integration.

Enhanced High Availability

k0smotron allows you to leverage the power of SQL databases as a data store for your control planes through Kine. This flexibility means you can choose from a variety of data storage operators like Postgres, MySQL, or your cloud provider's managed databases. This offers a robust, high-availability solution, eliminating the dependency on Etcd and allows to leverage Kubernetes self-healing capabilities.

Bring Your Own Worker Nodes

k0smotron prioritizes flexibility in the integration of worker nodes and allows easy connection or creation of nodes from any infrastructure. This ensures node isolation and flexible scaling, minimizing interference with the control plane. k0smotron operates with or without the ClusterAPI, offering you the freedom to select your preferred operational mode.

How does it work

The k0smotron controller manager is a service that will be installed into an existing Kubernetes cluster.

Control Plane

k0smotron will create and manage k0s control planes in the management cluster like a workload. It leverages the natural pattern of working with custom resources to manage the lifecycle of the k0s control planes. k0smotron automatically creates all the needed Kubernetes lower level resources, such as pods, configmaps, etc. By running the control plane on a Kubernetes cluster we can enjoy and leverage the high availability and self-healing capabilities of Kubernetes.

Worker Plane

With k0s it's easy to install a Kubernetes Worker Node. The worker nodes will connect to the Control Plane with a Join Token, created by k0smotron. When it comes to clusters with dozens or hundreds of worker nodes you do not want to install k0s manually. For these cases you can leverage k0smotron as ClusterAPI Bootstrap Provider.

ClusterAPI

k0smotron can be used with ClusterAPI as Bootstrap Provider. This allows to use k0s Control Planes, created by k0smotron, as Control Plane and k0s worker nodes or MachineDeployment in various clouds.

Note: Currently, we only support creating the Control Plane in the Management Cluster. In the next versions of k0smotron we will add full cluster bootstrapping in public and private clouds with with ClusterAPI.

Use cases

Development and CI/CD

In the process of continuous integration and end-to-end testing, a temporary Kubernetes Cluster is needed. With k0smotron, these clusters can be created on demand in a declarative way and thus integrated into the existing CI process with ease. This avoids cluster sprawl and long-living snowflake clusters.

Edge Container Management

Kubernetes at the edge typically comes with the requirement of a low resource footprint. As a result, clusters with distributed roles are more challenging and a lot of single-node clusters are created. Managing the large number of clusters confronts us with almost impossible tasks.

Offloading the control plane means that the persistence layer of the cluster can run on dedicated hardware and workloads can be managed at the edge on devices dedicated to their purposes. With k0smotron worker nodes get ephemeral.

Multi-cloud Cluster LCM

A multi-cloud strategy is essential these days. But managed Kubernetes offerings are often different in versioning or even the built-in tooling.

With k0smotron, you can run the control plane management cluster in a public or private cloud provider of your choice and the worker nodes in various clouds. With this you get a homogenized and unified cluster management, providing one flavor on all clouds and saving the costs for the highly available Control Plane in the cloud.

Getting Started

Getting started with k0smotron is easy. Simply install the controller into an existing cluster:

kubectl apply -f https://docs.k0smotron.io/stable/install.yaml

Creating a cluster

To create a cluster, you need to create a Cluster resource. The spec field is used for optional settings, so you can just pass null as the value. For more information about the settings you can check the following documention.

kubectl apply -f - <<EOF
apiVersion: k0smotron.io/v1beta1
kind: Cluster
metadata:
name: my-k0smotron
spec: {}
EOF

Contributing

Please refer to our contributor's guide.