How Kubernetes Works | Internal of Kubernetes
#Kubernetes Overview:
- Kubernetes is a container management Platform
- Created by Google
- Written in Go/GoLang
- Also known as K8s
#Master Node
Master is the control-plane or the brain of k8s cluster. A Master comprises of few components:- api-server - Exposes REST API to talk to k8s cluster, consumes json, only api-server talks to Cluster Store.
- Cluster Store (KV) - Cluster state and config management.
- Scheduler - Watches api-server for new pods and assign node to work
- Controller - A daemon that watches the state of the cluster to maintain desired state. Example are replication-controller, namespace-controller etc. Other than this it performs garbage collection of pods, nodes, events etc.
#Node
- Kubelet - k8s agent which register nodes with cluster, watches api-server, instantiate pods, report back to the api-server. If pod fails, it reports to master and master decides what to do. Exposes port 10255 on node
- Container Engine - It does container management like pulling images, starting/stopping containers. Usually Docker is used for container runtime.
- kube-proxy - Responsible for networking, Provide unique IP to Pods, All container in a pod share same IP, Load balances across all pods in a service
#Pods
- An environment to run containers
- It have network stack, kernel namespaces and one or more container running
- Container always runs inside a pod
- Pod can have multiple containers
- It is unit of scaling in k8s
#Services
Pods comes and go with different IPs. To distribute load and act as a single source of interaction to all pods of an application, service play the role.- Has single IP and DNS
- Created with a manifest JSON file
- All new pods gets added/registered to the service
- Which pod should be assigned to which services is decided by labels
- service and pods have labels on the basis of which service identifies its pods
- only sends traffic to healthy pods
- service can point things outside the cluster
- uses tcp by default (udp is also supported)
#Deployments
It is a k8s object whose task is to manage identical pods running and upgrading them in controlled way.#Overall Flow
- kubectl writes to the API Server
- API Server validates the request and persists it to Cluster store(etcd)
- Cluster store (etcd) notifies back the API Server
- API Server invokes the Scheduler
- Scheduler decides where to run the pod on and return that to the API Server
- API Server persists it to etcd
- etcd notifies back the API Server.
- API Server invokes the Kubelet in the corresponding node
- Kubelet talks to the Docker daemon using the API over the Docker socket to create the container
- Kubelet updates the pod status to the API Server
- API Server persists the new state in etcd
Awesome Post!
ReplyDeleteGreat resources for beginner of kubernatic
ReplyDeleteGood info... nicely presented.
ReplyDeleteThank you for sharing updates on Kubernetes RBAC 101. I really liked the post. Short and simple, keep sharing more.
ReplyDeletesap sd training
ReplyDeleteosb training
oracle scm training
abinitio training
spark training
scala training
azure devops training
Thanks for sharing valuable article having good information and also gain worthful knowledge. We are also providing the best services click on below links to visit our website.
ReplyDeleteOracle Fusion HCM Training
Workday Training
Okta Training
Palo Alto Training
Adobe Analytics Training
ReplyDeleteThis article is so great! Thank you for sharing.
DevOps Training
DevOps Online Training
Thank you ever so for you article. Really Cool.
ReplyDeletecore java online training
java online training hyderabad