KUBERNETES - TUTORIALS
What is kubernetes ?
kubernetes is one of the container Management Technology, its a product of GOOGLE now its maintained by CNCF (Cloud Native Computing Foundation" , kubernetes is a container Management tool which can manage container running on a group of node also called as cluster. kubernetes
what is Container orchestration ?
Container orchestration tasks contains the
1) scheduling the containers on the cluster of nodes.
2) provide high availability for the applications running on the containers.
3) offers resilience systems.
4) Scaling systems.
5) Self healing.
6) Automatic rolling updates and rollback.
7) Load balancing
what are Container orchestration tools ?
2) Docker Swarm
3) Apache Mesos
kubernetes can have any number of nodes , what is node ? node is virtual machine or a physical server or any instances on cloud or bare metal server. in this node group at least on one node should be acting as a Master node, this master node will look after the entire cluster, in production environment we can have multiple master node to provide high availability and fault tolerance, and remining all other node are called as worker nodes or minions , these work node or minios run the actual work or run containers, we dedicate the master node to manage the entire cluster, master node or manager node will be the decian maker called as control plane of entire cluster.
Kubernetes master manages the entire cluster like if any node goes down it will interact with other components and coordinate with cluster by providing high availability.
the four major components of this master node are API Server, Controller Manager, Scheduler and etcd called key, value store.
it’s a most important component and frontend of the cluster. whenever we define our cluster in manifest file and run the manifest file in that manifest file, we set this API Server,
Kubernetes will interact with API sever of the Master Node with a tool called kubectl is a command line utility with which we interact with API Server. we feed this manifest file through kubectl to the API Server, API Server is first most important component or a frontend of this master node it will evaluate the manifest file and as per the manifest file it will deploy the container on the Kubernetes Nodes by interacting with other components called control manager, scheduler and ECTD.
Controller Manager: controller manager will have many controllers like node controller, replication controller, End point controller, Service controller, token controller etc., this is responsible for health check of application.
Scheduler: it will schedule the work to the worker nodes, as per the desired state that is defined in the manifest file written by Kubernetes users it will schedule the containers on the respective nodes whichever the node is healthy and what time we need to start the container all these this will be taken care by scheduler of the Master Node.
ETCD: etcd is like a lite weight database called a key, value database where the current status of the cluster is stored in the form of key value pairs, this etcd will be queried to get the cluster state at any point of time.
Kubernetes cluster nodes: node will take the commands from the master or control plane of the cluster, there are different components in each node called pod, kublet, kube-proxy.
kublet: kublet is the main Kubernetes agent on each node. whenever we installed the kubelet on any node, it registers that node as a Kubernetes node in the cluster, it watches the API server on the master on what assignments are assigned, and when any work is assigned this kubelet carries out the task and then it maintains a reporting channel back to the master.
POD: POD is like layer about your container or an environment where container lives, recommended one container per pod, but we can also have multiple containers in each pod, pod is a basic unit of deployment. we deploy the pods always, we never deploy the containers directly, always container runs inside the pod. all network interfaces, kernel, Namespaces will be shared with the container, every pod is assigned with a network interface and an ipaddress, container will use the same network interface and ipaddress of the pod, if any POD dies replication controller will start another pod in its place.
kube-proxy: its works like a network brain of cluster, which will take care of all communications, networking on the pods