What is Kubernetes
By: Sahid Khan
Tags: Containers, Kubernetes, Use Cases, Nokia

Kubernetes, is a container management system, was originally created at Google. In 2015, Google released Kubernetes as an open-source project. Shortly after that Kubernetes was donated to the Cloud Native Computing Foundation (CNCF). The CNCF, initialised by Google in cooperation with the Linux Foundation, aims to promote container technology.

Kubernetes(also known as k8s) 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.

In 2013 Docker began to gain popularity by allowing developers to quickly create, run and scale their applications by creating containers. Part of its success is due to being Open Source and the support of companies like IBM, Microsoft, RedHat or Google. In just two years, Docker had been able to turn a niche technology into a fundamental tool within everyone’s reach thanks to its greater ease of use. But if the number of applications grows in the system, it becomes complicated to manage.

Docker is not enough, since coordination is needed to make the deployment, service monitoring, replacement, automatic scaling and, ultimately, the administration of the various services that make up the distributed architecture.

Google is probably the first company that realized it needed a better way to implement and manage its software components to scale globally, and for years developed Borg (later called Omega) internally. In 2014, after almost a decade of intensive internal use, Kubernetes was publicly presented as an Open Source system based on learning using large-scale services. And today, Kubernetes is the de facto standard for implementing and deploying distributed applications.

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.

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.

Some of its features include:

The ability to automatically place containers according to your resource requirements, without affecting availability.

Service discovery and load balancing: no need to use an external mechanism for service discovery as Kubernetes assigns containers their own IP addresses and a unique DNS name for a set of containers and can balance the load on them.

Planning: it is in charge of deciding in which node each container will run according to the resources it requires and other restrictions. It mixes critical and best-effort workloads to enhance resource utilization and savings.

Enable storage orchestration: automatically set up the storage system as a public cloud provider. Or an on-premise networked storage system such as NFS, iSCSI, Gluster, Ceph, Cinder and others.

Batch execution: in addition to services, Kubernetes can manage batch and IC workloads, replacing failed containers.

Configuration and secret management: sensitive information such as passwords or ssh keys are stored in Kubernetes hidden in ‘secrets’. Both the application’s configuration and secrets are deployed and updated without having to rebuild the image or expose sensitive information.

Self-repair: restart failed containers, replace and re-program them when nodes die. Also remove unresponsive containers and do not publish them until they are ready.

Execution of automated deployments where changes to the application or its configuration are progressively implemented, while its status is monitored. This ensures that you do not delete all your instances at once. If something goes wrong, Kubernetes will reverse the change.

What does Kubernetes actually do?

In short, Kubernetes enables you to make the potential of container technology an operational reality by automating and simplifying your daily container workflow. Kubernetes automates deploying, scaling and managing containerised applications on a group (cluster) of (bare metal or virtual) servers. Kubernetes also lets you automatically handle networking, storage, logs, alerting, etc. for all your containers. To avoid going into ‘tech-mode’, we will try to explain Kubernetes’ strengths, main features and benefits in plain English, without going into too much detail. If you are interested in diving deeper into what Kubernetes is, the technology of Kubernetes, the Kubernetes architecture and components, we can refer you to the official Kubernetes documentation.

Transforming a company’s IT infrastructure with Kubernetes

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 labor 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.

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 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.

While all of these advantages sound quite attractive, not all companies are using Kubernetes, and this may be the result of an assessment of their

CASE STUDY:

Nokia: Enabling 5G and DevOps at a Telecom Company with Kubernetes

Challenge

Nokia’s core business is building telecom networks end-to-end; its main products are related to the infrastructure, such as antennas, switching equipment, and routing equipment. “As telecom vendors, we have to deliver our software to several telecom operators and put the software into their infrastructure, and each of the operators have a bit different infrastructure,” says Gergely Csatari, Senior Open Source Engineer. “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. We want to run the same product on all of these different infrastructures without changing the product itself.”

Solution

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 simplicity of the label-based scheduling of Kubernetes was a sign that showed us this architecture will scale, will be stable, and will be good for our purposes,” says Csatari. The first Kubernetes-based product, the Nokia Telephony Application Server, went live in early 2018. “Now, all the products are doing some kind of re-architecture work, and they’re moving to Kubernetes.”

Impact

Kubernetes has enabled Nokia’s foray into 5G. “When you develop something that is part of the operator’s infrastructure, you have to develop it for the future, and Kubernetes and containers are the forward-looking technologies,” says Csatari. The teams using Kubernetes are already seeing clear benefits. “By separating the infrastructure and the application layer, we have less dependencies in the system, which means that it’s easier to implement features in the application layer,” says Csatari. And because teams can test the exact same binary artifact independently of the target execution environment, “we find more errors in early phases of the testing, and we do not need to run the same tests on different target environments, like VMware, OpenStack, or bare metal,” he adds. As a result, “we save several hundred hours in every release.”

“When people are picking up their phones and making a call on Nokia networks, they are creating containers in the background with Kubernetes.” — GERGELY CSATARI, SENIOR OPEN SOURCE ENGINEER, NOKIA

Nokia was the first name in mobile phones when they were becoming ubiquitous in the late 1990s and early 2000s. But by 2014, the company had sold off its mobile device division and was focusing its core business not on the handhelds used for calls, but on the networks.

