Installing Kubernetes - Chapter 5
"In this chapter we will explore Kubernetes cluster deployment considerations. First, we will learn about Kubernetes cluster configuration options, followed by infrastructure requirements and installation tools specific to various cluster deployment models."
- Discuss Kubernetes configuration options.
- Discuss infrastructure considerations before installing Kubernetes.
- Discuss infrastructure choices for a Kubernetes cluster deployment.
- Review Kubernetes installation tools and resources.
We are introduced to various different cluster configuration options, major types are the following
- All-in-One Single-Node Installation
- Single-Master and Multi-Worker Installation
- Single-Master with Single-Node etcd, and Multi-Worker Installation
- Multi-Master and Multi-Worker Installation
- Multi-Master with Multi-Node etcd, and Multi-Worker Installation
We can see that each important part of Kubernetes is scalable, with each a respective stacked vs external cluster of etcd. The All-in-One Single-Node installation should only be used for testing and developing, after that it will be up to your requirements, but I would assume we can go either way, let's see!
Infrastructure considerations
For infrastructure, we need to decide if we should set up Kubernetes on bare metal, public- , private-, or hybrid cloud. We should decide for an underlying OS, Linux distributions or Windows? We should also discuss which networking solution to choose. Kubernetes provides a good documentation page on what to choose.
Installing Kubernetes again gives us many options to choose from. A variety of installation tools allowing us to deploy single- or multi-node Kubernetes clusters on our workstations. The training gives us a few popular ones:
Minikube - single-node local Kubernetes cluster, recommended for a learning environment deployed on a single host.
Kind - multi-node Kubernetes cluster deployed in Docker containers acting as Kubernetes nodes, recommended for a learning environment.
Docker Desktop - including a local Kubernetes cluster for Docker users.
MicroK8s - local and cloud Kubernetes cluster, from Canonical.
K3S - lightweight Kubernetes cluster for local, cloud, edge, IoT deployments, from Rancher.
Most introductory trainings and examples work with Minikube and so will we. There are millions of possibilities where you install Kubernetes and we get full two pages in the training, you can decide out of a big variety. Or just run with On-Premise.
Installation Tools and Resources
The list continues and we are introduced to installation tools.
- kubeadm is a secure and recommended method to bootstrap a multi-node production ready Highly Available Kubernetes cluster. It has a set of building blocks to setup the cluster and is easily extendable. Further reading with the notice of kubeadm not able to provision hosts.
- kubespray allows us to install Highly Available production ready Kubernetes clusters on AWS, GCE, Azure, OpenStack, vSphere or bare metal.
Other options also include installation tools on the various platforms. This seems like a lot of options to choose from when installing Kubernetes. But also shows that it kind of is "fool-proof" and explains the rapid growth of Kubernetes usage overall. The most interesting link in this chapter yet is possibly Kubernetes The Hard Way, as we want to get knowledge about Kubernetes the system itself, instead of all the different tooling and what not.
Kubernetes on Windows
With the release of Kubernetes v1.14, Windows could be used as a production ready operating system only for worker nodes of a Kubernetes cluster, with no plans to extend the support to Windows master nodes. If you are interested on reading about the introduction of windows in Kubernetes. You can read how to schedule the deployment of both Linux and Windows containers in the same cluster, the user will be responsible to configure the workload scheduling according to the expected OS, that is to schedule Linux and Windows containers on nodes with their respective operating systems when nodes of each OS are found in the same Kubernetes cluster.