Kubernetes Tutorial: Architecture, Basics, Features with EXAMPLE
Before we learn Kubernetes, let's learn:
Why you need containers?
Today's internet user never accept downtime. Therefore developers have to find a method to
perform maintenance and update without interrupting their services.
Therefore container, which is isolated environments. It includes everything needed for application
to run. It makes it easy for a developer to edit and deploying apps. Moreover, containerization has
become a preferred method for packaging, deploying, and update web apps.
What is Kubernetes?
Kubernetes is a container management system developed in the Google platform. It helps you to
manage a containerized application in various types of Physical, virtual, and cloud environments.
Google Kubernetes is highly flexible container tool to deliver even complex applications,
consistently. Applications 'run on clusters of hundreds to thousands of individual servers."
In this beginners Kubernetes tutorial, you will learn:
Why you need containers?
What is Kubernetes?
What task are performed by Kubernetes?
Why use Kubernetes?
Features of Kubernetes
Kubernetes Basics
Kubernetes Architecture
Other Key Terminologies
Kubernetes vs. Docker Swarm
Disadvantages of Kubernetes
What task are performed by Kubernetes?
Kubernetes is the Linux kernel which is used for distributed systems. It helps you to be abstract the
underlying hardware of the nodes(servers) and offers a consistent interface for applications that
consume the shared pool of resources.
Why use Kubernetes?
Here, are pros/benefits of using Kubernetes.
Kubernetes can run on-premises bare metal, OpenStack, public clouds Google, Azure,
AWS, etc.
Helps you to avoid vendor lock issues as it can use any vendor-specific APIs or services
except where Kubernetes provides an abstraction, e.g., load balancer and storage.
Containerization using kubernetes allows package software to serve these goals. It will
enable applications that need to be released and updated without any downtime.
Kubernetes allows you to assure those containerized applications run where and when
you want and helps you to find resources and tools which you want to work.
Features of Kubernetes
Here are the essential features of Kubernetes:
Automated Scheduling
Self-Healing Capabilities
Automated rollouts & rollback
Horizontal Scaling & Load Balancing
Offers environment consistency for development, testing, and production
Infrastructure is loosely coupled to each component can act as a separate unit
Provides a higher density of resource utilization
Offers enterprise-ready features
Application-centric management
Auto-scalable infrastructure
You can create predictable infrastructure
Kubernetes Basics
Here, are some important Basic of Kubernetes:
Cluster:
It is a collection of hosts(servers) that helps you to aggregate their available resources. That
includes ram, CPU, ram, disk, and their devices into a usable pool.
Master:
The master is a collection of components which make up the control panel of Kubernetes. These
components are used for all cluster decisions. It includes both scheduling and responding to
cluster events.
Node:
It is a single host which is capable of running on a physical or virtual machine. A node should run
both kube-proxy, minikube, and kubelet which are considered as a part of the cluster.
Namespace:
It is a logical cluster or environment. It is a widely used method which is used for scoping access or
dividing a cluster.
Kubernetes Architecture
Kubernetes Architecture Diagram
Master Node
The master node is the first and most vital component which is responsible for the management of
Kubernetes cluster. It is the entry point for all kind of administrative tasks. There might be more
than one master node in the cluster to check for fault tolerance.
The master node has various components like API Server, Controller Manager, Scheduler, and
ETCD. Let see all of them.
API Server: The API server acts as an entry point for all the REST commands used for controlling
the cluster.
Scheduler
The scheduler schedules the tasks to the slave node. It stores the resource usage information for
every slave node. It is responsible for distributing the workload.
It also helps you to track how the working load is used on cluster nodes. It helps you to place the
workload on resources which are available and accept the workload.
Etcd
etcd components store configuration detail and wright values. It communicates with the most
component to receive commands and work. It also manages network rules and port forwarding
activity.
Worker/Slave nodes
Worker nodes are another essential component which contains all the required services to
manage the networking between the containers, communicate with the master node, which
allows you to assign resources to the scheduled containers.
Kubelet: gets the configuration of a Pod from the API server and ensures that the
described containers are up and running.
Docker Container: Docker container runs on each of the worker nodes, which runs the
configured pods
Kube-proxy: Kube-proxy acts as a load balancer and network proxy to perform service on a
single worker node
Pods: A pod is a combination of single or multiple containers that logically run together on
nodes
Other Key Terminologies
Replication Controllers
A replication controller is an object which defines a pod template. It also controls parameters to
scale identical replicas of Pod horizontally by increasing or decreasing the number of running
copies.
Replication sets
Replication sets are an interaction on the replication controller design with flexibility in how the
controller recognizes the pods it is meant to manage. It replaces replication controllers because of
their higher replicate selection capability.
Deployments
Deployment is a common workload which can be directly created and manage. Deployment use
replication set as a building block which adds the feature of life cycle management.
Stateful Sets
It is a specialized pod control which offers ordering and uniqueness. It is mainly used to have fine-
grained control, which you have a particular need regarding deployment order, stable networking,
and persistent data.
Daemon Sets
Daemon sets are another specialized form of pod controller that runs a copy of a pod on every
node in the cluster. This type of pod controller is an effective method for deploying pods that
allows you to perform maintenance and offers services for the nodes themselves.
Kubernetes vs. Docker Swarm
Parameters Docker Swarm Kubernetes
Scaling No Autoscaling Auto-scaling
Load balancing Does auto load balancing Manually configure your lo
Storage volume sharing Shares storage volumes with any other Shares storage volumes be
container
Use of logining and monitoring tool Use 3rd party tool like ELK Provide an in-built tool for
Installation Easy & fast Complicated & time-consum
GUI GUI not available GUI is available
Scalability Scaling up is faster than K8S, but cluster Scaling up is slow compare
strength not as robust balancing requires manual
Load Balancing Provides a built-in load balancing technique Process scheduling to main
Updates & Rollbacks Data Volumes Progressive updates and service health Only shared with container
Logging & Monitoring monitoring.
Disadvantages of Kubernetes
Kubenetes dashboard not as useful as it should be
Kubernetes is a little bit complicated and unnecessary in environments where all
development is done locally.
Security is not very effective.
Summary:
Container helps an organization to perform maintenance and update without interrupting
services
Kubernetes is an example of a container management system developed in the Google
platform.
The biggest advantage of using Kubernetes is that it can run on-premises OpenStack,
public clouds Google, Azure, AWS, etc.
Kubernetes offers automated Scheduling and Self-Healing Capabilities.
Cluster, master, node, and namespace are important basic of kubernetes
Master node and work node are important components of Kubernetes architecture.
Replication Controllers, Replication sets, Deployments, Stateful Sets, Daemon Sets are
other important terms used in Kubernetes.
Docker swarm does not allow auto-scaling while Kubernetes allows auto-scaling.
The biggest drawback of Kubenetes is that it's dashboard not very useful and effective