Kubernetes is an open source framework widely employed for orchestration and direction of both containerized workloads and services. Ideal for cloud native-applications, Kubernetes simplifies several procedures involved in the installation and scaling of containerized applications. Kubernetes additionally empowers portability throughout infrastructures.
Kubernetes could be viewed as a container platform or even as a microservices system or as a highly mobile cloud platform.
The title Kubernetes originates from Greek, which means Pilot.
Kubernetes Key Features:
Service discovery and load balancing
Automated rollouts and rollbacks
Started by Google within an internal project, Kubernetes was sourced by the research engine giant in 2014, and is currently maintained and encouraged by Cloud Native Computing Foundation
“Kubernetes was originally developed and designed by engineers at Google. Google was one of the early contributors to Linux container technology and has talked publicly about how everything at Google runs in containers. (This is the technology behind Google’s cloud services.) Google generates more than 2 billion container deployments a week—all powered by an internal platform: Borg. Borg was the predecessor to Kubernetes and the lessons learned from developing Borg over the years became the primary influence behind much of the Kubernetes technology.” – Redhat
“A Pod is the basic building block of Kubernetes–the smallest and simplest unit in the Kubernetes object version which you produce or deploy. Pod signifies a running process in your audience. ”
Image Source: Redhat
What is a Container?
“Container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another.”
Similar to the way containers were used by the shipping industry to standardize movement of products around the planet, Containers (IT) aim to achieve the same impact to the Technology industry by standardizing the (applications ) application environment. Containers provide virtualization in the operating-system level instead of the traditional hardware-level virtualization.
Since Containers are isolated from each other and also from the host, computational tools could be shared, because of which they are easier to build than a virtual machine. Containers aren’t determined by the underlying infrastructure, as well as the host file system, which makes them highly mobile across infrastructure and operation procedure distributions.
Why would you really desire Kubernetes?
A real-world production application will operate across a number of containers and these containers might be deployed across multiple hosts. This makes security and management of containers somewhat complicated endeavor.
Kubernetes automates several manual processes required to scale and deploy containers, and handle containerized workloads. The container-centric management environment provided by Kubernetes may be used to orchestrate computing, networking and storage infrastructure.
What can you perform with Kubernetes?
Kubernetes gives you the system to program and operate containers clusters of physical or virtual machines. With Kubernetes you are able to implement a container-based infrastructure in production environments.
With Kubernetes you can:
Orchestrate containers across multiple hosts.
Make better utilization of hardware to maximize resources required to conduct your enterprise programs.
Control and automate application deployments and upgrades.
Mount and include storage to operate stateful apps.
Scale containerized applications and their tools the fly.
Declaratively handle services( which ensures the deployed applications are constantly running the way you set up them.
Health-assess and self-heal your programs with autoplacement, autorestart, autoreplication, and autoscaling.
The elements utilized in Kubernetes are classified as Master Components, Node Components, and Addons.
These components form the bunch ’s command airplane, make global decisions regarding the clusters.
kube-apiserver: Exposes the Kubernetes API. It is the front-end for the Kubernetes control airplane, which is designed to scale horizontally.
etcd: Consistent and also highly-available key-value shop.
kube-scheduler: Component on the master that watches recently created pods which do not have any node assigned, also chooses a node for them to operate on. Factors taken into consideration for scheduling decisions include individual and collective source requirements, hardware/software/policy constraints, affinity and anti-affinity specifications, data locality, inter-workload interference and deadlines
kube-controller-manager: Component that conducts controls. Logically, each control is another procedure, but to decrease complexity, they are all compiled into a single binary and operate in a single procedure.
cloud-controller-manager: conducts controls that interact with the underlying cloud providers. The cloud-controller-manager binary is an alpha feature introduced in Kubernetes launch 1.6.
These parts run on each node and provide the Kubernetes runtime environment.
kubelet: An agent that runs on every node in the cluster. It makes certain containers are running in a pod. The kubelet requires a set of PodSpecs which are provided through various mechanisms and guarantees that the containers described in people PodSpecs are running and wholesome. The kubelet does not handle containers which were not made by Kubernetes
kube-proxy: empowers the Kubernetes service abstraction by maintaining network principles the server and performing connection forwarding
Container Runtime: is the applications that is responsible for running containers. Kubernetes supports many runtimes: Docker, containerd, cri-o, rktlet and some other implementation of the Kubernetes CRI (Container Runtime Interface)
You can assess the complete list of addons by visiting kubernetes.io
Container vs Virtual Machines?
“Containers can operate all kinds of applications, but since they are so different from virtual machines, a great deal of the older applications that lots of big companies are still running does not translate to this version, writes Frederic Lardinois of Techcrunch. He adds further explaining why Containers will not replace Virtual machines.
“Virtual machines are able to allow you to transfer those previous applications into a cloud service like AWS or Microsoft Azure, however, even though containers have their benefits, virtual machines are not going away anytime soon.