The popular Kubernetes follows a master-slave architecture.
Although it is possible to have several master setup for high availability, by default, Kubernetes has a single master node that acts as the controlling node and the point of contact.
The master server then consists of different components including a distributed storage system to keep a consistent cluster state and several cluster nodes. Take time to read here: deploy it on premise
Learn more about Kubernetes architecture here.
The Master Node
This is the first and most crucial component responsible for the management of Kubernetes clusters. The master component is the entry point for all kinds of administrative tasks.
The various components included in the master node include:
Stores configuration details and values, communicates with other components to receive commands and performs an action, and managing network rules and post forwarding activities.
- Controller Manager
Responsible for most controllers, the controller manager runs in a continuous loop and is responsible for sending and collecting information to the API server. It is also the one to handle endpoints and nodes.
- API Server
It allows the performance of all operations on the cluster. The API Server is the central management unit, receiving all REST requests for modifications and serving as the frontend to the cluster. Also, it implements an interface so that different libraries and tools can effectively communicate.
This one schedules tasks to the slave node and is responsible for distributing the workload. It stores the resource usage info for every slave note, helping you keep track of how the working load is used on the cluster nodes. In addition, the scheduler helps place the workload on available resources.
The Slave Node
Slave nodes are another essential thing to learn more about Kubernetes architecture. This node contains all needed services to manage the networking between containers, and communicate with the master node, allowing you to assign resources to scheduled containers.
For the slave node, these are the following components:
Pods are one or more containers controlled by one application. It encapsulates app containers, a unique network ID, storage resources and other configurations on running the containers.
- Docker Container
Docker is one of the basic requirements of nodes. It runs the app in a lightweight and isolated operating environment. Also, it runs configured pods and is responsible for running and pulling down containers from Docker images.
This is a proxy service that runs on each worker node and allows the services to be available to the external host. It performs some primitive load balancing and managing pods on nodes, the volume, creating new containers and general health checkups.
Mainly responsible for managing the pods and their containers, Kubelets deal with pod specs that are defined in JSON or YAML format. This component takes the pod specs and checks if the pods are properly running or not, reporting to the master node on the health of the host where it is running.
Want to learn more about Kubernetes architecture and the best platform to manage it? Check it out at kublr for more details.