Overview of Kubernetes with Architecture Explained!!
What is Kubernetes?
Kubernetes is a platform for managing a multi- container based deployment for distributed workloads for APP and services,
Why Do we need Kubernetes?
Main rational is to to achieve scalability and load balancing and fault tolerance by ensuring availability of all distributed nodes of application.
It is more portable and extensible such that it would also speeds up the delivery process and provides better resource management.
This concept would also be easily adoptable for cloud based deployments.
Benefits of Kubernetes?
- Easily extensible and portable
- Open source and better support in its eco system
- Easily Adoptable for Cloud based deployments.
- Self monitoring and container balancing
- Support Nodes for both Windows and Linux
How Kubernetes works aka Kubernetes architecture with image
Kubernetes overall architecture is a cluster of worker Nodes (aka Kube Minions) that are managed and controlled by groups of Masters called Kubemasters.
Nodes run containerized applications or Services. Every cluster can have minimum one worker node to many nodes.
The worker nodes host the logical components called Pods and each Pod would contain group of one or more containers. The Controller on Kube-master manages the worker nodes and the Pods in the cluster. In production environments, the control plane usually runs across multiple computers and a cluster usually runs multiple nodes, providing fault-tolerance and high availability.
In case of any Worker Node is down, the controller automatically load balances by starting that pod in other Node.
Master doesn’t start and initialize the node on its own. At Node side Kubelet would hold responsibility of starting pods and then sends registration requests to Kube Masters.
What is POD?
A pod is logical unit that encapsulates one or more Containers (Can be Docker or Rkt)
Pods are atomic by nature. They shared resources like Storage, Network etc. across container.
Once Pod is created, it would not be reused for another creating instance. We may recreate similar pod based on need.
On the same note PODs are actually gets instantiated as atomic instance. Once Pod gets initialized it would be kept in pending state until container gets started. Then it would go into Running state and finally after Container’s job is done it would go to Terminate state with either Success or Failure.
if a pod (or the node it executes on) fails, Kubernetes can automatically create a new replica of that pod to continue operations.