For a long time, developers have been using a monolith web application but they have a huge problem, as time goes it becomes a huge and slow giant that is hard to manage, this is why people have turned to use microservices which means that you can split monolith into 2 applications: the front-end app and a back-end app (the API). But what application should you use for this? the answer is Kubernetes
This is an open-source system created by Google in 2014, that allows you to automate deploys, configure ingresses, manage, scale and create containers, amongst others. But now you might be wondering what is a container, and in simple words is the frame where you put the application, the libraries, frameworks, etc. that they depend on, they are extremely powerful and help to develop, managing, migrating applications and software components from one system to another. Kubernetes system has been extremely useful since it allows you to use computational resources to a maximum, as well as save a good deal of money. This system functions just like an engine, it has a bunch of small parts that together can run a big environment, some of the most important are:
Master Node: this is the control panel of the systems and its components are:
- API server: The entry point for all REST commands.
- Datastore: Strong, consistent, and highly-available key-value storage.
- Scheduler: Watches for newly-created pods and assigns them to nodes.
- Controller manager: Runs all the controllers that handle routine tasks in the cluster.
- Worker nodes: Worker nodes contain all the necessary services to manage networking between the containers, communicate with the master node, and assign resources to the containers scheduled.
- Docker: Runs on each worker node and downloads images and starting containers.
- Kubelet: Monitors the state of a pod and ensures that the containers are up and running.
- Kube-proxy: It is responsible for traffic routing.
- Kubectl: A CLI tool for the users to communicate with the Kubernetes API server.