2 Creating a Multi-OS Kubernetes Cluster

 

This chapter covers

  • Bootstrapping a Kubernetes Control Plane on Linux with kubeadm
  • Installing a containerd based Windows node which joins to our Linux control plane node, also using Kubeadm
  • Verifying that your Windows node is properly joined to your Kubernetes Control Plane

By now, we expect that you have a basic understanding of Kubernetes’ high level architecture, including:

  • The role etcd plays in a Cluster
  • What the APIServer is used for
  • What the Scheduler, Controller Manager do
  • What is meant by the term “Kubernetes Control Plane”

If you are still extremely new to containers and Kubernetes, it might be worth re-reading our first chapter or perusing some of Kubernetes’ official documentation online at https://k8s.io. That said, this chapter will teach you the basics of how to bootstrap Kubernetes on Linux, and how to add a Windows node to your cluster, and shouldn’t require any prior technical experience with Kubernetes administration. In any case, we’re going to be moving forward at a pretty steady clip from here on out - so hang on tight !

So, where do we start? Well, let’s Imagine that you wanted to run a few .NET 3 Windows containers. In general, you can’t run these in a Linux environment, so you need a Kubernetes cluster with a Windows node (i.e. a Windows kubelet). We’ll install one in this chapter, alongside a Linux Control Plane (the Control Plane serves as our Kubernetes “master”)

2.1 Bootstrapping a Kubernetes Control Plane on Linux

2.1.1 Installing a Linux VM manually

2.1.2  Installing Kubeadm and Containerd

2.1.3  Testing containerd without a Kubelet

2.1.4  Running Kubeadm to Create our Kubernetes cluster

2.2 Adding a second Windows node to our cluster

2.2.1  How Windows Kubernetes nodes are different from Linux

2.2.2  (Optional) Enable Nested Virtualization

2.2.3  Install Windows Server

2.2.4  Kubeadm joining your Windows node to the Linux cluster

2.3 Summary