Case Study: Kubernetes
In the past few years, Kubernetes has been talk of the town in technological world. But this popularity is justified with the diverse use cases where Kubernetes shines. But before going further, lets take a look at what is Kubernetes.
⚡ What is Kubernetes?
By definition : Kubernetes, also known as k8s, is an open source system for automating deployment, scaling and management of containerized application. It groups containers that make up an application into logical units for easy management and discovery.
Nowadays, containers are a frequently used to bundle and run the applications. But we need to manage the containers that runs the applications along with ensuring no glitch or downtime in production environment. But this process can be very hectic as one needs to constantly monitor the state of containers and make sure that a new container is launched as soon as a previous container goes down. Here, Kubernetes comes to rescue by providing the management of these features as a system. It provides a platform /framework for efficient management of distributed systems. Using Kubernetes, we can cluster together groups of hosts running Linux containers and efficiently manage it.
“Kubernetes is an orchestration layer that allows users to more effectively run workloads using containers — from keeping long-running services ‘always on’ to more efficiently managing intensive shorter-term tasks like builds.”
On a broader aspect, Kubernetes architecture consists of a control plane called Master, a distributed storage system for keeping the cluster state consistent called Cluster Store, and a number of cluster nodes called Kubelets.
⚡ Kubernetes Features
- Horizontal Scaling: Based on resource requirements, one can scale up and down our application using simple commands, UI interface or by automation using Kubernetes.
- Self Healing: It can restarts containers that fail, replaces and reschedules containers when nodes die, kills containers that don’t respond to the user-defined health check, and doesn’t advertise them to clients until they are ready to serve.
- Storage Orchestration: It allows us to automatically mount a storage system of our choice ranging from local storages, public cloud providers like AWS or GCP and much more.
- Service discovery and load balancing: It can expose a container using DNS name or using their own IP address. If traffic to a container is high, it is able to load balance and distribute the network traffic making deployment stable.
- Automated rollouts and rollbacks: It allows us to automate the creation of new containers for the deployment, remove existing containers and adopt all their resources to the new container.
- Automatic bin packing: It automatically places containers based on their resource requirements and other constraints, while not sacrificing availability.
- Secret and configuration management: It lets the user store and manage sensitive information, such as passwords, OAuth tokens, and SSH keys. One can deploy and update secrets and application configuration without rebuilding the container images, and without exposing secrets in stack configuration.
⚡ Companies using Kubernetes
- Booking.com : In 2016, Booking.com migrated to an OpenShift platform, which gave product developers faster access to infrastructure. But because Kubernetes was abstracted away from the developers, the infrastructure team became a “knowledge bottleneck” when challenges arose. Trying to scale that support wasn’t sustainable. After a year operating OpenShift, the platform team decided to build its own vanilla Kubernetes platform. Before containers, creating a new service could take a couple of days if the developers understood Puppet, or weeks if they didn’t. On the new platform, it can take as few as 10 minutes. About 500 new services were built on the platform in the first 8 months.
- Huawei : In order to support its fast business development around the globe, Huawei has eight data centers for its internal I.T. department, which have been running 800+ applications in 100K+ VMs to serve these 180,000 users. With the rapid increase of new applications, the cost and efficiency of management and deployment of VM-based apps all became critical challenges for business agility. After deciding to use container technology, Huawei began moving the internal I.T. department’s applications to run on Kubernetes. So far, about 30 percent of these applications have been transferred to cloud native. By the end of 2016, Huawei’s internal I.T. department managed more than 4,000 nodes with tens of thousands containers using a Kubernetes-based Platform as a Service (PaaS) solution.
- Nokia : Its main products are related to the infrastructure, such as antennas, switching equipment, and routing equipment. As telecom vendors, they had to deliver software to several telecom operators and put the software into their infrastructure, and each of the operators have a bit different infrastructure. There are operators who are running on bare metal. There are operators who are running on virtual machines. There are operators who are running on VMware Cloud and OpenStack Cloud. They want to run the same product on all of these different infrastructures without changing the product itself. The company decided that moving to cloud native technologies would allow teams to have infrastructure-agnostic behavior in their products. Teams at Nokia began experimenting with Kubernetes in pre-1.0 versions. The first Kubernetes-based product, the Nokia Telephony Application Server, went live in early 2018. Kubernetes has enabled Nokia’s foray into 5G.