Skip to main content

What is Kubernetes

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 control plane Components

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.

Kube-proxy: A network proxy for facilitating Kubernetes networking services that runs on each node kubernetes cluster. kube-proxy maintains network rules on nodes. These network rules allow network communication to Pods from network sessions inside or outside of kubernetes cluster.



Comments

  1. 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.

    Data Engineering Services 

    Artificial Intelligence Solutions

    Data Analytics Services

    Data Modernization Solutions

    ReplyDelete

Post a Comment

Popular posts from this blog

How to configure a Datasource in JBoss / WildFly as a JAR Deployment

JDBC drivers can be installed as a JAR deployment using either the management CLI or the management console. As long as the driver is JDBC 4-compliant, it will automatically be recognized and installed as a JDBC driver upon deployment. 1. Download the appropriate JDBC driver from your database vendor. 2. Start the JBoss EAP/WildFly server. 3. Now most of the drivers coming with JDBC 4-compliant, but in case If the JDBC driver JAR is not JDBC 4-compliant, it can be made deployable using the following steps. i) Create a directory structure META-INF/services on your local system. $ mkdir -p META-INF/services    ii) Create a file inside META-INF/services/java.sql.Driver. $ touch META-INF/services/java.sql.Driver   iii) Add one line in the file to indicate the fully-qualified class name of the JDBC driver. $ echo “com.mysql.jdbc.Driver” > META-INF/services/java.sql.Driv...

Shift your Data into Virtualization

A single approach to data management that allows an application or user to retrieve and manipulate data without knowing any technical details about the data. That approach called Data Virtualization. Data Virtualization is different than traditional virtualization like - VMWare, Hypervisor, KVM, etc. because we already learned how to do virtualization of OS, Hardware and Storage, now time to add some more into virtualization, which is DATA. What is Data Virtualization? Data virtualization is a single window used to describe any approach to data management that allows an application to retrieve and manipulate data without requiring technical details about the data, such as how it is formatted, or where it is physically located. Why use Data Virtualization? Data virtualization promotes efficiency in data usage and processing and accelerates time to market on projects with complex data storage infrastructure. The purpose is to allow data to be accessed without creating extra ...

How to Install JBOSS EAP 7.0.0 on RHEL6.5/CentOS6.5 – a step by step tutorial of INSTALLER Installation

INTRODUCTION In this tutorial, we will demonstrate how to install and start a JBoss EAP 7.0.0 server on RHEL 6.5/CentOS 6.5. We use Oracle JDK 8 for this tutorial. This Tutorial Consists Of The Following Steps: Step 1: Download installer link Step 2: JDK installation and verification Step 3 to Step 14: JBoss EAP 7 installation procedure using INSTALLER Installation Step 15: Start Jboss EAP 7 server Red Hat JBoss EAP 7.0 is based on Wildfly 10 , and provides pre-configured options for features such as high-availability clustering, messaging, and distributed caching. And it is an application server that works as a middleware platform, is built on open standards, and is compliant with the Java EE 7 specification. Step 1: Download the installer from: https://developers.redhat.com/products/eap/download/ Select the EAP 7.0.0 (Developers version) from the list. Click on Installer option within Download column. For Linux/ Windows/Mac...