Kubernetes Now Does Self-Hosting with Kubeadm
Kubernetes can now set up its own clusters.
The most recent release of the Kubernetes container orchestration software, earlier this month, came with the ability to bootstrap its own deployments, thanks to the general availability release of kubeadm.
Kubeadm can boot up a Kubernetes cluster through a single command. The cluster’s setup is defined by best-practices defaults and is fully compliant with Certified Kubernetes guidelines.
“You can use it to bootstrap any cluster on any hardware. It can run anywhere. It’s just about bootstrapping Kubernetes, getting the binaries and stitching stuff together,” said developer Lucas Käldström, a Cloud Native Computing Foundation Ambassador who created the software along with CNCF Developer Advocate Luc Perkins. Käldström spoke with The New Stack at the KubeCon + CloudNativeCon conference earlier this month in Seattle.
Kubeadm automates quite a few tricky steps in deploying a Kubernetes cluster, including the issuing and coordination of the security certificates of each node, as well as the straightening out the necessary permissions for a system’s role-based access control (RBAC). In addition to installing Kubernetes on a cluster, kubeadm also can upgrade a Kubernetes cluster, or just perform select actions as part of the installation processes, called Phases.
Kubeadm can be a time-saver for someone who wants to try Kubernetes for the first time, as well as for administrators who want to deploy Kubernetes on a bare-metal system. For those getting their Kubernetes from the cloud, kubeadm provides an easy way to customize Kubernetes running cloud offerings like Amazon EKS and Google Kubernetes Engine, to their own specifications.
Due to its deliberately-limited scope, kubeadm is perhaps more suited as a component into a larger deployment system, one that takes care of other aspects of a Kubernetes deployment, such as networking. It is not meant to be a full-stack Kubernetes installation tool, such as Kops, which includes other software as well, such as the network overlay. Kubeadm could make things simpler for the Kops maintainer, however, as it standardizes the installation process and interface for that part of the stack.
Minikube for a Mac or Windows workstation uses kubeadm as the base. It works well with the Cluster API, a Kubernetes offering a set declarative, Kubernetes-style APIs to create, configure and manage clusters.
To run kubeadm, existing cluster hardware or virtual machines must already be up and running. Kubeadm is agnostic as to the network infrastructure and works well with overlay networks compliant with the Container Networking Interface. A new control plain and Kubernetes instance is created by running the kubeadm init command on one machine. The process also produces join tokens for other nodes to sign on, using the kubeadm_join commend.
Käldström also hoped the work would thwart any possible fragmentation across Kubernetes distributors, who would otherwise work up their own deployment schemes, which could be incompatible with each other.
“We don’t want this situation in 10 years where you have three different camps, and you can’t switch between them,” he said. “We are really trying to making things generic as possible at this layer, and keep it open for everyone.”