Why should a Software Developer know about it?

Alright let me give you the tl:dr right now! Kubernetes is a Container Orchestrator that makes sure that Containers are where they’re supposed to be. Now that is very short and maybe you kind of get it, but let’s go into it and dissect what we are doing when we use Kuberenetes.

What does it solve?

Containers

Well a Container is a ready to run software package, containing everything needed to run an application(code, the Runtime it requires, application and system libraries, and default values for settings). Container Images also are immutable, meaning you can’t change the code of a container that is already running. You will have to create a new image that includes the changes you wanted to make.

Container Runtime is the software that runs containers. There are many out there but the well known ones are Docker, containerd, and CRI-O. These allow for you to not actually use a Virtual Machine, which would need the OS that will take up a lot of memory, but only focus on the actually libraries needed for running the application that is in the Container.

Pods

Nodes

Control Plane

Kubernetes API

Etcd

Scheduler

Kubernetes Objects

Controller Manager

Cloud Controller

That’s a lot

If you need a visual, below I have what the architecture looks like.

Resources:

https://www.youtube.com/watch?v=4ht22ReBjno&ab_channel=Deis%2CInc.