So there has been lot of buzz around Kubernetes, but what is it excatly ?
Simply put, Kubernetes is a way to manage your container applications. You can do bunch of stuff with those containerised applications using Kuberneets like scaling them, managing them or deploying them in an automated fashion. So what Kubernetes really does it to break down those group of containers in an application in logical units which can be easily discovered and managed.
Kubernetes was built initially at Google as a project called Borg. It was tempered and battle tested there with some of the sharpest tech minds trying to manage huge traffic loads using this tool.
It is an extension of the idea of containerisation which has off late changed the way how people in software industry build, deploy and maintain their applications. Containers provide the flexibility of VM like experience without the overheads of an actual VM. Apps live in their own self contained worlds.
Now all the services which make up an app are packaged into containers and they are deployed to the virtual or physical machines. So this is where Kubernetes or a container orchestration tool comes into play.
So with Kubernetes you can deploy multi container applications, help scale those containerised apps, push out new versions of apps using continuous delivery without downtime, provide networking storages etc and do it a platform independent way.
Kubernetes has quite a few levels of abstractions and components. The highest level of abstraction is a cluster which is nothing but a group of machines running Kubernetes and all the containers it has. There is a master in the cluster which manages all other machines in kubernetes cluster and the containers it has. Then there are nodes which are VMs or actual physical machines. Every node runs pods which is single instance of application consisting of one or more containers. There is an abstraction called controllers which are responsible for creating, working out and destroying pods on the fly.
Kubernetes brings about quite a new paradigm in building cloud native apps, so you must be asking yourself that 'Is investing in setup of Kubernetes really worth it ' ? There are some very real benefits of building apps in a Kubernetes setup. It can help you do load balancing, healing, machine and resource optimisation, releasing new versions of apps without downtime, secret management and also most importantly it gives you the much needed flexibility to run any app on any cloud. The community of smart people that have gathered around this project is surely a good enough proof that Kubernetes is here to stay.