RESEARCH ON KUBERNETES

Sanchit Agarwal
7 min readJun 2, 2021

How Kubernetes used in industries Kubernetes used in industries.

Kubernetes and Docker are two of the words you hear most in conversations about DevOps today. Docker is a tool that allows you to contain and run applications, and Kubernetes provides a platform to orchestrate or manage these containers, since managing thousands of containers manually with Docker CLI is a very costly task.

Modern applications are increasingly based on the use of containers, which are packaged micro services with their dependencies and configurations. Kubernetes is an open source software to implement and manage those containers on a large scale. It enables any number of servers of many types at the same time, separated by distance, to share workloads for a common tenant.

Most importantly, Kubernetes was designed to be used anywhere, so it can orchestrate on-site, public cloud and hybrid deployments. With Kubernetes, concrete steps can be taken to achieve better IT security. In addition, it must also be integrated with networking, storage, security, telemetry and other services to provide a comprehensive container infrastructure. This offers the simplicity of Platforms as a Service (PaaS) with the flexibility of Infrastructure as a Service (IaaS) and allows for portability between infrastructure providers.

Since its inception, Kubernetes has been a project that has enjoyed great recognition and has always had a lot of impact, but in recent months its influence has been consolidated based on different factors.

The community has grown considerably. Google and Red Hat are the biggest contributors, but there is also Meteor, CoreOS, Huawei, Mesosphere and many more.

In addition, Kubernetes is no longer perceived as something new to experiment with, it is gaining enough credit to be used more and more in production. In fact, by 2019, this platform was in production in 78% of the companies. One year earlier, in 2018, it was in 58%. Companies such as Tinder, Reddit, New York Times, Airbnb or Pinterest have integrated this technology into their services.

Companies are looking to develop applications, and containers and open source are becoming very important, as they realize that Kubernetes is the first step to create modern scalable applications.

Kubernetes is a system that can be used to efficiently implement applications. As a result, it can help companies save money by using less labour to manage their IT infrastructure.

Kubernetes effectively automates container management. Because containers allow for the assembly of code into smaller, easier to transport parts, and larger applications involve a package of multiple containers, Kubernetes can organize multiple containers into units. Therefore, containerized applications can be scaled automatically, making it more feasible with only fewer resources needed to manage multiple containers.

Advantages:

Using Kubernetes and its huge ecosystem can improve productivity.

Using Kubernetes along with good native cloud technology attracts talent. For example, many software engineers want to work in companies that use modern and interesting technologies.

Kubernetes is a feasible solution for many years to come.

Kubernetes helps an application run more stably.

Kubernetes can be cheaper than other alternatives, especially if you have large computing resources.

Disadvantages:

Kubernetes can be too much for simple applications: If you do not intend to develop something complex for a large audience, or do not have large computing resources, you do not take full advantage of this technology.

Kubernetes is very complex and can reduce productivity: Kubernetes is known for its complexity. Especially for developers who are not familiar with infrastructure technologies, it can be very difficult to work with them.

The transition to Kubernetes can be cumbersome: If you have software and want to adapt it to Kubernetes, it must take time to run smoothly, which is difficult to estimate.

Kubernetes can be more expensive than other alternatives: This is because all of the above disadvantages cost engineers time that is not spent creating new “tangible” business value.

Containers are becoming increasingly popular in the software world and Kubernetes has become the industry standard for deploying containers into production. In addition, a high growth rate is expected for Kubernetes throughout this year as well.

Industrial used cases solved by Kubernetes

Kubernetes by deploying simple application

The first case where you can make use of Kubernetes may seem controversial, but still is very useful. Let’s assume that we have a simple three-tier application with backend written in Python/PHP, a database and front-end created in React or Angular. To deploy it, you can use Kubernetes. Yes, from a purely practical point of view this would be not very reasonable: Kubernetes is complex and creating a Kubernetes cluster to run one simple app would mean doing unnecessary work. Further, you can deploy such an app using other, less expensive solutions. But there is an educational purpose that shouldn’t be overlooked. In undertaking such a deployment, you will learn how to run a Kubernetes cluster and deploy applications on it.

Micro services Architecture

Another important trend in software development: micro service architecture, which I’ll explain using the example of an Internet bookstore. In such a store, we have different functionalities: manage users, order books, manage order lists, etc. There can be many such functionalities and each of them is a separate app. This is a practical realisation which are aptly called micro services. All these apps must communicate with each other. To enable such communication and coordination, code must be written to conform with the programming language of each component.

Lift and shift — servers to cloud

Software is migrated from on-premises infrastructure to cloud solutions. Let’s imagine the following situation. We have an application deployed on physical servers in a classical data center. For practical or economic reasons, it has been decided to move it to the cloud: either to a Virtual Machine or to big pods in Kubernetes. Of course, moving it to big pods in K8s isn’t a cloud native approach, but it can be treated as an intermediary phase. First, such a big app working outside the cloud is moved to the same big app in Kubernetes. It is then split into smaller components to become a regular cloud native-app. Such methodology is called “lift and shift” and is a good use case where Kubernetes can be used effectively.

Cloud Native Network Function (CNF)

A few years ago, some companies had a problem. Their network services were based on hardware such as firewalls or load balancers provided by specialized hardware companies. This left them dependent on the hardware providers, and gave them little in the way of flexibility. If new functionality was needed, operators had to upgrade existing hardware. When a device firmware update was not possible, additional hardware had to be purchased. To address this disadvantage, the company opted to have all these network services as software and use Virtual Machines and OpenStack for network function virtualization (NFV).

This approach is called Cloud-native Network Functions (CNF). R&D projects are now afoot, focusing on moving from VM-based Virtual Network Functions to Container-based network functions. In such a scenario, Kubernetes would be responsible not only for orchestrating the containers, but also for directing network traffic to proper pods. However, this is still a research area. There are no established standards related to various network components allowing software providers to deliver different implementations of the same functions. The Cloud Native Computing Foundation (CNCF) and LF Networking (LFN) have joined forces to launch the Cloud Native Network Functions (CNF) Testbed in order to foster the evolution from VNFs into CNFs. We will be keeping abreast of the research in this area and foresee Kubernetes playing an important role here.

Machine Learning and Kubernetes

Many companies would like to simplify this process and make the life of data scientists or ML engineers easier by introducing a toolkit to speed up the whole process. In this way, the number of operations necessary to deploy such an app will be significantly reduced, shortening the app’s time-to-market. In this scenario, enterprises can harness the power of Kubernetes, as all the calculations necessary to train the ML model are performed inside the K8s cluster. The data scientist or ML engineer will only need to clean the data and write the code. The rest will be handled by a toolkit based on Kubernetes. Such toolkits are already available on the market: Kubeflow by Google and CodiLime spin-off Neptune both come to mind. The increasing demand for AI-powered solutions will surely further promote the adoption of Kubernetes.

Computing power for resource hungry-tasks

Kubernetes cluster would be a natural solution here to manage the distribution of the calculations across multiple computers. We would only need to write a program to perform the calculations. Kubernetes would handle the rest. Another computation-heavy case that could make use of the power of K8s is drug discovery.

CI/CD Software Development Lifecycle

Kubernetes also brings considerable benefits to Continuous Integration/Continuous Deployment or Continuous Delivery methodology. This is a logical continuation of the use cases presented in points 1 and 2. Once an app is deployed into operations, how it works must be monitored constantly. That’s in addition to gathering users’ feedback and developing new features. Whether it’s for testing, frequent releases or deploying newer versions of an app, Kubernetes makes everything simpler and more manageable.

--

--