What is Kubernetes
Shreeja Raj
SDE-2 @Walmart | Former SDE Intern'23 @Amazon | Red Hat Certified Engineer | Leetcode 500+ | GEU'23
In a nutshell, Kubernetes is a system for deploying applications and more efficiently utilizing the containerized infrastructure that powers the apps. Kubernetes can save organizations money because it takes less manpower to manage IT; it makes apps more resilient and performant.
You can also run Kubernetes on-premises or within public Cloud. AWS, Azure, and GCP offer managed Kubernetes solutions to help customers get started quickly and efficiently operate K8s apps. Kubernetes also makes apps a lot more portable, so IT can move them more easily between different clouds and internal environments.
In a nutshell, Kubernetes is the new Linux OS of the Cloud.
Characteristics of Kubernetes
Modern applications are increasingly based on the use of containers, which are packaged microservices 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.
Is Kubernetes getting adopted in enterprises?
In two words: Hell Yeah!
Several datapoints show rapid Kubernetes adoption. Sumo Logic’s fourth annual Continuous Intelligence Report on "The State of Modern Applications and DevSecOps in the Cloud” highlights some cool adoption data on Kubernetes within enterprises.
Kubernetes offers these capabilities to a business:
- Multi-cloud flexibility: As more enterprises run on multi-cloud platforms, they benefit from Kubernetes, as it easily runs any application on any public cloud service or a combination of public and private clouds.
- Faster time to market: Because Kubernetes can help the development team break down into smaller units to focus on single, targeted, smaller micro-services, these smaller teams tend to be more agile.
- IT cost optimization: Kubernetes can help a company reduce infrastructure costs quite dramatically if it is operating on a large scale.
- Improved scalability and availability: Kubernetes serves as a critical management system that can scale an application and its infrastructure whenever the workload increases, and reduce it as the load decreases.
- Effective migration to the cloud: Kubernetes can handle rehosting, re-platforming and refactoring. It offers a seamless route to effectively move an application from the facility to the cloud.
Benefits and disadvantages for companies
In summary, and having seen all the above information, Kubernetes has the following benefits for companies:
- 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:
- Kubernetes is very complex and can reduce productivity
- The transition to Kubernetes can be cumbersome
- Kubernetes can be more expensive than other alternatives
Kubernetes and Docker: better if they work together:
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.
you can use Kubernetes with Docker for:
- Improve infrastructure security and high application availability: Applications will remain connected, even if some of the nodes are disconnected.
- Make the application more scalable: If the application begins to receive much more load and needs to scale horizontally to provide a better user experience, it is easy to deploy more containers or add nodes to a Kubernetes cluster.
Let's look into the case study of tinder:
Why:
Due to high traffic volume, Tinder’s engineering team faced challenges of scale and stability. And they realized that the answer to their struggle is Kubernetes. Tinder’s engineering team migrated 200 services and ran a Kubernetes cluster of 1,000 nodes, 15,000 pods, and 48,000 running containers. While the migration process wasn't easy, the Kubernetes solution was critical to ensure smooth business operations going further.
How:
Starting January 2018, we worked our way through various stages of the migration effort. We started by containerizing all of our services and deploying them to a series of Kubernetes hosted staging environments. Beginning October, we began methodically moving all of our legacy services to Kubernetes. By March the following year, we finalized our migration and the Tinder Platform now runs exclusively on Kubernetes.
Building Images for Kubernetes:
There are more than 30 source code repositories for the microservices that are running in the Kubernetes cluster. The code in these repositories is written in different languages (e.g., Node.js, Java, Scala, Go) with multiple runtime environments for the same language.