Kubernetes(K8s), A Technology that has been widely adopted by many companies to solve big…
By: Monil Goyal
Tags: Container Orchestration, Kubernetes, Kubernetes Cluster, Technology, Microservices

Kubernetes(K8s), A Technology that has been widely adopted by many companies to solve big challenges in containerisation world.

Do you know how big companies are deploying their services without any downtime? what problems companies were facing that have been solved by this wonderful technology.

Before going into this discussion about Kubernetes, I want to introduce you to containerisation technology.

How Kubernetes evolved into the great tool that we know today?

In 2008, Before introducing container, Deploying services using virtualization was an ultra-modern way to optimize the resources at the data centre. Virtualization is the process of presenting something in software form. Virtual machines were set up at the data centre to deploy microliths services. Microliths services mean each service depends on other services. If one service goes down, it will also affect other services. This arrangement worked well but it had some drawbacks. Virtual machines utilized too many resources because they required both a complete operating system and emulated instructions to reach the physical CPU that required too much amount of time to be invest.

In view of these difficulties containerisation technology was introduced, that requires the minimum amount of time to launch a fully isolated operating system that has its own personal access to computing units.

Containerization is an OS-level virtualization method used to deploy and run distributed applications without launching an entire virtual machine (VM). Thousand of the container can be launched on a single physical operating system.

Launching and configuring a container is so simple that’s why thousands of the container could be launched in no time but maintaining these containers, scaling them as per requirement and disaster recovery, These problems were widely faced by many companies. If one of the containers went down, it would affect many services.

Considering these problems google developed this unique tool called Kubernetes(K8s).

So now what is Kubernetes?

Kubernetes is a portable, extensible, open-source platform for managing and scaling containerized workloads and services, that facilitates both declarative configuration and automation.

Kubernetes help us to deploy microservices. Microservices means every service run on the different container and if any of them goes down it will not affect other.

What is the Kubernetes cluster? How does it look like?

Kubernetes Cluster

In simple words, Kubernetes cluster runs your workload by placing containers into Pods to run on Nodes. A node may be a virtual or physical machine, depending on the cluster. Each node contains the services necessary to run pods, managed by the control panel.

Why this technology is widely adopted by many big companies? Feature of Kubernetes.

Self-Healing and Scaling Services

For simplicity, K8s process units can be detailed as pods and services.

A pod is the smaller deployment unit available on Kubernetes. A pod can contain several containers that will have some related communication — such as network and storage.

Services are the interface that provides accessibility to a set of containers. These services can be for internal or public access and can load balance several container instances.

Pods are mortal: once finished, they vanish from the cluster. Pod termination can be natural or through an error. Deployment is the most modern Kubernetes module to create and maintain pods. Using a single description file, a developer can specify everything necessary to deploy, keep running, scale, and upgrade the pod.

Serverless, with Server

Another solution is to use a Kubernetes cluster to create a vendor-free serverless platform. Serverless architecture has taken the world by a storm since AWS launched Lambda. The principle is simple: just develop the code, and don’t worry about anything else.

Services, Load Balancing, and Networking

Kubernetes networking addresses four concerns:

Containers within a Pod use networking to communicate via loopback.

Cluster networking provides communication between different Pods.

The Service resource lets you expose an application running in Pods to be reachable from outside your cluster.

You can also use Services to publish services only for consumption inside your cluster.

Optimized Resource Usage with Namespaces

A K8s namespace is also known as a virtual cluster. Namespaces create a virtually separated cluster inside the real cluster. Clusters without namespaces probably have test, staging and production clusters. Virtual clusters usually waste some resources because they do not undergo continuous testing and because staging is used from time to time to validate the work of a new feature. By using a virtual cluster, or a namespace, an operations team can use the same set of physical machines for different sets depending on a given workload.

Hybrid and Multiclouds

A hybrid cloud utilizes computing resources from a local, conventional data center, and from a cloud provider. A hybrid cloud is normally used when a company has some servers in an on-premise data center and wants to use the cloud’s unlimited computing resources to expand or substitute company resources. A multicloud, on the other hand, refers to a cloud that uses multiple cloud providers to handle computing resources. Multi-clouds are generally used to avoid vendor lock-in, and to reduce the risk from a cloud provider going down while performing mission-critical operations.

Kubernetes Use Cases

1. Tinder’s Move to Kubernetes

Tinder’s engineers were also looking to address challenges of scale and stability. When scaling became critical, they often suffered through several minutes of waiting for new EC2 instances to come online. The idea of containers scheduling and serving traffic within seconds as opposed to minutes was appealing to them.

It wasn’t easy. During our migration in early 2019, They reached critical mass within our Kubernetes cluster and began encountering various challenges due to traffic volume, cluster size, and DNS. They solved interesting challenges to migrate 200 services and run a Kubernetes cluster at scale totalling 1,000 nodes, 15,000 pods, and 48,000 running containers. One of their engineering leaders said, “As we onboarded more and more services to Kubernetes, we found ourselves running a DNS service that was answering 250,000 requests per second.”

How

Starting in January 2018, They started by containerizing all of their services and deploying them to a series of Kubernetes hosted staging environments. Beginning October, They began methodically moving all of their legacy services to Kubernetes. By March the following year, They finalized their migration and the Tinder Platform now runs exclusively on Kubernetes.

2. Pinterest’s Kubernetes Story

After eight years in existence, Pinterest had grown into 1,000 microservices and multiple layers of infrastructure and diverse set-up tools and platforms. In 2016 the company launched a roadmap towards a new compute platform, led by the vision of creating the fastest path from an idea to production, without making engineers worry about the underlying infrastructure.

How

The first phase involved moving services to Docker containers. Once these services went into production in early 2017, the team began looking at orchestration to help create efficiencies and manage them in a decentralized way. After an evaluation of various solutions, Pinterest went with Kubernetes.

Note: The above information about Kubernetes may be incomplete. The accuracy of content is not claimed.

Thanks for reading…