Have you ever thought how engineers are scaling there hosted softwares? What tools are they using and is that too difficult to scale? And many more questions you might get into your head if interested in Software Scaling and cloud computing.
Kubernetes is the tool which help engineers answer these questions. Let's dive into it.
Kubernetes is a powerful open source system, developed by Google, which helps you to manage containerized applications. It is a platform generally which provides complete management of application(containerized applications) and services and provides methods for scalability, availabilty and reliability.
With Kubernetes, you can easily scale your applications up or down, according to your needs, perform rolling updates and control traffic to your application network. All these features make Kubernetes a powerful too.
Hmm, you have understood the definition of Kubernetes, but how does kubernetes provide such powerful services? For this question to be answered, you have to learn about Kubernetes Architecture covered in next Section.
- At the base of Kubernetes layered structured, all the individual machines, physical or virtual, are bought under a cluster which is connected to a shared network helping in communication between servers.
- Roles are assigned to machines in the cluster
- There are two components:
- Control Plane(constitutes of master nodes)
- Data Plane(constitutes of worker nodes)
This is the gateway and brain for the cluster. Exposing APIs, health check, scheduling and orchestration is handled by this.
The components of control plane are:
- Kube-apiserver: Nucleus of the cluster. Allows user to configure Kubernetes' workloads and organizational units. Acts as bridge between various components.
- kube-controller-manager: Handles controller processes. Ensures that the desired configuration is propagated to resources.
- etcd: the key-value store, used for backs-up and keeping manifests for the entire cluster
- kube-scheduler: the mechanism that places the new workloads on a node with sufficient satisfactory resource requirements
- cloud-controller-manager: Act as glue that allows Kubernetes to update state information when information is gathered from the cloud provider, adjust cloud resources and create and use additional cloud services as required by the cluster.
The data plane consists of servers responsible for carrying out given work using local or external resources. The creation or deletion of nodes and setting up traffic rules as per instruction given by master nodes is handled by worker nodes.
The components of data plane are:
- Kubelet: the agent that runs on every node and notifies the kube- apiserver that this node is part of the cluster
- kube-proxy: a network proxy that ensures the reachability and accessibility of workloads places on this specific node
- a container runtime: Each node must have a container runtime. Responsible for starting and managing containers.
This was all about kubernetes and its architecture. There is alot about Kubernetes which we will be covering in following articles.
I hope you liked my article. You can follow me on Twitter.