Hello and welcome to this lecture. In this lecture we talk about the different choices available
for the infrastructure hosting a Kubernetes cluster. In the previous lecture we discussed about the various
options we have in deploying a kubernetes cluster.
Let's look at it in a bit more detail here.
Kubernetes can be deployed on various systems in different ways. Starting with your laptops, to physical
or virtual servers within an organization as well as those in the cloud.
Depending on your requirements your cloud ecosystem and the kind of applications you wish to deploy
you may choose one of these solutions. On a laptop or a local machine,
There are a number of ways to get started.
First of all on a supported Linux machine you can get started with installing the binaries manually
and setting up a local cluster.
However that is too tedious especially if you are just getting started.
So relying on a solution that automates all that will help in setting up a cluster in a matter of minutes.
We will look at some of those solutions in a bit. On Windows
on the other hand, you cannot setup kubernetes natively as there are no windows binaries.
You must rely on a virtualization software like Hyper-V or Vmware workstation or VirtualBox to create
Linux VMs on which you can run kubernetes.
There are also solutions available to run kubernetes components as docker containers on windows VMs.
But remember, even then the docker images are Linux based and under the hoods they run on a small Linux OS
created by Hyper-V for running Linux docker containers.
So what are some of the solutions available to easily get started with kubernetes on a local machine?
Minikube, deploys a single node cluster easily. It relies on one of the virtualization software like Oracle
Virtualbox to create virtual machines that run the kubernetes cluster components.
We have seen this in the beginners course. The kubeadm tool can be used to deploy a single node or a
multi node cluster
real quick before this you must provision the required hosts with supported configuration yourself.
So the different between the first two and kubeadm is that the first two provisions a VM with supported
configuration by itself, whereas kubeadm expects the VMs provisioned already. At the same time it allows
for deploying multi-node clusters, whereas the former doesn’t. Again deploying a kubernetes cluster
locally on a laptop is usually for learning, testing and development purposes. For production purposes,
there are many ways to get started with a kubernetes cluster. Both in a private or a public cloud environment.
I would categorize them as Turnkey solutions or Hosted or managed solutions. Turnkey solutions are where
you provision the required VMs and use some kind of tools or scripts to configure kubernetes cluster
on them.
At the end of the day you are responsible for maintaining those VMs, and patching them and creating,upgrading
them etc. But cluster management and maintenance are mostly made easy using these tools and scripts.
For example deploying a kubernetes cluster on AWS using the KOPS tool. Hosted solutions are more like Kubernetes
as a service solution, where the cluster along with the required VMs are deployed by the provider and
kubernetes is configured by them by the provider.
The VMs are maintained by the provider.
For example, Google Container Engine lets you deploy a kubernetes cluster in a matter of minutes, without
you having to perform any configuration by yourself. Let us look at some of the Turnkey solutions.
OpenShift is a popular on-prem kubernetes platform
by RedHat. For those of you who may not be familiar, OpenShift is an open source container application
platform and is built on top of kubernetes.
It provides a set of additional tools and a nice GUI to create and manage kubernetes constructs and
easily integrate with CI/CD pipelines etc.
We have an OpenShift for beginners course in our catalog.
Check it out if you are interested!
Cloud Foundry Container Runtime is an open-source project from Cloud Foundry that helps in deploying
and managing highly available kubernetes clusters using their open-source tool called BOSH.
f you wish to leverage your existing Vmware environment for kubernetes, then the Vmware Cloud
PKS solution is one that should be evaluated.
Vagrant provides a set of useful scripts to deploy a Kubernetes cluster on different cloud service
providers.
All of these solutions makes it easy to deploy and manage a cobra that is cluster privately within your
organization.
You must have a few Virtual Machines with supported configurations in place.
These are few of the many kubernetes certified solutions.
Well there are many more, so check them out in the kubernetes documentation page. Let us look at some
of the hosted solutions. Google Container Engine is a very popular kubernetes as a service offering
on Google Cloud Platform. Openshift online is an offering from RedHat where you can gain access to a fully
functional kubernetes cluster online.
Azure has Azure Kubernetes Service. And finally Amazon Elastic Container Service for Kubernetes
is Amazon’s hosted kubernetes offering. Again, these are just some of the solutions
there are many more. So what is our choice?
In our case since this is for learning purposes and considering the fact that some of you may not have
access to a public cloud account and since most of you mentioned in the poll we sent out that you prefer
a local setup with Virtualbox,
we chose to deploy a local kubernetes cluster from scratch on our local system by creating several
virtual machines on VirtualBox.
So our design now has 3 nodes, 1 master, 2 worker, to be deployed on a laptop with Virtual Machines
provisioned on VirtualBox.
Well that's it for this lecture.
Check out the reference page to read more about many more such solutions.