Why I love Kubernetes Architecture
Tags: kubernetes, architecture, microservices
Published: 2022-12-08 20:12:44



Kubernetes (k8s) is an open-source system for automating the deployment, scaling, and management of containerized applications. It is designed to provide a platform for deploying and running applications in a consistent and reliable manner across different environments, including on-premises, cloud, and hybrid environments.

Kubernetes is built on top of Docker, an open-source containerization platform, and uses a declarative approach to managing applications. This means that you specify the desired state of your application, and Kubernetes takes care of ensuring that the application is running as desired.

Kubernetes includes a range of features and tools for managing and deploying applications, including support for rolling updates, self-healing, and horizontal scaling. It also includes a rich ecosystem of tools and services that can be used to build and deploy applications, such as Helm for packaging applications, and Istio for managing microservices.

Overall, Kubernetes is a powerful and flexible platform for managing and deploying containerized applications in a consistent and reliable manner across different environments. It is widely used by organizations of all sizes to improve the reliability and scalability of their applications.


## Kubernetes Components 
Kubernetes is made up of several different components that work together to provide a platform for deploying and managing containerized applications. Some of the key components of Kubernetes include:

The Kubernetes Master, which is the central control plane for the cluster. It is responsible for managing and coordinating the activities of the other components in the cluster.

The Kubernetes Node, which is a worker machine that runs the applications and services in the cluster. Each node has a kubelet, which is the agent that communicates with the Kubernetes Master to receive instructions and manage the applications and services on the node.

The Kubernetes API server, which is the main entry point for interacting with the Kubernetes cluster. It exposes the Kubernetes API, which can be used by other components or external tools to communicate with the cluster and manage the applications and services that are running on it.

The Kubernetes scheduler, which is responsible for scheduling the deployment and execution of applications and services on the cluster. It determines which nodes in the cluster should run which applications, based on factors such as the available resources and the requirements of the applications.

The Kubernetes etcd, which is a distributed key-value store that is used to store the configuration data for the cluster. It is used to persist the state of the cluster, including the status of the applications and services that are running on it.

Overall, these components work together to provide a platform for deploying and managing containerized applications in a consistent and reliable manner.

## what makes Kubernetes architecture unique 
There are several aspects of the Kubernetes architecture that make it unique and differentiate it from other container orchestration tools. Some of the key features of the Kubernetes architecture include:

Decentralized design: Kubernetes uses a decentralized architecture, where the control plane is separated from the worker nodes. This allows Kubernetes to be more scalable and resilient, as the failure of any single component does not affect the overall operation of the cluster.

Container-centric: Kubernetes is designed to be container-centric, with a focus on deploying and managing containerized applications. This makes it easy to package and deploy applications in a consistent and portable manner, without having to worry about the underlying infrastructure.

Extensibility and modularity: Kubernetes includes a rich ecosystem of tools and services that can be used to build and deploy applications. This allows users to extend and customize Kubernetes to meet their specific needs and requirements.

API-driven: Kubernetes is API-driven, which means that all of its operations are performed through a well-defined API. This makes it easy to integrate Kubernetes with other tools and services, and allows users to automate and manage their deployments using a consistent set of APIs.

Overall, the unique architecture of Kubernetes makes it a powerful and flexible platform for deploying and managing containerized applications in a consistent and reliable manner.

## Avoid Single Point of failure 
Kubernetes has been architect to avoid single point of failure which mean if any of Kubernetes components goes down other components will keep working just fine for example:

if kubernetes api server become unavailable all workers will continue to serve workloads based on the last state they have got it from the api server