The name Kubernetes originates from Greek, meaning helmsman or pilot, also known as k8s. Google open-sourced the Kubernetes project in 2014 and donated the Kubernetes project to the Cloud Native Computing Foundation (CNCF) in 2015.
Kubernetes originated from a Google's project called borg. Borg was the predecessor to Kubernetes, and Kubernetes combines over 15 years of Google's experience running production workloads at scale with best-of-breed ideas and practices from the community.
What is Kubernetes?
Kubernetes is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications which is very difficult to manage manually. In a simple or layman word - it's a container management orchestration platform.
Kubernetes automates Linux container operations. It eliminates many of the manual processes involved in deploying and scaling containerized applications. While in practice Kubernetes is most often used with Docker, the most popular containerization platform. Kubernetes can support data center outsourcing to public cloud service providers or can be used for web hosting at scale.
Why Kubernetes?
Kubernetes has the ability to automate application provisioning according to the level of traffic in production. In a production environment, you need to manage the containers that run the applications and ensure that there is no downtime.
Kubernetes takes care of scaling and failover for your application, provides deployment patterns, and more. Its also configuring, deploying, managing, and monitoring even the largest-scale containerized applications.
What Kubernetes can do?
Self-healing: If the container health check fails or not's respond as per user-defined health check, kubernetes restarts containers, replaces containers, kills containers and doesn't advertise them to clients until they are ready to serve.
Automated rollouts and rollbacks: You can describe the desired state for your deployment and it can change the actual state to the desired state at a controlled rate.
Service discovery and load balancing: Kubernetes can expose container or application using DNS or Cluster IP (as per the allocated service) and also it load balance & distribute the traffic.
Storage orchestration and Orchestrate containers across multiple hosts: Kubernetes automatically mount a storage system of your choice, such as local storages, public cloud providers. And also it can manage containers across multiple hosts as a Kubernetes cluster.
Scale containerized applications and their resources on the fly: Kubernetes can fit containers onto your nodes to make the best use of your resources.
Kubernetes Architecture
Kubernetes components that control the cluster, along with data about the cluster’s state and configuration. These core Kubernetes components handle the important work of making sure your containers are running in sufficient numbers and with the necessary resources.
etcd: A key-value store database which is used to store the Kubernetes cluster data. Fault-tolerant and distributed, etcd is designed to be the ultimate source of truth about your cluster.
kube-apiserver: Kubernetes API server is the central management entity that receives all REST requests for modifications, serving as frontend to the cluster. The Kubernetes API is the front end of the Kubernetes control plane, handling internal and external requests.
kube-controller-manager: Controllers take care of actually running the cluster, and the Kubernetes controller-manager contains several controller functions in one.
These kube-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.
kube-scheduler: The scheduler considers the resource needs of a pod, such as CPU or memory, along with the health of the cluster. Then It reads the service’s operational requirements and schedules it on the best fit node.
cloud-controller-manager: The cloud controller manager lets you link your cluster into your cloud provider's API, and separates out the components that interact with that cloud platform from components that just interact with your cluster. The cloud-controller-manager only runs controllers that are specific to your cloud provider. If you are running Kubernetes on your own premises, or in a learning environment inside your own PC, the cluster does not have a cloud controller manager.
Kubernetes node Components
Pods: A pod is the smallest and simplest unit in the Kubernetes object model. It represents a single instance of an application. Pods contain one or more containers, such as Docker containers.
Kubelet: An agent that runs on each node in the cluster. It makes sure that containers are running in a Pod. When the control plane needs something to happen in a node, the kubelet executes the action.
I appreciate you taking the time and effort to share your knowledge. This material proved to be really efficient and beneficial to me. Thank you very much for providing this information. Continue to write your blog.
ReplyDeleteData Engineering Services
Artificial Intelligence Solutions
Data Analytics Services
Data Modernization Solutions