Today, Nokia is building telecom networks end-to-end — from antennas to switching and routing equipment — serving operators in more than 120 countries. “As telecom vendors, we have to deliver our software to several telecom operators and put the software into their infrastructure, and each of the operators have a bit different infrastructure,” says Gergely Csatari, Senior Open Source Engineer at Nokia. “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. We want to run the same product on all of these different infrastructures without changing the product itself.”

Looking for a way to allow its teams to build products with infrastructure-agnostic behavior, the company decided to embrace containerization, Kubernetes, and other cloud native technologies, a move that is being made across the telecom industry. Since early 2018, “when people are picking up their phones and making a call on Nokia networks, they are creating containers in the background with Kubernetes,” says Csatari. “Now, all the products are doing some kind of re-architecture work, and they’re moving to Kubernetes.”

“Having the community and CNCF around Kubernetes is not only important for having a connection to other companies who are using Kubernetes and a forum where you can ask or discuss features of Kubernetes. But as a company who would like to contribute to Kubernetes, it was very important to have a CLA (Contributors License Agreement) which is connected to the CNCF and not to a particular company. That was a critical step for us to start contributing to Kubernetes and Helm.” — GERGELY CSATARI, SENIOR OPEN SOURCE ENGINEER, NOKIA

Nokia’s cloud native journey began about two years ago, when Csatari’s team was building the company’s Telephony Application Server (TAS). “We wanted to have a service execution engine in the product, which was a totally separate function from all other parts,” he says. “There, we had the possibility to think about new architectures and new tools that we could use. We created this particular product based on Kubernetes, and we liked the work, so we started to talk about cloud native and containers and all of these things. We did a very extensive research of different container orchestration tools. We knew that we have some, let’s say, strange or different requirements because of the special environment that our software is running on.”

For one thing, Nokia’s software serves millions of people, and is required to have the carrier-grade “five nines” availability: to be up 99.999% of the time. “If you turn it to minutes, this means we’re allowed to have only 10 minutes of downtime in a whole year,” says Csatari. “Downtime here means that you are not able to serve the person to full capacity, which means that we cannot fail. This includes software upgrades, everything, because when you call 911, you’re using our software, and you expect that it will work.”

That meant that they needed to be able to set affinity and anti-affinity rules in their orchestration tools. “You cannot put all of the functions to the same physical host because physical hosts are failing,” Csatari explains. “If you fail with one physical host, then you lose all of the core processing processes. Then there are no calls going through. So we have to divide them among the different physical hosts. At that time, only Kubernetes was able to provide these features. The simplicity of the label-based scheduling of Kubernetes was a sign that showed us this architecture will scale, will be stable, and will be good for our purposes.”

“Kubernetes opened the window to all of these open source projects instead of implementing everything in house. Our engineers can focus more on the application level, which is actually the thing what we are selling, and not on the infrastructure level. For us, the most important thing about Kubernetes is it allows us to focus on value creation of our business.” — GERGELY CSATARI, SENIOR OPEN SOURCE ENGINEER, NOKIA

The TAS went live in early 2018, and now Kubernetes is also enabling Nokia’s foray into 5G. The company is introducing microservices architecture and Kubernetes while adding 5G features to existing products. And all new 5G product development will be on top of Kubernetes. “When you develop something that is part of the operator’s infrastructure, you have to develop it for the future, and Kubernetes and containers are the forward-looking technologies,” says Csatari.

There have been real time savings thanks to Kubernetes. “By separating the infrastructure and the application layer, we have less dependencies in the system, which means that it’s easier to implement features in the application layer,” says Csatari. Because teams can test the exact same binary artifact independently of the target execution environment, “we find more errors in early phases of the testing, and we do not need to run the same tests on different target environments, like VMware, OpenStack or bare metal,” he adds. As a result, “we save several hundred hours in every release.”

Moving from Nokia’s legacy cluster management system, which had been built in-house more than thirty years ago, to a Kubernetes platform also meant that “we started using Linux as a base operating system, so we just opened the window to all of these open source projects instead of implementing everything in house,” says Csatari. (From CNCF’s ecosystem, the team is already using Helm, gRPC, CNI, Prometheus, and Envoy, and plans to implement CoreDNS.) “Our engineers can focus more on the application level, which is actually the thing what we are selling, and not on the infrastructure level. For us, the most important thing about Kubernetes is it allows us to focus on value creation of our business.”

The company has a long-term goal of moving the entire product portfolio into the Kubernetes platform. To that end, Nokia teams are working together with other companies to add the features needed to use Kubernetes with the real-time, nanosecond-sensitive applications close to the edge of the radio network.

And the CNCF community is proving to be a great forum for that collaboration. “I had some discussions at KubeCon with people from the networking SIG and the resource management working group, to work together on our requirements, and that’s very exciting for me and my colleagues,” says Csatari. “Previously, everybody had the same problem, but everybody just did it in his own, and now we are trying to solve the same problem together.”

Perhaps the biggest impact that Kubernetes is having on Nokia, Csatari believes, is that people are starting to think about how a telecom company can do DevOps. “We are building a DevOps pipeline, which reaches from the actual developer to the customers, and thinking about new ways how can we digitally deliver our software to our customers and get feedback from the customers right to the engineers,” he says. “This is something that will fundamentally change how telecom companies are delivering software, and how quickly can we develop new features. This is because of the usage of containers and, of course, the usage of Kubernetes.”