More and more IT systems are being developed using containers. Containerisation involves placing application components (such as processes, dependencies, libraries, configuration files, or local databases) in one or more “sets” called containers. It combines the benefits of virtualisation with maintaining the system on a physical server, providing scalability, fast and lightweight software portability, and instance separation while maintaining high performance. While managing a few containers manually is feasible, it becomes very cumbersome when dealing with hundreds or thousands of distributed and dynamically managed containers. The solution is orchestration, which introduces automation, group management, and monitoring of containers. The most popular tool for orchestration is Kubernetes.
What is Kubernetes?
Kubernetes is an open-source platform used for managing containers at a large scale.
The name Kubernetes comes from the Greek language – “κυβερνήτης” means “helmsman,” which perfectly reflects the platform’s purpose. Kubernetes is also referred to as K8s, which is an abbreviation where the eight letters of “ubernete” are replaced with the number “8.”
The tool was created by Google nearly 20 years ago to handle the company’s production workloads. In 2014, the project was handed over to the Cloud Native Computing Foundation and made public. Since then, the platform has been continuously developed by the organisation, companies, and specialists who use Kubernetes (users can also participate in open-source projects).
Autonomous cluster management
Kubernetes supports deployment automation, application scaling, container management, and process and change monitoring. Application owners and development teams using the platform can focus more on the development of their product rather than DevOps tasks (managing infrastructure and adapting the product to its requirements).
Kubernetes allows the management of clusters (groups of cooperating servers) in a way that, from the user’s perspective, they appear – in simplified terms – as a single machine. K8s relieves the developer from the responsibility of adapting the application to infrastructure requirements – the specialist requests the application’s launch, and Kubernetes can autonomously distribute services among clusters, servers, and direct them to the appropriate containers. Kubernetes has its own form of load balancing, which involves distributing the workload among multiple machines.
Kubernetes is supported by most public cloud providers, including Google Cloud.
The Kubernetes platform allows for the management of all clusters, servers, and containers from a single location, regardless of where the machines or application components are located. It facilitates group planning, deployment, scaling, and lifecycle management of elements.
Scalability is at the core of K8s – the tool was created by Google to run billions of containers weekly. Regardless of the number of actions performed, machines used, or containers owned, there is no need to expand or reduce the DevOps team. Horizontal scaling and resource demand reduction are also possible through commands, user interfaces, or automatically based on CPU load.
Kubernetes works with infrastructure on physical servers, cloud solutions, as well as hybrid environments (a combination of on-premises and cloud). It is supported by various public cloud providers, including Google Cloud Platform, Amazon Web Services, and Microsoft Azure.
Consistency across environments
Once an application is deployed on the platform, it becomes portable. Applications can be moved between environments (e.g., development, testing, production) and across different infrastructure solutions while maintaining application consistency.
Fault prevention and self-repair
K8s introduces changes gradually while monitoring the state of each instance. If something goes wrong, Kubernetes automatically rolls back the changes. In the event of a container failure, the tool replaces it with another while working to restore functionality or removing unnecessary components.
Continuous platoform development
Kubernetes is an open-source project. Its development involves not only the owners but also those who use the platform daily: developers, DevOps specialists, software companies. They contribute by creating new features or proposing improvements to existing processes and tools.
Examples of Kubernetes in practice
The Kubernetes platform is widely utilised by companies with advanced services, managing large amounts of data, and focused on smooth and rapid growth.
Automating nuclear research
CERN (The European Organization for Nuclear Research) currently stores around 300 petabytes of data, and this number continues to increase (it is estimated that within a few years, CERN’s data will be 10 times greater). Additionally, the organization experiences seasonal spikes in workload and requires significant scalability capabilities. CERN utilizes hybrid infrastructure – data is stored and processed on local servers on a daily basis, but the solution can be scaled to the cloud when needed. By orchestrating containers with Kubernetes, the organization has fully automated application management, streamlined deployment processes, and accelerated technological development. For example, it reduced the cluster setup time from over 3 hours to 15 minutes and the addition of a new node (machine in the cluster) from over 30 minutes to 2 minutes.
Deploying telecom products
Nokia develops products and solutions related to telecommunications networks and provides solutions to multiple operators. Nokia’s partner companies have different infrastructure solutions: some use local data centers (physical servers), others utilise virtual machines or clouds, while some opt for hybrid solutions. Nokia aims to deliver a fully operational solution to partners without the need for product customization for each infrastructure. By leveraging Kubernetes, they can create products that can be deployed in any environment. K8s also supports adding new functionalities and conducting tests without segmenting the target environment, resulting in saving hundreds of hours with each deployment.
Avoiding DevOps bottlenecks
Adidas is enhancing its e-commerce platform using the capabilities provided by Kubernetes. Before adopting K8s, implementing changes was a laborious process, and deployments often got stuck at the DevOps stage. For example, developers had to wait between 30 minutes to even a week to gain access to a virtual machine. After containerizing the service and implementing Kubernetes, developers can focus on creating new functionalities instead of meticulously aligning the system with infrastructure requirements or waiting for DevOps support. Previously, new releases occurred every 4-6 weeks, but now they are conducted several times a day.
Other companies, such as Booking.com, BlaBlaCar, ING Group, and Zalando, also take advantage of Kubernetes’ capabilities.
If you want to explore the capabilities of Kubernetes and get familiar with Google Cloud Platform – a scalable cloud infrastructure with many technological offerings – please contact us.