I am learning Kubernetes and I want to write this post as a journal, through which everyone can learn along with me.
Containerization is the current best practice for building and distributing software. With containers, we now essentially don't need to worry about other software dependencies for our application to work, no need to worry about what worked for person X, will it work for person Y? All these problems are resolved by containers.
Let us say containers are equivalent to people in an orchestra.
Let us assume there are containers named violinist, pianist, flutist, and trumpeter. There are many conditions to be satisfied like, at any point, a minimum of 4 violinists should be there, communication should be ensured between the violinists and other performers like pianists, they need to be monitored and corrected immediately.
To satisfy this, we have an orchestrator. An orchestrator takes a composer's musical sketch and turns it into a score for orchestra, ensemble, or choral group, assigning the instruments and voices according to the composer's intentions.
Kubernetes is an open-source container-orchestration system for automating application deployment, scaling, and management. It was originally designed by Google and is now maintained by the Cloud Native Computing Foundation.
Kubernetes takes care of the role of an orchestrator in an orchestra as seen above
It helps in
- Maintaining minimum number of containers(create new containers if older one is destroyed or broken)
- Autoscaling - adding or removing containers based on demand
- Monitoring of containers
- Networking (communication) between containers