1. What is Kubernetes
When you deploy kubernetes like using kubeadmin you will get a cluster and you will be able to use it and deploy your applicatin inside.
A cluster is a group of machines, called nodes, that run multiple applications inside cluster managed by Kubernetes. A cluster has at one or more worker node(s) and at one or more master node(s). In this post i going to explain you the various components you need to have a complete and working Kubernetes cluster.
5. Features of Kubernetes
Below among the benefits and the important features of Kubernetes.
- Containerized infrastructure
- Multi-container application management on a scale : Auto-scalable infrastructure
- Higher density of resource utilization
- Deployment automation
- Service discovery and load balancing
- Storage orchestration
- Automated rollouts and rollbacks
- Secret and configuration management
6. Kubernetes – Architecture
Kubernetes follows a client-server architecture, it’s possible to have a multi-master setup, by default there is a single master server which acts as a controlling all nodes.
- The master server : consists of various components including a kube-apiserver, an etcd, kube-controller-manager, kube-scheduler, and DNS server for Kubernetes services.
- Node components : include kubelet and kube-proxy on top of Docker.
7. Kubernetes – Master Components
Below are the main components master node in kubernetes cluster :
- etcd cluster : a simple, distributed key value storage which is used to store the Kubernetes cluster data (such as number of pods, their state, namespace, etc)
- kube-apiserver : Kubernetes API server is the central management entity that receives all REST requests for modifications (to pods, services, replication sets/controllers and others) The API server is a component of the Kubernetes control plane that exposes the Kubernetes API. Also, kube-apiserver is the only component that communicates with the etcd cluster.
- kube-controller-manager : runs all controllers that handle all tasks in the cluster, bellow a list of containers in Kubernetes process :
These controllers include:
Node Controller : Responsible for noticing and responding when nodes go down.
Replication Controller : Responsible for maintaining the correct number of pods for every replication controller object in the system.
Endpoints Controller : Populates the Endpoints object (that is, joins Services & Pods).
Service Account & Token Controllers : Create default accounts and API access tokens for new namespaces
- cloud-controller-manager : is responsible to runs controllers that interact with the underlying cloud providers, (fo example, check if a node was terminated or set up routes, load balancers or volumes in the cloud infrastructure.
- kube-scheduler : In Kubernetes, scheduling refers to making sure that Pods are matched to Nodes so that Kubelet can run them.
8. Kubernetes – Node Components
Below are the main components found on a worker node in kubernetes cluster:
- kubelet : The kubelet is the primary “node agent” that runs on each node, regularly taking in new or modified pod specifications (primarily through the kube-apiserver)
- kube-proxy : a proxy service that runs on each worker node to deal with individual host subnetting and expose services to the external world. kube-proxy is a network proxy that runs on each node in kubernetes cluster, it maintains network rules on nodes. These network rules allow network communication to different Pods from network sessions inside or outside of k8s cluster.
In this post, i have explained the installation of the Kubernetes cluster in Linux, Mac and Windows OS using minikube.
If you have any questions or feedback, feel free to leave a comment.
As always, if you found this post useful, then click like and share it 🙂